OvhApi::Client
Client OVHcloud API v1.
Chaque requête signée porte quatre en-têtes :
X-Ovh-Application: la clé publique de l'application.X-Ovh-Consumer: le consumer key (jeton utilisateur).X-Ovh-Timestamp: timestamp Unix, resynchronisé avec le serveur.X-Ovh-Signature:"$1$" + SHA1_HEX(secret + "+" + consumer + "+" + method + "+" + url + "+" + body + "+" + timestamp).
La signature est calculée sur l'URL complète (avec query string si présente) et sur le corps JSON exact envoyé. Toute divergence, même d'un espace, invalide la signature.
Constructors
Instance methods
Effectue un appel API.
method:"GET","POST","PUT","DELETE".path: chemin relatif au endpoint (ex."/me/sshKey").query: table de paramètres encodée dans l'URL.body: objet JSON-sérialisable (ou nil).auth:truepour les endpoints nécessitant une signature (toutes les routes utilisateur).falsepour/auth/timeet quelques rares endpoints publics.
Retourne le corps parsé en JSON::Any (ou nil si corps vide).
Trois modes d'authentification possibles :
auth: true→ signature HMAC + consumer_key (défaut, pour toutes les routes utilisateur).app_only: true→ seulX-Ovh-Applicationest envoyé, pas de HMAC. Utilisé parPOST /auth/credentialqui sert justement à obtenir un consumer_key.auth: false→ aucun header d'auth (pour/auth/time).
app_only: true prime sur auth: true si les deux sont passés.
Horodatage serveur OVH.
OVH expose /1.0/auth/time en non-signé qui renvoie un entier Unix.
On l'utilise pour calculer un offset avec l'horloge locale plutôt
que de requérir à chaque appel : l'offset est stable pendant la
durée de vie du process.
Calcul de la signature OVH.
sig = "$1$" + sha1_hex(secret + "+" + consumer + "+" + method
+ "+" + url + "+" + body + "+" + timestamp)
Public pour permettre les tests unitaires avec des vecteurs
déterministes. En usage normal, c'est call qui l'invoque.
Offset entre l'horloge locale et celle d'OVH (secondes). Résolu à la première requête signée, réutilisé ensuite pour éviter des allers-retours inutiles. La fenêtre tolérée par OVH est de 30 secondes côté production.
Offset entre l'horloge locale et celle d'OVH (secondes). Résolu à la première requête signée, réutilisé ensuite pour éviter des allers-retours inutiles. La fenêtre tolérée par OVH est de 30 secondes côté production.
Injection du transport HTTP (par défaut DefaultHttpTransport).
En test, passer un double qui renvoie {status, body} prédéfini.
Injection du transport HTTP (par défaut DefaultHttpTransport).
En test, passer un double qui renvoie {status, body} prédéfini.