Skip to content
This repository was archived by the owner on Jan 7, 2021. It is now read-only.

Commit 9eb728b

Browse files
committed
try to encode the post data for #103 separate when we know it's not multipart
1 parent 37d0aa1 commit 9eb728b

2 files changed

Lines changed: 21 additions & 3 deletions

File tree

documentcloud/MultipartPostHandler.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,24 @@
6060
doseq = 1
6161

6262

63+
class PostHandler(urllib.request.BaseHandler):
64+
handler_order = urllib.request.HTTPHandler.handler_order - 10
65+
66+
def http_request(self, request):
67+
try:
68+
data = request.get_data()
69+
except AttributeError:
70+
data = request.data
71+
if data is not None and type(data) != str:
72+
data = urllib.parse.urlencode(data, doseq)
73+
try:
74+
request.add_data(data)
75+
except AttributeError:
76+
request.data = data
77+
return request
78+
https_request = http_request
79+
80+
6381
class MultipartPostHandler(urllib.request.BaseHandler):
6482
# needs to run first
6583
handler_order = urllib.request.HTTPHandler.handler_order - 10

documentcloud/__init__.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
from .toolbox import credentials_required
2525
from .toolbox import CredentialsFailedError
2626
from dateutil.parser import parse as dateparser
27-
from .MultipartPostHandler import MultipartPostHandler
27+
from .MultipartPostHandler import MultipartPostHandler, PostHandler
2828
if six.PY3:
2929
import urllib.parse
3030
import urllib.error
@@ -52,7 +52,7 @@ def __init__(self, username, password, base_uri=None):
5252
self.username = username
5353
self.password = password
5454

55-
@retry(Exception, tries=3)
55+
#@retry(Exception, tries=3)
5656
def _make_request(self, url, params=None, opener=None):
5757
"""
5858
Configure a HTTP request, fire it off and return the response.
@@ -281,7 +281,7 @@ def upload(
281281
elif self.is_url(pdf):
282282
size = 0
283283
params = {'file': pdf}
284-
opener = None # URL uploads are lightweight, don't need MultiPart
284+
opener = PostHandler # URL uploads don't need MultiPart
285285
else:
286286
size = os.path.getsize(pdf)
287287
params = {'file': open(pdf, 'rb')}

0 commit comments

Comments
 (0)