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