Blog de Florent Appointaire

Blog sur les technologies Microsoft (Windows Server, System Center, Azure, Windows Azure Pack/Azure Stack, etc;)

[PowerShell] Utiliser des APIs

Voulant utiliser une API GitHub avec Azure Automation, j’ai du me lancer dans la découverte de l’utilisation des APIs avec PowerShell.

Le première chose est de trouver la documentation pour l’API Github: https://developer.github.com/v3/ 

La deuxième a été de trouver la cmdlet PowerShell pour utiliser les APIs, Invoke-RestMethod: https://msdn.microsoft.com/en-us/powershell/reference/5.1/microsoft.powershell.utility/invoke-restmethod

Une fois que vous avez ceci, vous pouvez commencer à travailler 

Pour pouvoir vous authentifier via une API, nous devons passer un token dans le header. Pour Github, vous pouvez générer un token ici: https://github.com/settings/tokens

Assurez vous de bien copier le token car vous ne pourrez pas le récupérer par la suite.

Si vous allez sur l’URL suivante, https://api.github.com/, vous pourrez voir les actions que vous pouvez effectuer via l’API:

A savoir, vous avez plusieurs méthodes pour utiliser une API:

  • GET
  • POST
  • PUT
  • DELETE
  • Etc.

Nous allons voir comment utiliser quelques méthodes, en manipulant les répertoires ( https://developer.github.com/v3/repos/ ).

Les URLs commençeront toujours par https://api.github.com et à la suite, nous ajouterons les options, suivant ce que l’on souhaite faire, et sur quoi.

Commençons avec la méthode GET. Nous allons récupérer maintenant la liste de nos répertoires qui existent pour notre compte Github:

$token = "yourtoken"
$
tokenAuth = "token $token"                                                                                           
$headers = @{ Authorization = $tokenAuth }                                                                  
$basedURL = 'https://api.github.com'                                                                       
$uri = $basedURL + "/user/repos"                                                                                      
$req = Invoke-RestMethod -Uri $uri -Headers $headers
foreach ($r in $req){

            Write-Output $r.Name
            Write-Output $r.url

}

Passons maintenant à la méthode POST. Grace à cette méthode, nous allons pouvoir créer des repositories par exemple.

$token = "token"                                                                       
$tokenAuth = "token $token"                                                                                            
$headers = @{ Authorization = $tokenAuth }
$body = '{

  "name": "FlorentAppointairePowerShell",
  "description": "This is a test :)",
  "homepage": "https://microsofttouch.fr",
  "private": false,
  "has_issues": true,
  "has_projects": true,
  "has_wiki": true

}'                          

$basedURL = 'https://api.github.com'                                                                       
$uri = $basedURL + "/user/repos"
                                                                                     
Invoke-RestMethod -Uri $uri -Headers $headers -Method POST -Body $body

Et l'interface web:

Nous allons maintenant supprimer ce répertoire avec la méthode DELETE:

$token = "token"                                                                 
$tokenAuth = "token $token"                                                                                           
$headers = @{ Authorization = $tokenAuth }                                      
$basedURL = 'https://api.github.com'
$uri = $basedURL + "/repos/flodu31/FlorentAppointairePowerShell"                                                                                       
Invoke-RestMethod -Uri $uri -Headers $headers -Method DELETE

Depuis l'interface, le répertoire a disparu:

Cette nouvelle méthode que j'ai découvert est très intéressante pour la partie automatisation, parce que vous pouvez faire ce que vous voulez, si l'API le permet bien sur 

N'hésitez pas à me contacter si vous avez des questions  

Facebook Like
Anonymous