Créez un système de migration des rapports de bug de GitHub à votre GitLab – Partie 1/2

Apprenez à manier les API de GitHub et GitLab afin d’effectuer des opérations courantes sur vos dépôts.

Il est de nos jours très courant pour des services web de fournir à leurs utilisateurs une API REST permettant d’effectuer diverses opérations depuis la ligne de commandes (notamment avec curl), ou d’écrire des applications utilisables en dehors du navigateur. Python étant un langage très populaire, de nombreuses API bénéficient d’une bibliothèque Python permettant de les manipuler. Voyons deux d’entre elles, qui permettent d’interagir avec des services d’hébergement de dépôts Git au travers de leurs API.

1. Découverte de l’API GitHub

GitHub fournit une API dont la documentation est disponible sur le Web (voir https://developer.github.com/v3/). Elle utilise le format bien connu JSON.

1.1 Premiers pas

Nous pouvons commencer par lancer une requête GET sur la racine de l’API :

On peut ensuite continuer notre exploration en utilisant les URL qui nous ont été retournées :

Certaines requêtes nécessitent une authentification :

Il existe plusieurs façons de s’authentifier, que nous détaillerons dans la partie suivante. Avant cela, force est de constater qu’effectuer toutes les requêtes avec curl va vite devenir relativement fastidieux ; il convient donc d’utiliser une bibliothèque Python rendant l’utilisation de l’API plus facile. Il en existe de nombreuses : nous avons choisi d’utiliser ici PyGithub (https://pypi.python.org/pypi/PyGithub), en version 1.32.

1.2 Authentification

Intéressons-nous à deux méthodes d’authentification : par mot de passe, et à l’aide d’un jeton privé. Notons qu’il est également possible d’enregistrer une application et de s’authentifier grâce au protocole OAuth, mais nous ne détaillerons pas ici cette méthode.

1.2.1 Par pseudo/mot de passe

Comme nous venons de le voir, il est possible de s’identifier en donnant tout simplement son pseudonyme (ou son adresse de courriel) et son mot de passe :

1.2.2 Par jeton privé

Il est également possible d’utiliser un jeton privé, ce qui nous permet de gérer plus finement les permissions. Pour ce faire, il suffit de se rendre sur la page https://github.com/settings/tokens/new et d’y sélectionner les permissions requises (cf. Figure 1).

Fig. 1 : Liste des permissions disponibles lors de la création d’un jeton.


Créons un jeton en ne lui donnant pas la permission
gist, puis vérifions qu’il est effectivement impossible de créer un gist :

Créons maintenant un autre jeton, en lui donnant la permission de créer des gists. Nous pouvons le faire directement depuis notre console Python :

Tentons à nouveau de créer un gist :

Cette fois-ci, la commande a fonctionné : nous pouvons le vérifier en nous rendant sur https://gist.github.com/Steap/a9050b4027ee16111458a6b34f959a94.

1.3 Aller plus loin

Nous n’avons pas détaillé, dans la partie précédente, les paramètres des méthodes utilisées (create_authorization, create_gist). Leur fonctionnement est relativement intuitif, et nous n’avons de toute façon pas la place d’écrire ici la documentation complète de PyGithub. Nous pouvons toutefois donner deux conseils pour appréhender ce type de bibliothèques :

  • explorez les possibilités offertes par chaque objet Python dans l’interpréteur interactif : dir() et help() vous permettront de rapidement comprendre les subtilités de la bibliothèque utilisée ;
  • lisez la documentation de l’API, même si vous ne comptez pas l’utiliser directement : les bibliothèques sont en général très proches de cette API, et apportent principalement une plus grande facilité d’utilisation.

Nous verrons dans la troisième partie de cet article d’autres cas d’utilisation de l’API GitHub.

Cyril ROELANDT

La seconde partie de cet article sera publiée prochainement sur le blog, restez connectés 😉

Retrouvez cet article (et bien d’autres) dans GNU/Linux Magazine n°206, disponible sur la boutique et sur la plateforme de lecture en ligne Connect !

Laisser un commentaire