class

OvhApi::Client

Inherits Reference < Object

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

new(application_key : String, application_secret : String, consumer_key : String | Nil = nil, endpoint : Symbol | String = :eu, transport : HttpTransport = DefaultHttpTransport.new)
Source

Instance methods

application_key
Source
application_secret
Source
auth
Source
call(method : String, path : String, query : Hash(String, String) | Nil = nil, body = nil, auth : Bool = true, app_only : Bool = false) : JSON::Any | Nil

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 : true pour les endpoints nécessitant une signature (toutes les routes utilisateur). false pour /auth/time et 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 → seul X-Ovh-Application est envoyé, pas de HMAC. Utilisé par POST /auth/credential qui 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.

Source
consumer_key
Source
dedicated_servers
Source
domains
Source
endpoint
Source
raw_delete(path : String) : JSON::Any | Nil
Source
raw_get(path : String, query : Hash(String, String) | Nil = nil) : JSON::Any | Nil
Source
raw_post(path : String, body = nil) : JSON::Any | Nil
Source
raw_put(path : String, body = nil) : JSON::Any | Nil
Source
server_time

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.

Source
sign(method : String, url : String, body : String, timestamp : Int64 | String, consumer : String) : String

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.

Source
ssh_keys
Source
time_delta

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.

Source
time_delta=(time_delta : Int64 | Nil)

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.

Source
transport

Injection du transport HTTP (par défaut DefaultHttpTransport). En test, passer un double qui renvoie {status, body} prédéfini.

Source
transport=(transport : HttpTransport)

Injection du transport HTTP (par défaut DefaultHttpTransport). En test, passer un double qui renvoie {status, body} prédéfini.

Source