@@ -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