diff --git a/mifiel/base.py b/mifiel/base.py index d92d9c2..5b29967 100644 --- a/mifiel/base.py +++ b/mifiel/base.py @@ -1,5 +1,6 @@ from mifiel import Response import requests +from os.path import basename class Base(object): def __init__(self, client, path): @@ -22,12 +23,11 @@ def url(self, path=None): return self.client.url().format(path=p) - def process_request(self, method, url=None, data=None, file=None): + def process_request(self, method, url=None, data=None, files=None): if not url: url = self.url() - if method == 'post': - response = requests.post(url, auth=self.client.auth, json=data) + response = requests.post(url, auth=self.client.auth, data=data, files=files) elif method == 'put': response = requests.put(url, auth=self.client.auth, json=data) elif method == 'get': diff --git a/mifiel/document.py b/mifiel/document.py index e2d0d02..a1d47be 100644 --- a/mifiel/document.py +++ b/mifiel/document.py @@ -17,14 +17,22 @@ def create(client, signatories, file=None, dhash=None, callback_url=None): if file and dhash: raise ValueError('Only one of file or hash must be provided') - data = { 'signatories': signatories } + sig_numbers = {} + + for index, item in enumerate(signatories): + for key, val in item.iteritems(): + sig_numbers.update({'signatories['+str(index)+']['+str(key)+']':val}) + + data = sig_numbers + if callback_url: data['callback_url'] = callback_url if file: - data['file'] = open(file) + _file = open(file, 'rb') + file = {'file':(basename(_file.name), _file, 'application/pdf')} if dhash: data['original_hash'] = dhash doc = Document(client) - doc.process_request('post', data=data) + doc.process_request('post', data=data, files=file) return doc