From 1cf6592731a141e0d39d9f763db70139edf01149 Mon Sep 17 00:00:00 2001 From: Ivan Carrillo Date: Tue, 14 Jun 2016 13:51:15 -0500 Subject: [PATCH 1/4] Added file parameter for POST. Using data instead of json parameter for post request Opening file for byte(b) and read(r) Removing signatories dictionary key and using the modified version with the index and internal keys --- mifiel/base.py | 8 +++++--- mifiel/document.py | 17 ++++++++++++----- mifiel/response.py | 2 +- 3 files changed, 18 insertions(+), 9 deletions(-) diff --git a/mifiel/base.py b/mifiel/base.py index d92d9c2..16b1e77 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,13 @@ 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 files: + files = {'file':(basename(files.name), files, 'application/octet-stream')} 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..7d3fcae 100644 --- a/mifiel/document.py +++ b/mifiel/document.py @@ -11,20 +11,27 @@ def find(client, doc_id): return doc @staticmethod - def create(client, signatories, file=None, dhash=None, callback_url=None): + def create(client, signatories, files=None, dhash=None, callback_url=None): if not file and not dhash: raise ValueError('Either file or hash must be provided') 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) + if files: + _file = open(files, 'rb') 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 diff --git a/mifiel/response.py b/mifiel/response.py index f5cbed9..428aabe 100644 --- a/mifiel/response.py +++ b/mifiel/response.py @@ -4,7 +4,7 @@ def __init__(self): def set_response(self, response): response.raise_for_status() - object.__setattr__(self, 'datastore', response.json()) + object.__setattr__(self, 'datastore', response) def get_response(self): return self.datastore From d467a471983d7d7580ce563d0e2886d31faa71fd Mon Sep 17 00:00:00 2001 From: Ivan Carrillo Date: Tue, 14 Jun 2016 15:18:36 -0500 Subject: [PATCH 2/4] Updating parameter to file from files --- mifiel/document.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mifiel/document.py b/mifiel/document.py index 7d3fcae..0616fe7 100644 --- a/mifiel/document.py +++ b/mifiel/document.py @@ -11,7 +11,7 @@ def find(client, doc_id): return doc @staticmethod - def create(client, signatories, files=None, dhash=None, callback_url=None): + def create(client, signatories, file=None, dhash=None, callback_url=None): if not file and not dhash: raise ValueError('Either file or hash must be provided') if file and dhash: @@ -27,8 +27,8 @@ def create(client, signatories, files=None, dhash=None, callback_url=None): if callback_url: data['callback_url'] = callback_url - if files: - _file = open(files, 'rb') + if file: + _file = open(file, 'rb') if dhash: data['original_hash'] = dhash From 93caa4b0fc64e2be748ce73e95571e3e93557f1b Mon Sep 17 00:00:00 2001 From: Ivan Carrillo Date: Tue, 14 Jun 2016 17:39:54 -0500 Subject: [PATCH 3/4] Moving files definition outside base.py Building the files dict on document Adding .json() to the response --- mifiel/base.py | 2 -- mifiel/document.py | 3 ++- mifiel/response.py | 2 +- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/mifiel/base.py b/mifiel/base.py index 16b1e77..5b29967 100644 --- a/mifiel/base.py +++ b/mifiel/base.py @@ -26,8 +26,6 @@ def url(self, path=None): def process_request(self, method, url=None, data=None, files=None): if not url: url = self.url() - if files: - files = {'file':(basename(files.name), files, 'application/octet-stream')} if method == 'post': response = requests.post(url, auth=self.client.auth, data=data, files=files) elif method == 'put': diff --git a/mifiel/document.py b/mifiel/document.py index 0616fe7..d4cd9b1 100644 --- a/mifiel/document.py +++ b/mifiel/document.py @@ -29,9 +29,10 @@ def create(client, signatories, file=None, dhash=None, callback_url=None): data['callback_url'] = callback_url if file: _file = open(file, 'rb') + files = {'file':(basename(_file.name), _file, 'application/pdf')} if dhash: data['original_hash'] = dhash doc = Document(client) - doc.process_request('post', data=data, files=_file) + doc.process_request('post', data=data, files=files) return doc diff --git a/mifiel/response.py b/mifiel/response.py index 428aabe..f5cbed9 100644 --- a/mifiel/response.py +++ b/mifiel/response.py @@ -4,7 +4,7 @@ def __init__(self): def set_response(self, response): response.raise_for_status() - object.__setattr__(self, 'datastore', response) + object.__setattr__(self, 'datastore', response.json()) def get_response(self): return self.datastore From 7fa3abf81a47a17ae66b5992d049023cb0e1763d Mon Sep 17 00:00:00 2001 From: Ivan Carrillo Date: Tue, 14 Jun 2016 17:42:58 -0500 Subject: [PATCH 4/4] Fixing file var typo --- mifiel/document.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mifiel/document.py b/mifiel/document.py index d4cd9b1..a1d47be 100644 --- a/mifiel/document.py +++ b/mifiel/document.py @@ -29,10 +29,10 @@ def create(client, signatories, file=None, dhash=None, callback_url=None): data['callback_url'] = callback_url if file: _file = open(file, 'rb') - files = {'file':(basename(_file.name), _file, 'application/pdf')} + file = {'file':(basename(_file.name), _file, 'application/pdf')} if dhash: data['original_hash'] = dhash doc = Document(client) - doc.process_request('post', data=data, files=files) + doc.process_request('post', data=data, files=file) return doc