Skip to content

Commit ad16755

Browse files
author
Alex Schworer
committed
Add support for setting timeouts, SSL certs verification and HTTPS proxies
1 parent d177224 commit ad16755

File tree

2 files changed

+62
-12
lines changed

2 files changed

+62
-12
lines changed

test/test_zencoder.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,27 @@ def test_set_api_edge_version(self):
3434
zc = Zencoder(api_version='edge')
3535
self.assertEquals(zc.base_url, 'https://app.zencoder.com/api/')
3636

37+
def test_set_timeout(self):
38+
api_key = 'testapikey'
39+
zc = Zencoder(api_key=api_key, timeout=999)
40+
41+
self.assertEquals(zc.job.requests_params['timeout'], 999)
42+
43+
def test_set_proxies(self):
44+
api_key = 'testapikey'
45+
proxies = {
46+
'https': 'https://10.10.1.10:1080'
47+
}
48+
zc = Zencoder(api_key=api_key, proxies=proxies)
49+
50+
self.assertEquals(zc.job.requests_params['proxies'], proxies)
51+
52+
def test_set_verify_false(self):
53+
api_key = 'testapikey'
54+
zc = Zencoder(api_key=api_key, verify=False)
55+
56+
self.assertEquals(zc.job.requests_params['verify'], False)
57+
3758
if __name__ == "__main__":
3859
unittest.main()
3960

zencoder/core.py

Lines changed: 41 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,7 @@ def __init__(self,
3939
test=False,
4040
version=None,
4141
proxies=None,
42-
cert=None,
43-
http_timeout=None):
42+
verify=True):
4443

4544
self.base_url = base_url
4645

@@ -49,10 +48,13 @@ def __init__(self,
4948

5049
self.http = requests.Session()
5150

52-
# set requests additional settings. `None` is default for all of these settings
53-
self.http.timeout = http_timeout
54-
self.http.proxies = proxies
55-
self.http.cert = cert
51+
# set requests additional settings.
52+
# `None` is default for all of these settings.
53+
self.requests_params = {
54+
'timeout': timeout,
55+
'proxies': proxies,
56+
'verify': verify
57+
}
5658

5759
self.api_key = api_key
5860
self.test = test
@@ -80,26 +82,38 @@ def delete(self, url, params=None):
8082
8183
``params`` should be a dictionary
8284
"""
83-
response = self.http.delete(url, params=params)
85+
response = self.http.delete(url,
86+
params=params,
87+
**self.requests_params)
8488
return self.process(response)
8589

8690
def get(self, url, data=None):
8791
""" Executes an HTTP GET request for the given URL.
8892
8993
``data`` should be a dictionary of url parameters
9094
"""
91-
response = self.http.get(url, headers=self.headers, params=data)
95+
response = self.http.get(url,
96+
headers=self.headers,
97+
params=data,
98+
**self.requests_params)
9299
return self.process(response)
93100

94101
def post(self, url, body=None):
95102
""" Executes an HTTP POST request for the given URL. """
96-
response = self.http.post(url, data=body, headers=self.headers)
103+
response = self.http.post(url,
104+
headers=self.headers,
105+
data=body,
106+
**self.requests_params)
97107

98108
return self.process(response)
99109

100110
def put(self, url, data=None, body=None):
101111
""" Executes an HTTP PUT request for the given URL. """
102-
response = self.http.put(url, params=data, data=body, headers=self.headers)
112+
response = self.http.put(url,
113+
headers=self.headers,
114+
data=body,
115+
params=data,
116+
**self.requests_params)
103117

104118
return self.process(response)
105119

@@ -135,8 +149,17 @@ class Zencoder(object):
135149
136150
Set ``api_version='edge'`` to get the Zencoder development API.
137151
(defaults to 'v2')
152+
153+
``timeout``, ``proxies`` and ``verify`` can be set to control the
154+
underlying HTTP requests that are made.
138155
"""
139-
def __init__(self, api_key=None, api_version=None, timeout=None, test=False):
156+
def __init__(self,
157+
api_key=None,
158+
api_version=None,
159+
timeout=None,
160+
test=False,
161+
proxies=None,
162+
verify=True):
140163
if not api_version:
141164
api_version = 'v2'
142165

@@ -155,7 +178,13 @@ def __init__(self, api_key=None, api_version=None, timeout=None, test=False):
155178
self.test = test
156179

157180
args = (self.base_url, self.api_key)
158-
kwargs = dict(timeout=timeout, test=self.test, version=api_version)
181+
182+
kwargs = dict(timeout=timeout,
183+
test=self.test,
184+
version=api_version,
185+
proxies=proxies,
186+
verify=verify)
187+
159188
self.job = Job(*args, **kwargs)
160189
self.account = Account(*args, **kwargs)
161190
self.output = Output(*args, **kwargs)

0 commit comments

Comments
 (0)