Exemple d'utilisation de l'api REST dans un script Python.

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)