Skip to content

Exemples de Code - Toutes les Librairies

Cette page montre des exemples de code équivalents à travers toutes les librairies Sharokey. Choisissez votre langage ou outil préféré et voyez comment accomplir les mêmes tâches.

Utilisation de Base

Secret Simple

bash
sharokey create "Mot de passe base de données : admin123" --hours 24 --views 1
python
from sharokey import SharokeyClient
client = SharokeyClient(token='votre-token')

secret = await client.create("Mot de passe base de données : admin123", 24, 1)
print(f"URL de partage : {secret.share_url}")
javascript
import Sharokey from 'sharokey-js';
Sharokey.config({token: 'votre-token'});

const secret = await Sharokey.create('Mot de passe base de données : admin123', 24, 1);
console.log(`URL de partage : ${secret.share_url}`);
javascript
// Disponible globalement après inclusion du script
Sharokey.config({token: 'votre-token'});

const secret = await Sharokey.create('Mot de passe base de données : admin123', 24, 1);
console.log(`URL de partage : ${secret.share_url}`);

Avec Description et Message

bash
sharokey create "Identifiants API" \
  --description "Accès API de production" \
  --message "Valable jusqu'à la fin du projet" \
  --hours 48 --views 3
python
secret = await client.create(
    "Identifiants API",
    48,  # heures
    3,   # vues
    description="Accès API de production",
    message="Valable jusqu'à la fin du projet"
)
javascript
const secret = await Sharokey.create('Identifiants API', 48, 3, {
  description: 'Accès API de production',
  message: 'Valable jusqu\'à la fin du projet'
});
javascript
const secret = await Sharokey.create('Identifiants API', 48, 3, {
  description: 'Accès API de production',
  message: 'Valable jusqu\'à la fin du projet'
});

Protection CAPTCHA

bash
sharokey create "Accès serveur" --captcha --hours 12 --views 1
python
secret = await client.create(
    "Accès serveur",
    12,  # heures
    1,   # vues
    captcha=True
)
javascript
const secret = await Sharokey.create('Accès serveur', 12, 1, {
  captcha: true
});
javascript
const secret = await Sharokey.create('Accès serveur', 12, 1, {
  captcha: true
});

Protection par Mot de Passe

bash
sharokey create "Données sensibles" --password "monMotDePasseSecret123" --hours 6 --views 2
python
secret = await client.create(
    "Données sensibles",
    6,   # heures
    2,   # vues
    password="monMotDePasseSecret123"
)
javascript
const secret = await Sharokey.create('Données sensibles', 6, 2, {
  password: 'monMotDePasseSecret123'
});
javascript
const secret = await Sharokey.create('Données sensibles', 6, 2, {
  password: 'monMotDePasseSecret123'
});

Protection OTP Email (Priorité Plus Élevée que le Mot de Passe)

bash
sharokey create "Détails bancaires" \
  --password "sauvegarde" \
  --otp-email "[email protected]" \
  --hours 24 --views 1
python
secret = await client.create(
    "Détails bancaires",
    24,  # heures
    1,   # vues
    password="sauvegarde",
    otp_email="[email protected]"
)
javascript
const secret = await Sharokey.create('Détails bancaires', 24, 1, {
  password: 'sauvegarde',
  otpEmail: '[email protected]'
});
javascript
const secret = await Sharokey.create('Détails bancaires', 24, 1, {
  password: 'sauvegarde',
  otpEmail: '[email protected]'
});

Protection OTP SMS (Priorité La Plus Élevée - Remplacera Tous Les Autres)

bash
sharokey create "Accès critique" \
  --password "sauvegarde" --captcha \
  --otp-email "[email protected]" \
  --otp-phone "+33674747474" \
  --hours 2 --views 1
python
secret = await client.create(
    "Accès critique",
    2,   # heures
    1,   # vues
    password="sauvegarde",
    captcha=True,
    otp_email="[email protected]",  # Sera ignoré
    otp_phone="+33674747474"  # Priorité la plus élevée
)
javascript
const secret = await Sharokey.create('Accès critique', 2, 1, {
  password: 'sauvegarde',
  captcha: true,
  otpEmail: '[email protected]',  // Sera ignoré
  otpPhone: '+33674747474'  // Priorité la plus élevée
});
javascript
const secret = await Sharokey.create('Accès critique', 2, 1, {
  password: 'sauvegarde',
  captcha: true,
  otpEmail: '[email protected]',  // Sera ignoré
  otpPhone: '+33674747474'  // Priorité la plus élevée
});

Restriction IP (IPs Publiques Uniquement)

bash
sharokey create "Accès externe" \
  --ip-whitelist "203.0.113.5,198.51.100.10" \
  --hours 48 --views 10
python
secret = await client.create(
    "Accès externe",
    48,  # heures
    10,  # vues
    ip_whitelist="203.0.113.5,198.51.100.10"
)
javascript
const secret = await Sharokey.create('Accès externe', 48, 10, {
  ipWhitelist: '203.0.113.5,198.51.100.10'
});
javascript
const secret = await Sharokey.create('Accès externe', 48, 10, {
  ipWhitelist: '203.0.113.5,198.51.100.10'
});

Restriction Géolocalisation

bash
sharokey create "Données UE uniquement" \
  --geolocation "FR,DE,BE,IT,ES" \
  --hours 72 --views 5
python
secret = await client.create(
    "Données UE uniquement",
    72,  # heures
    5,   # vues
    geolocation="FR,DE,BE,IT,ES"
)
javascript
const secret = await Sharokey.create('Données UE uniquement', 72, 5, {
  geolocation: 'FR,DE,BE,IT,ES'
});
javascript
const secret = await Sharokey.create('Données UE uniquement', 72, 5, {
  geolocation: 'FR,DE,BE,IT,ES'
});

Restrictions Combinées

bash
sharokey create "Accès restreint" \
  --password "secure123" \
  --ip-whitelist "203.0.113.100" \
  --geolocation "FR,US" \
  --hours 24 --views 2
python
secret = await client.create(
    "Accès restreint",
    24,  # heures
    2,   # vues
    password="secure123",
    ip_whitelist="203.0.113.100",
    geolocation="FR,US"
)
javascript
const secret = await Sharokey.create('Accès restreint', 24, 2, {
  password: 'secure123',
  ipWhitelist: '203.0.113.100',
  geolocation: 'FR,US'
});
javascript
const secret = await Sharokey.create('Accès restreint', 24, 2, {
  password: 'secure123',
  ipWhitelist: '203.0.113.100',
  geolocation: 'FR,US'
});

Avec Pièces Jointes

bash
sharokey create "Fichiers contrat" \
  --attach contrat.pdf --attach conditions.pdf \
  --description "Documents client XYZ" \
  --hours 48 --views 5
python
secret = await client.create(
    "Fichiers contrat",
    48,  # heures
    5,   # vues
    description="Documents client XYZ",
    attachments=["contrat.pdf", "conditions.pdf"]
)
javascript
const secret = await Sharokey.create('Fichiers contrat', 48, 5, {
  description: 'Documents client XYZ',
  attachments: [contractFile, termsFile]  // Objets File
});
javascript
const secret = await Sharokey.create('Fichiers contrat', 48, 5, {
  description: 'Documents client XYZ',
  attachments: [contractFile, termsFile]  // Objets File
});

Pièces Jointes Multiples avec Sécurité

bash
sharokey create "Rapports confidentiels" \
  --attach rapport.pdf --attach donnees.xlsx --attach resume.docx \
  --password "rapports2024" \
  --ip-whitelist "203.0.113.50,198.51.100.25" \
  --hours 168 --views 3
python
secret = await client.create(
    "Rapports confidentiels",
    168,  # heures
    3,    # vues
    password="rapports2024",
    ip_whitelist="203.0.113.50,198.51.100.25",
    attachments=["rapport.pdf", "donnees.xlsx", "resume.docx"]
)
javascript
const secret = await Sharokey.create('Rapports confidentiels', 168, 3, {
  password: 'rapports2024',
  ipWhitelist: '203.0.113.50,198.51.100.25',
  attachments: [reportFile, dataFile, summaryFile]
});
javascript
const secret = await Sharokey.create('Rapports confidentiels', 168, 3, {
  password: 'rapports2024',
  ipWhitelist: '203.0.113.50,198.51.100.25',
  attachments: [reportFile, dataFile, summaryFile]
});

Lire depuis stdin

bash
echo "Secret depuis ligne de commande" | sharokey create --hours 2 --views 1

cat identifiants.txt | sharokey create --description "Identifiants serveur" --password "acces123" --hours 48 --views 1
python
# Lire depuis fichier manuellement
with open('identifiants.txt', 'r') as f:
    content = f.read().strip()
secret = await client.create(content, 48, 1, 
    description="Identifiants serveur", 
    password="acces123"
)
javascript
// Lire depuis fichier en Node.js
import fs from 'fs';
const content = fs.readFileSync('identifiants.txt', 'utf8').trim();
const secret = await Sharokey.create(content, 48, 1, {
  description: 'Identifiants serveur',
  password: 'acces123'
});
javascript
// Saisie manuelle dans le navigateur
const content = document.getElementById('secretInput').value;
const secret = await Sharokey.create(content, 48, 1, {
  description: 'Identifiants serveur',
  password: 'acces123'
});

Requêtes de Secrets

Créer une Requête avec Livraison par Email

bash
sharokey create-request \
  --message "Veuillez partager les identifiants VPN" \
  --email-to [email protected] \
  --email-reply [email protected] \
  --request-hours 48 --secret-hours 24 \
  --max-views 3 --locale fr
python
request = await client.create_request(
    message="Veuillez partager les identifiants VPN",
    email_to="[email protected]",
    email_reply="[email protected]",
    request_expiration_hours=48,
    secret_expiration_hours=24,
    maximum_views=3
)
javascript
const request = await Sharokey.createRequest({
  message: 'Veuillez partager les identifiants VPN',
  emailTo: '[email protected]',
  emailReply: '[email protected]',
  requestExpirationHours: 48,
  secretExpirationHours: 24,
  maximumViews: 3,
  locale: 'fr'
});
javascript
const request = await Sharokey.createRequest({
  message: 'Veuillez partager les identifiants VPN',
  emailTo: '[email protected]',
  emailReply: '[email protected]',
  requestExpirationHours: 48,
  secretExpirationHours: 24,
  maximumViews: 3,
  locale: 'fr'
});

Créer une Requête avec Sortie Tableau

bash
sharokey create-request --message "Partager identifiants" --email-to [email protected] --request-hours 24 --secret-hours 12 --max-views 1 --locale fr --table
python
# Le SDK Python retourne des objets structurés, pas des tableaux
request = await client.create_request(
    message="Partager identifiants",
    email_to="[email protected]",
    request_expiration_hours=24,
    secret_expiration_hours=12,
    maximum_views=1
)
print(f"Token : {request.token}")
javascript
// Le SDK JavaScript retourne des objets structurés, pas des tableaux
const request = await Sharokey.createRequest({
  message: 'Partager identifiants',
  emailTo: '[email protected]',
  requestExpirationHours: 24,
  secretExpirationHours: 12,
  maximumViews: 1,
  locale: 'fr'
});
console.log(`Token : ${request.token}`);
javascript
// Le CDN JavaScript retourne des objets structurés, pas des tableaux
const request = await Sharokey.createRequest({
  message: 'Partager identifiants',
  emailTo: '[email protected]',
  requestExpirationHours: 24,
  secretExpirationHours: 12,
  maximumViews: 1,
  locale: 'fr'
});
console.log(`Token : ${request.token}`);

Obtenir les Détails d'une Requête

bash
# Sortie JSON (par défaut - réponse API directe)
sharokey get-request abc123token456

# Format tableau
sharokey get-request abc123token456 --table
python
request_detail = await client.get_request('abc123token456')
print(f"Statut : {request_detail.status}")
print(f"Message : {request_detail.message}")
javascript
const requestDetail = await Sharokey.getRequest('abc123token456');
console.log(`Statut : ${requestDetail.status}`);
console.log(`Message : ${requestDetail.message}`);
javascript
const requestDetail = await Sharokey.getRequest('abc123token456');
console.log(`Statut : ${requestDetail.status}`);
console.log(`Message : ${requestDetail.message}`);

Lister les Requêtes avec Filtres

bash
# Sortie JSON (par défaut - réponse API directe, plus récentes en premier)
sharokey list-requests --status active --limit 20

# Format tableau (plus récentes en premier)
sharokey list-requests --status active --limit 20 --table
python
requests = await client.list_requests(
    status='active',
    limit=20
)
print(f"Trouvé {len(requests.data)} requêtes")
javascript
const requests = await Sharokey.listRequests({
  status: 'active',
  limit: 20
});
console.log(`Trouvé ${requests.data.length} requêtes`);
javascript
const requests = await Sharokey.listRequests({
  status: 'active',
  limit: 20
});
console.log(`Trouvé ${requests.data.length} requêtes`);

Expirer une Requête (Annuler)

bash
sharokey delete-request abc123token456
python
success = await client.delete_request('abc123token456')
if success:
    print("Requête annulée avec succès")
javascript
const success = await Sharokey.deleteRequest('abc123token456');
if (success) {
    console.log('Requête annulée avec succès');
}
javascript
const success = await Sharokey.deleteRequest('abc123token456');
if (success) {
    console.log('Requête annulée avec succès');
}

Statistiques des Requêtes

bash
sharokey request-stats
python
request_stats = await client.request_stats()
print(f"Total des requêtes : {request_stats['total_requests']}")
print(f"Requêtes actives : {request_stats['active_requests']}")
javascript
const requestStats = await Sharokey.requestStats();
console.log(`Total des requêtes : ${requestStats.data.total_requests}`);
console.log(`Requêtes actives : ${requestStats.data.active_requests}`);
javascript
const requestStats = await Sharokey.requestStats();
console.log(`Total des requêtes : ${requestStats.data.total_requests}`);
console.log(`Requêtes actives : ${requestStats.data.active_requests}`);

Gestion

Lister Tous les Secrets

bash
sharokey list
python
secrets = await client.list()
for secret in secrets.data:
    print(f"{secret.slug}: {secret.description}")
javascript
const secrets = await Sharokey.list();
secrets.data.forEach(secret => {
  console.log(`${secret.slug}: ${secret.description}`);
});
javascript
const secrets = await Sharokey.list();
secrets.data.forEach(secret => {
  console.log(`${secret.slug}: ${secret.description}`);
});

Lister avec Filtres

bash
sharokey list --status active --creator [email protected] --limit 20
sharokey list --status expired --limit 10
python
# Secrets actifs par créateur spécifique
active_secrets = await client.list(
    status='active',
    creator='[email protected]',
    limit=20
)

# Secrets expirés
expired_secrets = await client.list(status='expired', limit=10)
javascript
// Secrets actifs par créateur spécifique
const activeSecrets = await Sharokey.list({
  status: 'active',
  creator: '[email protected]',
  limit: 20
});

// Secrets expirés
const expiredSecrets = await Sharokey.list({status: 'expired', limit: 10});
javascript
// Secrets actifs par créateur spécifique
const activeSecrets = await Sharokey.list({
  status: 'active',
  creator: '[email protected]',
  limit: 20
});

// Secrets expirés
const expiredSecrets = await Sharokey.list({status: 'expired', limit: 10});

Sortie JSON vs Tableau

bash
# Sortie JSON (par défaut)
sharokey list --limit 5
# Sortie : {"success": true, "count": 2, "secrets": [{"slug": "ABC123", "maximum_views": 1, ...}]}

# Sortie tableau (lisible par l'humain)
sharokey list --table --limit 5
# Sortie :
# slug     description                    creator    maximum_views current_views expiration
# -----------------------------------------------------------------------------------------
# ABC123   Mon secret test                API        1             0             2025-08-08...
python
# Le SDK Python retourne seulement des objets structurés
secrets = await client.list(limit=5)
print(f"Trouvé {len(secrets.data)} secrets")
for secret in secrets.data:
    print(f"{secret.slug}: {secret.description} (Vues: {secret.current_views}/{secret.maximum_views})")
javascript
// Le SDK JavaScript retourne seulement des objets structurés
const secrets = await Sharokey.list({limit: 5});
console.log(`Trouvé ${secrets.data.length} secrets`);
secrets.data.forEach(secret => {
  console.log(`${secret.slug}: ${secret.description} (Vues: ${secret.current_views}/${secret.maximum_views})`);
});
javascript
// Le CDN JavaScript retourne seulement des objets structurés
const secrets = await Sharokey.list({limit: 5});
console.log(`Trouvé ${secrets.data.length} secrets`);
secrets.data.forEach(secret => {
  console.log(`${secret.slug}: ${secret.description} (Vues: ${secret.current_views}/${secret.maximum_views})`);
});

Lister les Secrets avec Limite

bash
sharokey list --limit 3
python
secrets = await client.list(limit=3)
print(f"Récupéré {len(secrets.data)} secrets")
javascript
const secrets = await Sharokey.list({limit: 3});
console.log(`Récupéré ${secrets.data.length} secrets`);
javascript
const secrets = await Sharokey.list({limit: 3});
console.log(`Récupéré ${secrets.data.length} secrets`);

Obtenir les Détails d'un Secret

bash
sharokey get ABC123
python
secret = await client.get('ABC123')
print(f"Vues : {secret.current_views}/{secret.maximum_views}")
print(f"Statut : {secret.status}")
javascript
const secret = await Sharokey.get('ABC123');
console.log(`Vues : ${secret.current_views}/${secret.maximum_views}`);
console.log(`Statut : ${secret.status}`);
javascript
const secret = await Sharokey.get('ABC123');
console.log(`Vues : ${secret.current_views}/${secret.maximum_views}`);
console.log(`Statut : ${secret.status}`);

Expirer un Secret (Effacer le Contenu)

bash
sharokey delete ABC123
python
success = await client.delete('ABC123')
if success:
    print("Secret expiré avec succès")
javascript
const success = await Sharokey.delete('ABC123');
if (success) {
    console.log('Secret expiré avec succès');
}
javascript
const success = await Sharokey.delete('ABC123');
if (success) {
    console.log('Secret expiré avec succès');
}

Statistiques

bash
sharokey stats
python
stats = await client.stats()
print(f"Total des secrets : {stats.total_secrets}")
print(f"Secrets actifs : {stats.active_secrets}")
javascript
const stats = await Sharokey.stats();
console.log(`Total des secrets : ${stats.data.total_secrets}`);
console.log(`Secrets actifs : ${stats.data.active_secrets}`);
javascript
const stats = await Sharokey.stats();
console.log(`Total des secrets : ${stats.data.total_secrets}`);
console.log(`Secrets actifs : ${stats.data.active_secrets}`);

Configuration

Configurer les Paramètres

bash
sharokey config --token votre_token_api_ici
sharokey config --timeout 60
sharokey config --logs-enabled
sharokey config --log-level Debug
python
# La configuration se fait lors de l'initialisation du client
client = SharokeyClient(
    token='votre_token_api_ici',
    timeout=60
)
javascript
// Configurer le client
import Sharokey from 'sharokey-js';
Sharokey.config({
  token: 'votre_token_api_ici',
  timeout: 60000  // millisecondes
});
javascript
// Configurer le client (disponible globalement)
Sharokey.config({
  token: 'votre_token_api_ici',
  timeout: 60000  // millisecondes
});

Afficher la Configuration Actuelle

bash
sharokey config --show
python
config = client.get_config()
print(f"URL API : {config['api_url']}")
print(f"A un token : {config['has_token']}")
print(f"Timeout : {config['timeout']}s")
javascript
const config = Sharokey.getConfig();
console.log(`URL API : ${config.apiUrl}`);
console.log(`A un token : ${config.hasToken}`);
console.log(`Timeout : ${config.timeout}ms`);
javascript
const config = Sharokey.getConfig();
console.log(`URL API : ${config.apiUrl}`);
console.log(`A un token : ${config.hasToken}`);
console.log(`Timeout : ${config.timeout}ms`);

Test & Diagnostics

Tester la Connectivité

bash
# Test de connectivité complet (6 tests)
sharokey test

# Test rapide (config + réseau uniquement)
sharokey test --quick

# Sortie détaillée avec détails
sharokey test --verbose
python
# Test complet
results = await client.test()
print(f"Tests réussis : {results['passed']}/{results['total']}")

# Test de connectivité simple
connected = await client.test_connection()
print(f"Connecté : {connected}")
javascript
// Test complet
const results = await Sharokey.test();
console.log(`Tests réussis : ${results.passed}/${results.total}`);

// Test de connectivité simple
const connected = await Sharokey.testConnection();
console.log(`Connecté : ${connected}`);
javascript
// Test complet
const results = await Sharokey.test();
console.log(`Tests réussis : ${results.passed}/${results.total}`);

// Test de connectivité simple
const connected = await Sharokey.testConnection();
console.log(`Connecté : ${connected}`);

Dépannage

Vérifier la Configuration

bash
sharokey config --show
python
config = client.get_config()
print(f"Configuration : {config}")
javascript
const config = Sharokey.getConfig();
console.log('Configuration :', config);
javascript
const config = Sharokey.getConfig();
console.log('Configuration :', config);

Tester la Connectivité

bash
sharokey test
python
results = await client.test()
if results['passed'] < results['total']:
    print("Certains tests ont échoué :", results['failed'])
javascript
const results = await Sharokey.test();
if (results.passed < results.total) {
    console.log('Certains tests ont échoué :', results.failed);
}
javascript
const results = await Sharokey.test();
if (results.passed < results.total) {
    console.log('Certains tests ont échoué :', results.failed);
}

Activer la Journalisation de Débogage

bash
sharokey config --log-level Debug --logs-enabled
python
# Activer le mode debug
client = SharokeyClient(token='votre-token', debug=True)
javascript
// Activer le mode debug
Sharokey.config({
  token: 'votre-token',
  debug: true
});
javascript
// Activer le mode debug
Sharokey.config({
  token: 'votre-token',
  debug: true
});

Toutes les librairies fournissent une sécurité Zero Knowledge identique avec chiffrement AES-GCM-256 et dérivation de clé PBKDF2. Choisissez en fonction de votre environnement de développement et de vos préférences !

Documentation Spécifique aux Librairies

Released under the MIT License.