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.
# -*- 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)