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

Commit e02e9b8

Browse files
authored
Merge pull request #449 from mkdadi/master
Proxy settings feature added
2 parents a0267ca + 0041df7 commit e02e9b8

1 file changed

Lines changed: 16 additions & 9 deletions

File tree

twitter/api.py

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,8 @@ def __init__(self,
155155
debugHTTP=False,
156156
timeout=None,
157157
sleep_on_rate_limit=False,
158-
tweet_mode='compat'):
158+
tweet_mode='compat',
159+
proxies=None):
159160
"""Instantiate a new twitter.Api object.
160161
161162
Args:
@@ -203,6 +204,9 @@ def __init__(self,
203204
tweet_mode (str, optional):
204205
Whether to use the new (as of Sept. 2016) extended tweet mode. See docs for
205206
details. Choices are ['compatibility', 'extended'].
207+
proxies (dict, optional):
208+
A dictionary of proxies for the request to pass through, if not specified
209+
allows requests lib to use environmental variables for proxy if any.
206210
"""
207211

208212
# check to see if the library is running on a Google App Engine instance
@@ -229,6 +233,7 @@ def __init__(self,
229233
self.rate_limit = RateLimit()
230234
self.sleep_on_rate_limit = sleep_on_rate_limit
231235
self.tweet_mode = tweet_mode
236+
self.proxies = proxies
232237

233238
if base_url is None:
234239
self.base_url = 'https://api.twitter.com/1.1'
@@ -4872,7 +4877,8 @@ def _RequestChunkedUpload(self, url, headers, data):
48724877
headers=headers,
48734878
data=data,
48744879
auth=self.__auth,
4875-
timeout=self._timeout
4880+
timeout=self._timeout,
4881+
proxies=self.proxies
48764882
)
48774883
except requests.RequestException as e:
48784884
raise TwitterError(str(e))
@@ -4909,20 +4915,20 @@ def _RequestUrl(self, url, verb, data=None, json=None):
49094915
if data:
49104916
if 'media_ids' in data:
49114917
url = self._BuildUrl(url, extra_params={'media_ids': data['media_ids']})
4912-
resp = requests.post(url, data=data, auth=self.__auth, timeout=self._timeout)
4918+
resp = requests.post(url, data=data, auth=self.__auth, timeout=self._timeout, proxies=self.proxies)
49134919
elif 'media' in data:
4914-
resp = requests.post(url, files=data, auth=self.__auth, timeout=self._timeout)
4920+
resp = requests.post(url, files=data, auth=self.__auth, timeout=self._timeout, proxies=self.proxies)
49154921
else:
4916-
resp = requests.post(url, data=data, auth=self.__auth, timeout=self._timeout)
4922+
resp = requests.post(url, data=data, auth=self.__auth, timeout=self._timeout, proxies=self.proxies)
49174923
elif json:
4918-
resp = requests.post(url, json=json, auth=self.__auth, timeout=self._timeout)
4924+
resp = requests.post(url, json=json, auth=self.__auth, timeout=self._timeout, proxies=self.proxies)
49194925
else:
49204926
resp = 0 # POST request, but without data or json
49214927

49224928
elif verb == 'GET':
49234929
data['tweet_mode'] = self.tweet_mode
49244930
url = self._BuildUrl(url, extra_params=data)
4925-
resp = requests.get(url, auth=self.__auth, timeout=self._timeout)
4931+
resp = requests.get(url, auth=self.__auth, timeout=self._timeout, proxies=self.proxies)
49264932

49274933
else:
49284934
resp = 0 # if not a POST or GET request
@@ -4954,14 +4960,15 @@ def _RequestStream(self, url, verb, data=None):
49544960
try:
49554961
return requests.post(url, data=data, stream=True,
49564962
auth=self.__auth,
4957-
timeout=self._timeout)
4963+
timeout=self._timeout,
4964+
proxies=self.proxies)
49584965
except requests.RequestException as e:
49594966
raise TwitterError(str(e))
49604967
if verb == 'GET':
49614968
url = self._BuildUrl(url, extra_params=data)
49624969
try:
49634970
return requests.get(url, stream=True, auth=self.__auth,
4964-
timeout=self._timeout)
4971+
timeout=self._timeout, proxies=self.proxies)
49654972
except requests.RequestException as e:
49664973
raise TwitterError(str(e))
49674974
return 0 # if not a POST or GET request

0 commit comments

Comments
 (0)