def get_auth_url(self, endpoint_url, method, **kwargs): if self.query_string_auth: endpoint_params = UrlUtils.get_query_dict_singular(endpoint_url) endpoint_params.update({ "consumer_key": self.consumer_key, "consumer_secret": self.consumer_secret }) endpoint_url = UrlUtils.substitute_query( endpoint_url, UrlUtils.flatten_params(endpoint_params)) return endpoint_url
def get_signature_base_string(cls, method, params, url): # remove default port url = UrlUtils.remove_default_port(url) # ensure scheme is lowercase url = UrlUtils.lower_scheme(url) # remove query string parameters url = UrlUtils.substitute_query(url) base_request_uri = quote(url, "") query_string = UrlUtils.flatten_params(params) query_string = quote(query_string, '~') return "%s&%s&%s" % (method.upper(), base_request_uri, query_string)
def add_params_sign(self, method, url, params, sign_key=None, **kwargs): """ Adds the params to a given url, signs the url with sign_key if provided, otherwise generates sign_key automatically and returns a signed url """ if isinstance(params, dict): params = list(params.items()) urlparse_result = urlparse(url) if urlparse_result.query: params += parse_qsl(urlparse_result.query) # for key, value in parse_qsl(urlparse_result.query): # params += [(key, value)] # headers = kwargs.get('headers', {}) # if headers: # params += headers.items() params = UrlUtils.unique_params(params) params = UrlUtils.sorted_params(params) params_without_signature = [] for key, value in params: if key != "oauth_signature": params_without_signature.append((key, value)) self.logger.debug('sorted_params before sign: %s' % pformat(params_without_signature)) signature = self.generate_oauth_signature(method, params_without_signature, url, sign_key) self.logger.debug('signature: %s' % signature) params = params_without_signature + [("oauth_signature", signature)] query_string = UrlUtils.flatten_params(params) return UrlUtils.substitute_query(url, query_string)
def test_flatten_params(self): self.assertEqual( UrlUtils.flatten_params(self.twitter_params_raw), self.twitter_param_string )
def test_flatten_params(self): self.assertEqual( StrUtils.to_binary(UrlUtils.flatten_params( self.twitter_params_raw)), StrUtils.to_binary(self.twitter_param_string))