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
- Documentation CLI C# - Référence complète de ligne de commande
- Documentation SDK Python - Librairie Python async/await
- Documentation SDK JavaScript - Package NPM avec TypeScript
- Documentation CDN JavaScript - Librairie prête pour le navigateur