diff --git a/convertapi/__init__.py b/convertapi/__init__.py index a98c554..33958b2 100644 --- a/convertapi/__init__.py +++ b/convertapi/__init__.py @@ -16,5 +16,6 @@ upload_timeout = 1800 download_timeout = 1800 max_parallel_uploads = 10 +verify_ssl = True client = Client() diff --git a/convertapi/client.py b/convertapi/client.py index aac975e..77ce152 100644 --- a/convertapi/client.py +++ b/convertapi/client.py @@ -6,29 +6,30 @@ class Client: def get(self, path, params = {}, timeout = None): + url = self.__url(path) timeout = timeout or convertapi.timeout - r = requests.get(self.url(path), params = params, headers = self.headers(), timeout = timeout) - return self.handle_response(r) + r = self.__session().get(url, params = params, timeout = timeout) + return self.__handle_response(r) def post(self, path, payload, timeout = None): + url = self.__url(path) timeout = timeout or convertapi.timeout - r = requests.post(self.url(path), data = payload, headers = self.headers(), timeout = timeout) - return self.handle_response(r) + r = self.__session().post(url, data = payload, timeout = timeout) + return self.__handle_response(r) def upload(self, io, filename): url = convertapi.base_uri + 'upload' encoded_filename = requests.utils.quote(filename) - headers = self.headers() - headers.update({ + headers = { 'Content-Disposition': "attachment; filename*=UTF-8''" + encoded_filename, - }) + } - r = requests.post(url, data = io, headers = headers, timeout = convertapi.upload_timeout) - return self.handle_response(r) + r = self.__session().post(url, data = io, headers = headers, timeout = convertapi.upload_timeout) + return self.__handle_response(r) def download(self, url, path): - r = requests.get(url, stream = True, timeout = convertapi.download_timeout) + r = self.__session().get(url, stream = True, timeout = convertapi.download_timeout) with open(path, 'wb') as f: for chunk in r.iter_content(chunk_size = 1024): @@ -38,10 +39,10 @@ def download(self, url, path): return path def download_io(self, url): - response = requests.get(url, timeout = convertapi.download_timeout) + response = self.__session().get(url, timeout = convertapi.download_timeout) return BytesIO(response.content) - def handle_response(self, r): + def __handle_response(self, r): try: r.raise_for_status() except requests.RequestException as e: @@ -52,10 +53,12 @@ def handle_response(self, r): return r.json() - def url(self, path): + def __url(self, path): return "%s%s?Secret=%s" % (convertapi.base_uri, path, convertapi.api_secret) - def headers(self): - return { - 'User-Agent': convertapi.user_agent, - } + def __session(self): + s = requests.Session() + s.headers.update({ 'User-Agent': convertapi.user_agent }) + s.verify = convertapi.verify_ssl + + return s