Forum Keyyo
Exemple d'usage de l'API en Python3 - Version imprimable

+- Forum Keyyo (https://forum.keyyo.com)
+-- Forum : Editeurs & Développeurs (/forumdisplay.php?fid=20)
+--- Forum : API (/forumdisplay.php?fid=22)
+--- Sujet : Exemple d'usage de l'API en Python3 (/showthread.php?tid=1609)



Exemple d'usage de l'API en Python3 - partenaire@way2sv.com - 30/08/2017 07:48

Bonjour,
pourriez-cous communiquer un exemple d'utilisation de l'API en Python3 avec les deux phases : utilisation d'oauth puis requête API comme la récupération de l'hisique des appels ?
merci


RE: Exemple d'usage de l'API en Python3 - Keyyo QA - 01/09/2017 14:23

Bonjour,


Concernant l'authentification oauth, le mode implicite n'étant pas encore actif, il est d'obtenir l'access_token via un refresh_token (généré préalablement avec la librairie PHP) :

Code :
import requests
import json

def get_accessToken():
        token_url="https://api.keyyo.com/oauth2/token.php"
        token_data = {
                "client_id" : "Your client ID",
                "client_secret" : "Your client Secret",
                "grant_type" : "refresh_token",
                "redirect_uri" : "Your redirect URI",
                "refresh_token" : "Your refresh token"
        }

        response = requests.post(token_url, data=token_data)
        if response.ok:
                return response.json()["access_token"]


Une fois le token obtenu, vous pouvez vous servir de requests :

Code :
import requests
import json

baseUrl = "https://api.keyyo.com/manager/1.0"

def keyyoGet(endpoint):
        if accessToken=="":
                print "Error, please get an access token first!"
                return ""

        headers = {"Authorization" : "Bearer " + accessToken}
        r = requests.get(baseUrl + endpoint, headers=headers)
        if r.ok:
                return r.json()
        else:
                return ""

services = keyyoGet("/services")
for service in services["_embedded"]["UCaaSVoIPAccount"]:
       print service["csi"]


Ou bien utiliser une librairie REST, par exemple Siesta

Code :
from siesta import API, auth

token = auth.APIKeyAuth("Bearer " + accessToken, "Authorization")
api = API("https://api.keyyo.com/manager/1.0", auth=token)
ret, resp = api.services.get()
print ret.attrs

Siesta est installable via PIP, cependant il faut modifier légèrement la librairie pour qu'elle supporte hal (cela a été remonté dans les issues sur la page GitHub).