Cette page vous donne les différences entre la révision choisie et la version actuelle de la page.
| — |
hub_principal:exemple_api_python [2018/04/23 11:22] (version actuelle) |
||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| + | ====== Exemple d'utilisation de l'api REST dans un script Python. ====== | ||
| + | |||
| + | <note warning>Attention se script n'est qu'un exemple non exhaustif d'utilisation de l'API REST en python, il n'est en aucun cas à utiliser tel quel en Production.</note> | ||
| + | |||
| + | |||
| + | |||
| + | <code python> | ||
| + | # -*- coding: utf-8 -*- | ||
| + | # This program is free software: you can redistribute it and/or modify | ||
| + | # it under the terms of the GNU Lesser General Public License (LGPL) as | ||
| + | # published by the Free Software Foundation, either version 2 of the License, | ||
| + | # or (at your option) any later version. | ||
| + | # | ||
| + | # This program is distributed in the hope that it will be useful, | ||
| + | # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| + | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| + | # GNU Lesser General Public License for more details. | ||
| + | # | ||
| + | # See <http://www.gnu.org/licenses/lgpl.html/>. | ||
| + | # (c) Accelya 2010 | ||
| + | |||
| + | import pprint,urllib,httplib, simplejson,base64 | ||
| + | |||
| + | #Convert a dict to http query args | ||
| + | def prepare_request(request,prefix=''): | ||
| + | request_dict={} | ||
| + | if (type(request) == dict): | ||
| + | for key,value in request.items(): | ||
| + | if (prefix == '') : | ||
| + | request_dict.update(prepare_request(value,key)) | ||
| + | else : | ||
| + | request_dict.update(prepare_request(value,"%s.%s" % (prefix,key))) | ||
| + | elif (type(request) == list ): | ||
| + | for j in range(0,len(request)): | ||
| + | request_dict.update(prepare_request(request[j],"%s[%i]" % (prefix,j))) | ||
| + | else : | ||
| + | request_dict[prefix] = request | ||
| + | |||
| + | if(prefix == '') : | ||
| + | return urllib.urlencode(request_dict) | ||
| + | else : | ||
| + | return request_dict | ||
| + | |||
| + | #Call a REST method | ||
| + | #Here you have to define your gln and password | ||
| + | def call_service(method,request): | ||
| + | glnReseller='1111111111111' | ||
| + | passwordReseller='password' | ||
| + | conn = httplib.HTTPSConnection("hub-dilicom.centprod.com") | ||
| + | url = "/v1/hub-numerique-api/json/"+method+"?"+prepare_request(request) | ||
| + | print "URL : %s" % (url) | ||
| + | base64string = base64.encodestring('%s:%s' % (glnReseller,passwordReseller))[:-1] | ||
| + | conn.request("GET", url,headers={"Authorization":"Basic %s" % base64string}) | ||
| + | resp = conn.getresponse() | ||
| + | if(resp.status != 200): | ||
| + | print "ERROR request return %i : %s" % (resp.status,resp.reason) | ||
| + | data = resp.read() | ||
| + | return simplejson.loads(data) | ||
| + | |||
| + | |||
| + | |||
| + | #SendOrder Example | ||
| + | order_req = { | ||
| + | 'orderId':'3PC200148', | ||
| + | 'glnGroup':'6235482301523', | ||
| + | 'customerId':'test', | ||
| + | 'finalBookOwner' : { | ||
| + | 'identifier':'test', | ||
| + | 'civility':'M', | ||
| + | 'firstName':'John', | ||
| + | 'lastName':'Doe', | ||
| + | 'email':'john@doe.com', | ||
| + | 'country':'France', | ||
| + | 'city':'Paris', | ||
| + | 'postalCode':'75001' | ||
| + | }, | ||
| + | 'orderRequestLines': [{ | ||
| + | 'ean13':'9782814500136', | ||
| + | 'glnDistributor':'3015594118311', | ||
| + | 'unitPrice':'1', | ||
| + | 'quantity':'1', | ||
| + | 'lineReference':'01' | ||
| + | },{ | ||
| + | 'ean13':'9990000000001', | ||
| + | 'glnDistributor':'3012410002007', | ||
| + | ':unitPrice':'1', | ||
| + | 'quantity':'1', | ||
| + | 'lineReference':'02' | ||
| + | }] | ||
| + | } | ||
| + | |||
| + | print "\nSendorder" | ||
| + | pprint.pprint(call_service("sendOrder",order_req), depth=3) | ||
| + | |||
| + | |||
| + | |||
| + | #Exemple de recuperation des notices depuis une date fournie | ||
| + | since_req = { | ||
| + | 'sinceDate':'2010-08-20T00:00:00' | ||
| + | } | ||
| + | |||
| + | print "\nGetNotices (since)" | ||
| + | pprint.pprint(call_service("getNotices",since_req), depth=3) | ||
| + | |||
| + | |||
| + | |||
| + | #Exemple de recuperation des notices depuis la derniere connection | ||
| + | last_req = { | ||
| + | 'lastConnection':'' | ||
| + | } | ||
| + | print "\nGetNotices (lastConnection)" | ||
| + | pprint.pprint(call_service("getNotices",last_req), depth=3) | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | #Exemple de recuperation de toutes les notices | ||
| + | full_req = { | ||
| + | 'initialization':'' | ||
| + | } | ||
| + | print "\nGetNotices (initialization)" | ||
| + | pprint.pprint(call_service("getNotices",full_req), depth=3) | ||
| + | |||
| + | |||
| + | |||
| + | #Exemple de verification de disponibilité | ||
| + | check_req = { | ||
| + | 'checkAvailabilityLines' : [{ | ||
| + | 'ean13':'9782814500136', | ||
| + | 'glnDistributor':'3015594118311', | ||
| + | 'unitPrice':'1' | ||
| + | },{ | ||
| + | 'ean13':'9782814500136', | ||
| + | 'glnDistributor':'3015594125312', | ||
| + | 'unitPrice':'1' | ||
| + | }] | ||
| + | } | ||
| + | print "\nCheckAvailability (initialization)" | ||
| + | pprint.pprint(call_service("checkAvailability",check_req), depth=3) | ||
| + | |||
| + | |||
| + | </code> | ||