Beispiel #1
0
 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
Beispiel #2
0
 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)
Beispiel #3
0
    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)
Beispiel #4
0
 def test_flatten_params(self):
     self.assertEqual(
         UrlUtils.flatten_params(self.twitter_params_raw),
         self.twitter_param_string
     )
Beispiel #5
0
 def test_flatten_params(self):
     self.assertEqual(
         StrUtils.to_binary(UrlUtils.flatten_params(
             self.twitter_params_raw)),
         StrUtils.to_binary(self.twitter_param_string))