def call(self, relative_path, params={}, header_auth=False, post=False):
     path = "%s%s" % (self.apiroot, relative_path)
     resp = None
     if self.cache:
         keys = [path, json.dumps(params)]
         if self.token and self.secret:
             keys.extend([self.token, self.secret])
         resp = self.cache.fetch(keys)
     if resp:
         return resp.text
     if self.token and self.secret:
         oauth_hook = TwitterOAuthHandler.hook(access_token=self.token, access_token_secret=self.secret, header_auth=header_auth)
         client = requests.session(hooks={'pre_request': oauth_hook})
     else:
         client = requests
     if post:
         resp = client.post(path, data=params)
     else:
         resp = client.get(path, params=params)
     try:
         resp.raise_for_status()
     except requests.HTTPError:
         logger.exception(resp.text)
         raise
     # make cachable (picklable and read-repeatable) vesion of response
     if self.cache:
         cacheresp = CacheResponse()
         cacheresp.headers = resp.headers
         cacheresp.encoding = resp.encoding
         cacheresp.status_code = resp.status_code
         cacheresp.text = resp.text
         self.cache.store(keys, cacheresp)
     return resp.text
 def get_access_token(cls, request_token, request_secret, oauth_verifier):
     oauth_hook = cls.hook(access_token=request_token, access_token_secret=request_secret, header_auth=True)
     client = requests.session(hooks={'pre_request': oauth_hook})
     response = client.post(ACCESS_TOKEN_URL, {'oauth_verifier': oauth_verifier})
     response.raise_for_status()
     response = dict(parse_qsl(response.content))
     user_token, user_secret, user_id, screen_name = (response['oauth_token'], response['oauth_token_secret'], response['user_id'], response['screen_name'])
     return (user_token, user_secret, user_id, screen_name)
 def get_request_token(cls, callback_url):
     oauth_hook = cls.hook(header_auth=True)
     client = requests.session(hooks={'pre_request': oauth_hook})
     response = client.post(REQUEST_TOKEN_URL, {'oauth_callback': callback_url})
     response.raise_for_status()
     response = dict(parse_qsl(response.content))
     token, secret = (response['oauth_token'], response['oauth_token_secret'])
     redirect_url = "%s?oauth_token=%s" % (AUTHORIZE_URL, token)
     return (token, secret, redirect_url)