Ce titre peut paraitre surprenant pour les personnes qui sont habituées à lire les articles de mon blog : en général, je fais tout pour éviter de parler de technique à mes clients : laissons la technique aux techniciens. Mais dans mon travail au quotidien, je suis amené à faire de la technique, et depuis bientôt un mois je me bats avec une évolution technologique qui m’est imposée par mon hébergeur, l’API OVH : cela signifie que je dois changer le mode de dialogue entre les logiciels que je mets à votre disposition, et l’hébergement de vos sites Internet. C’est un peu comme si je parlais Français avec vous, et que je vous dise « dans 3 mois, nous parlerons slovaque » : vous allez devoir apprendre le slovaque ;-)
ATTENTION : Mise à jour du 3 août 2017
Comme à son habitude, OVH change les paramètres de configuration de ses hébergements sans vraiment prévenir ses clients, et sans vraiment évaluer toutes les conséquences que cela peut avoir. En l'occurence, depuis quelques jours les appels à l'API OVH que je vous ai proposée ne marchent plus, vous avez droit à une erreur "ERROR (#0000) : Compute time drift fail !"
Comment résoudre ce problème: c'est très simple, vous devez juste modifier la configuration de votre hébergement pour la faire passer de LEGACY à STABLE. Comment faire ? C'est ici : https://docs.ovh.com/fr/fr/web/hosting/modifier-lenvironnement-dexecution-de-mon-hebergement-web/
Une fois cette modification faite, tout remarche comme avant...
Et si vous utilisez mon API pour la première fois, commencez bien évidemment par faire ce petit réglage...
Introduction
OVH est un très bon hébergeur, mais il n’y a pas que des côtés positifs dans sa manière de travailler. Il y a 6 mois, il nous a déjà imposé un changement de version de PHP, le langage de base utilisé par mes logiciels. J’ai donc dû reprendre tous les sites Internet que j’ai réalisés et m’assurer qu’ils continuaient de fonctionner malgré ce changement de version, et corriger ceux qui ne marchaient plus. Plus de deux mois de travail pour moi, autant de manque à gagner sur le point de vue financier car pendant que je programme, je ne fais pas de sites web.
Là encore, ce changement de langage pour l'API m’oblige à reprogrammer une partie du logiciel. Cela pourrait se faire simplement si on avait suffisamment d’explications de la part d’OVH, des exemples concrets, mais ce ne fut malheureusement pas le cas ici. Il a fallu apprendre par soi-même, avec une documentation obscure, des logiciels imposés, et très peu d’exemples concrets. Et sur le coup, c’est encore un mois de perdu pour ma société, et une perte de chiffre d’affaire non négligeable…
Et je ne vous parlerai pas de la fermeture prématurée du manager V3 à la fin 2015, alors que le nouveau manager était bugée jusqu’à la moelle et totalement incomplet : OVH a dû le remettre en œuvre rapidement devant le mécontentement de ses clients.
Bref la prise en compte des problématiques des clients n’est pas le fort d’OVH, c'est un peu comme son support technique qui met 1 semaine pour répondre à une question, souvent à côté de la plaque, et cela malgré la qualité de ses hébergements.
Tout cela pour vous dire que je continue à veiller à la bonne marche de vos sites Internet en assurant une maintenance continue et à suivre les évolutions technologiques, celles que je choisis ou celles qu’on m’impose. C’est pour cela que certains sites qui ont plus de 10 ans d’âge continuent de fonctionner. Et c’est également à ça que servent les abonnements que vous payez : la maintenance de vos sites en état de marche.
Parlons technique maintenant : la fameuse API V6 OVH
La suite de cet article s’adresse à ceux qui veulent comprendre comment utiliser cette nouvelle interface de programmation (pour les non techniciens, on aborde le langage chinois...) : comme il n’y a que très peu d’exemples de programmation, et que l’interface de programmation est complexe, j’ai préparé quelques tutos pour les techniciens qui sont à la recherche d’informations. Je l'avais promis à certains lecteurs, c'est donc chose faite.
Je vous explique ici comment aller au plus vite pour utiliser la nouvelle API de programmation OVH, sans rentrer dans les détails. Pour ceux qui veulent tout comprendre et aller plus loin, vous trouverez les informations ici :
Pour utiliser la nouvelle API V6 d’OVH, vous avez la possibilité d’utiliser deux wrappers différents :
- Le wrapper PHP officiel d’OVH
- Une API codée avec cURL que je vous propose, beaucoup plus simple.
C’est donc cette deuxième solution qui a ma préférence, mais je vais d’abord vous expliquer pourquoi.
Le wrapper PHP d’OVH : la version officielle, mais complexe pour l'API V6
OVH a réalisé un wrapper PHP, qui est sensé simplifier l’utilisation de l’API : https://github.com/ovh/php-ovh. Une fois installé, il est en effet simple d’emploi (quand on a compris le principe de fonctionnement de l’API). La problématique est de l’installer, de faire les premiers cas d’usage et de comprendre comment traiter les erreurs
Malgré tout, bien qu’ayant réussi à la mettre en œuvre, je trouve qu’il y a plusieurs problèmes liés à ce wrapper :
- Il impose plusieurs frameworks & outils que vous devez apprendre à maîtriser, entre autres Composer et Guzzle. Donc beaucoup de temps perdu pour comprendre comment ça marche, et surtout le mettre en œuvre avec l’API. Et en ce qui me concerne, j’aime choisir mes frameworks, et surtout pas qu’on me les impose, je n’ai pas de temps à perdre pour apprendre de nouveaux outils que je n’ai pas choisis puisque j'ai une société à gérer et plein d'activités passionnantes autres que la programmation informatique ;-)
- Dans ce cas particulier de ce wrapper, c’est à mon avis sortir l’artillerie lourde pour rien : au total, vous allez avoir plus de 400 fichiers d’installés pour faire de simples appels GET, POST, PUT ou DELETE. A titre de comparaison, l’API que je vous propose est composée d’un seul fichier d’une centaine de lignes, et ça fait la même chose…
- Si vous utilisez le wrapper PHP officiel avec un environnement de développement local type easyPhp, il ne marche pas (problème liés aux certificats SSL – il faut modifier un fichier). J’ai pallié ce problème dans l’API cURL.
- De temps en temps, et sans raison apparente, des « fatal error » apparaissent, liés à l’utilisation de Guzzle. C'est marrant car ces erreurs sont aléatoires, va comprendre Charles ! Il faut donc ajouter les bonnes séquences try / catch pour pallier à ces erreurs (j’ai abandonné avant), voire modifier la configuration Guzzle. Vous n’aurez pas ce problème avec l’API cURL que je vous propose.
Le Wrapper cURL pour l'API OVH V6
Plus simple à installer et à utiliser, je vous recommande le Wrapper cURL. A l’origine il avait été fait par https://github.com/ovh/php-ovh. Je l’ai récupéré, et je l’ai légèrement modifié pour corriger quelques bugs liés à l’utilisation du GET (gestion des paramètres), simplifier l’usage et faire en sorte qu’il marche aussi avec easyPhp (problèmes SSL).
Je vous mets à disposition 3 fichiers dans un ZIP, qui seront utilisés dans la suite de ce tutotiel. CLIQUEZ ICI pour les télécharger. Installez ces fichiers sur votre hébergement, ou en local avec easyPhp.
Initialisation de l’API cURL
Donc pour faire simple et vite, vous avez besoin de 3 clefs : AK, AS, et CK.
Les deux premières AK et AS s’obtiennent ici : https://eu.api.ovh.com/createApp/
Saisissez votre identifiant OVH, votre mot de passe, donnez un nom à votre application, et une description. Cliquez sur « Create Keys »
Là vous obtenez vos deux premières clefs.
(Bien évidemment, les clefs de cet exemple sont fictives, inutile d’essayer de les utiliser)
Ouvrez ensuite le fichier OvhApi.php que je vous ai fourni dans le ZIP. Vous allez devoir mettre les clefs dans ces define en haut de fichier (il faut les mettre à jour) :
- define("MY_AK", "XXX"); // Clef application
- define("MY_AS", "YYY"); // Secret key
- define("MY_CK", "ZZZ"); // Consumer key : à récupérer avec get-key3.php
Copiez / collez les deux premières clefs dans les « define » correspondant, en haut de fichier
- Remplacez XXX par votre clef AK
- Remplacez YYY par votre clef AS
- Sauvez votre fichier
Ensuite, appelez le fichier get-key3.php pour récupérer la 3ème clef, qui s’affichera à l’écran. Vous avez deux actions à faire :
- Copiez cette clef dans le fichier OvhApi.php, dans le define MY_CK : Remplacez ZZZ par votre clef CK
- Cliquez sur le lien d’activation de la clef : vous devez choisir la durée de validité, puis cliquez sur « Authorize Access »
Tester l’API avec le Wrapper cURL
Je vous ai mis un fichier « test.php » dans lequel j’ai codé quelques actions pour que vous ayez des exemples de codes. Vous pouvez obtenir des informations sur un nom de domaine, gérer des mails de redirection, ou gérer des mailing list. Si vous avez besoin de plus d’actions, posez directement vos questions sur le forum OVH (je ne connais pas l’API par cœur, et ne pourrai pas faire tous les tests pour vous ;-)
Pour utiliser test.php, vous devez d’abord initialiser les variables qui se trouvent en haut de fichier avec vos propres noms de domaines, de mailing liste, de mails, etc. J’ai mis des variables « bidon » pour l’exemple, donc ça ne marchera pas de base.
CLIQUEZ ICI POUR TELECHARGER LES FICHIERS