6.0 KiB
6.0 KiB
SDK Storage
Service de stockage distribué pour l'écosystème 4NK, fournissant une API REST pour le stockage sécurisé de données avec support TTL (Time To Live).
🚀 État actuel
Fonctionnalités
- ✅ API REST : Endpoints pour stockage et récupération
- ✅ Support TTL : Expiration automatique des données
- ✅ Stockage permanent : Mode sans expiration
- ✅ Docker : Support complet pour le déploiement
📋 Table des Matières
- 🏗️ Architecture
- 🚀 Démarrage rapide
- 📦 Installation
- 🔧 Configuration
- 📚 API Reference
- 🧪 Tests
- 🐳 Docker
- 🛠️ Développement
- 🤝 Contribution
🏗️ Architecture
Composants
- API REST : Endpoints HTTP pour le stockage
- Stockage en mémoire : Cache haute performance
- Gestion TTL : Expiration automatique des données
- Sérialisation : Support pour données hexadécimales
Technologies
- Rust : Performance et sécurité
- Actix Web : Framework web asynchrone
- Docker : Conteneurisation
🚀 Démarrage rapide
Prérequis
- Rust 1.70+
- Cargo
Installation locale
# Cloner le projet
git clone https://git.4nkweb.com/4nk/sdk_storage.git
cd sdk_storage
# Compiler
cargo build --release
# Lancer en mode permanent
cargo run -- --permanent
# Lancer avec TTL par défaut
cargo run
📦 Installation
Installation depuis les sources
git clone https://git.4nkweb.com/4nk/sdk_storage.git
cd sdk_storage
cargo build --release
Installation Docker
# Construire l'image
docker build -t sdk_storage .
# Lancer le conteneur
docker run -p 8081:8081 sdk_storage
🔧 Configuration
Variables d'environnement
# Port du serveur
PORT=8081
# Mode de stockage
STORAGE_MODE=permanent # ou ttl
# TTL par défaut (secondes)
DEFAULT_TTL=3600
Options de ligne de commande
# Mode permanent (pas d'expiration)
cargo run -- --permanent
# TTL personnalisé (secondes)
cargo run -- --ttl 7200
# Port personnalisé
cargo run -- --port 9090
📚 API Reference
Endpoints
POST /store
Stocke une valeur avec une clé.
Corps de la requête :
{
"key": "a1b2c3d4e5f6...", // Clé hexadécimale (64 caractères)
"value": "deadbeef...", // Valeur hexadécimale
"ttl": 3600 // TTL en secondes (optionnel)
}
Réponse :
{
"success": true,
"message": "Value stored successfully"
}
GET /retrieve/:key
Récupère une valeur par sa clé.
Paramètres :
key
: Clé hexadécimale (64 caractères)
Réponse :
{
"success": true,
"value": "deadbeef...",
"ttl": 3600
}
Exemples d'utilisation
Stockage avec curl
# Stocker une valeur
curl -X POST http://localhost:8081/store \
-H "Content-Type: application/json" \
-d '{
"key": "a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6",
"value": "deadbeefcafebabe",
"ttl": 3600
}'
# Récupérer une valeur
curl http://localhost:8081/retrieve/a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6
Utilisation avec JavaScript
// Stocker une valeur
const response = await fetch('http://localhost:8081/store', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
key: 'a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6',
value: 'deadbeefcafebabe',
ttl: 3600
})
});
// Récupérer une valeur
const value = await fetch('http://localhost:8081/retrieve/a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6');
🧪 Tests
Tests unitaires
# Tous les tests
cargo test
# Tests spécifiques
cargo test storage
cargo test api
Tests d'intégration
# Tests avec le serveur
cargo test --test integration_tests
Tests de performance
# Benchmarks
cargo bench
🐳 Docker
Construction de l'image
docker build -t sdk_storage .
Lancement du conteneur
# Mode par défaut
docker run -p 8081:8081 sdk_storage
# Mode permanent
docker run -p 8081:8081 sdk_storage --permanent
# Avec variables d'environnement
docker run -p 8081:8081 \
-e PORT=9090 \
-e STORAGE_MODE=permanent \
sdk_storage
Docker Compose
version: '3.8'
services:
sdk_storage:
build: .
ports:
- "8081:8081"
environment:
- PORT=8081
- STORAGE_MODE=permanent
🛠️ Développement
Structure du projet
src/
├── main.rs # Point d'entrée
├── api/ # Handlers API
├── storage/ # Logique de stockage
├── config/ # Configuration
└── utils/ # Utilitaires
Workflow de développement
- Développer dans
src/
- Tester avec
cargo test
- Compiler avec
cargo build
- Tester l'API avec curl ou un client HTTP
Scripts utiles
# Compilation
cargo build
# Tests
cargo test
# Documentation
cargo doc --open
# Nettoyage
cargo clean
🤝 Contribution
Prérequis
- Rust 1.70+
- Connaissance d'Actix Web
- Tests pour toutes les nouvelles fonctionnalités
Processus
- Fork du projet
- Créer une branche feature
- Développer avec tests
- Pull request vers
docker-support
Standards de code
- Documentation RustDoc
- Tests unitaires et d'intégration
- Respect des conventions Rust
- Validation des entrées API
📊 Statut du projet
- Version : 0.2.2
- Branche stable :
docker-support
- Tests : ✅ 100% de couverture
- Documentation : ✅ Complète
- Docker : ✅ Support complet
📄 Licence
MIT License - voir LICENSE pour plus de détails.
📚 Documentation
Voir la documentation détaillée dans docs/
.
🆘 Support
- Issues : GitLab Issues
- Documentation : docs/
- API : Voir section API Reference ci-dessus