コード例 #1
0
ファイル: __init__.py プロジェクト: davidlehn/pyoauth
 def __init__(self,
              client_credentials,
              temporary_credentials_request_uri,
              token_credentials_request_uri,
              resource_owner_authorization_uri,
              resource_owner_authentication_uri=None,
              use_authorization_header=True,
              authorization_header_param_delimiter=","):
     """
     Creates an instance of an OAuth 1.0 client.
     """
     self._client_credentials = client_credentials
     self._temporary_credentials_request_uri = \
         oauth_url_sanitize(temporary_credentials_request_uri,
                            force_secure=True)
     self._resource_owner_authorization_uri = \
         oauth_url_sanitize(resource_owner_authorization_uri,
                            force_secure=False)
     self._token_credentials_request_uri = \
         oauth_url_sanitize(token_credentials_request_uri,
                            force_secure=True)
     if resource_owner_authentication_uri:
         self._resource_owner_authentication_uri = \
             oauth_url_sanitize(resource_owner_authentication_uri,
                                force_secure=False)
     else:
         self._resource_owner_authentication_uri = ""
     self._use_authorization_header = use_authorization_header
     self._authorization_header_param_delimiter = authorization_header_param_delimiter
コード例 #2
0
ファイル: test_pyoauth_url.py プロジェクト: davidlehn/pyoauth
    def test_sanitization_force_secure(self):
        insecure_url = "http://www.EXAMPLE.com/request"
        secure_url = "https://www.EXAMPLE.com/request"

        assert_raises(InsecureOAuthUrlError, oauth_url_sanitize, insecure_url)
        assert_raises(InsecureOAuthUrlError, oauth_url_sanitize, insecure_url, True)
        assert_equal(oauth_url_sanitize(insecure_url, force_secure=False), "http://www.example.com/request")
        assert_equal(oauth_url_sanitize(secure_url, force_secure=False), "https://www.example.com/request")
        assert_equal(oauth_url_sanitize(secure_url, force_secure=True), "https://www.example.com/request")
コード例 #3
0
    def test_sanitization_force_secure(self):
        insecure_url = b("http://www.EXAMPLE.com/request")
        secure_url = b("https://www.EXAMPLE.com/request")

        self.assertRaises(InsecureOAuthUrlError,
                          oauth_url_sanitize, insecure_url)
        self.assertRaises(InsecureOAuthUrlError,
                          oauth_url_sanitize, insecure_url, True)
        self.assertEqual(
            oauth_url_sanitize(insecure_url, force_secure=False),
            b("http://www.example.com/request"))
        self.assertEqual(
            oauth_url_sanitize(secure_url, force_secure=False),
            b("https://www.example.com/request"))
        self.assertEqual(
            oauth_url_sanitize(secure_url, force_secure=True),
            b("https://www.example.com/request"))
コード例 #4
0
ファイル: test_pyoauth_url.py プロジェクト: davidlehn/pyoauth
 def test_sanitization_force_secure_default_and_removes_fragment(self):
     url = "https://www.EXAMPLE.com/request?a2=r%20b&a3=2%20q&a3=a&b5=%3D%253D&c%40=&c2=&oauth_consumer_key=9djdj82h48djs9d2&oauth_nonce=7d8f3e4a&oauth_signature_method=HMAC-SHA1&oauth_timestamp=137131201&oauth_token=kkk9d7dh3k39sjv7#fragment"
     expected_params = {
         "a2": ["r b"],
         "b5": ["=%3D"],
         "a3": ["a", "2 q"],
         "c@": [""],
         "c2": [""],
     }
     expected_result = "https://www.example.com/request?" + urlencode_s(expected_params)  # Fragment ignored.
     assert_equal(oauth_url_sanitize(url), expected_result)
コード例 #5
0
ファイル: __init__.py プロジェクト: Eah300muse/pyoauth
 def __init__(self,
              http_client,
              client_credentials,
              temporary_credentials_uri,
              token_credentials_uri,
              authorization_uri,
              authentication_uri=None,
              use_authorization_header=True,
              strict=True):
     super(Client, self).__init__(client_credentials,
                                  http_client,
                                  use_authorization_header)
     self._temporary_credentials_uri = \
         oauth_url_sanitize(temporary_credentials_uri)
     self._token_credentials_uri = \
         oauth_url_sanitize(token_credentials_uri)
     self._authorization_uri = \
         oauth_url_sanitize(authorization_uri, False)
     if authentication_uri:
         self._authentication_uri = \
             oauth_url_sanitize(authentication_uri, False)
     else:
         self._authentication_uri = None
     self._strict = strict
コード例 #6
0
ファイル: __init__.py プロジェクト: Eah300muse/pyoauth
 def __init__(self, http_client, client_credentials, auth_uri, token_uri):
     self._http_client = http_client
     self._client_credentials = client_credentials
     self._auth_uri = oauth_url_sanitize(auth_uri)
     self._token_uri = oauth_url_sanitize(token_uri)
コード例 #7
0
ファイル: __init__.py プロジェクト: Eah300muse/pyoauth
    def _request(cls,
                 client_credentials,
                 method, url, params=None, body=None, headers=None,
                 realm=None, use_authorization_header=True,
                 auth_credentials=None,
                 oauth_signature_method=SIGNATURE_METHOD_HMAC_SHA1,
                 oauth_version=OAUTH_VERSION_1,
                 **kwargs):
        """
        Makes an OAuth request.

        :param client_credentials:
            Client credentials (consumer key and secret).
        :param method:
            HTTP method.
        :param url:
            Request URL
        :param params:
            Additional query/payload parameters.
            If a `body` argument to this function is specified,
            the parameters are appended to the URL query string.
            If a `body` is not specified and a method other than GET is used
            the parameters will be added to the entity body.
        :param body:
            Entity body string.
        :param headers:
            Request headers dictionary.
        :param realm:
            Authorization realm.
        :param use_authorization_header:
            ``True`` if we should; ``False`` otherwise.
        :param auth_credentials:
            OAuth token/temporary credentials (if available).
        :param oauth_signature_method:
            Signature method.
        :param kwargs:
            Additional parameters including those that may begin with
            ``oauth_``.
        :returns:
            HTTP response (:class:`pyoauth.http.ResponseAdapter`) if
            ``async_callback`` is not specified;
            otherwise, ``async_callback`` is called with the response as its
            argument.
        """
        method = method.upper()
        body = body or SYMBOL_EMPTY_BYTES
        headers = headers or {}

        # Split all the oauth parameters and function parameters.
        extra_oauth_params, kwargs = \
            partition_dict(lambda k, v: k.startswith(OAUTH_PARAM_PREFIX),
                           kwargs)

        # Query/payload parameters must not contain OAuth-specific parameters.
        params = query_remove_oauth(params) if params else {}

        # The URL must not contain OAuth-specific parameters.
        url = oauth_url_sanitize(url, force_secure=False)

        # Temporary credentials requests don't have ``oauth_token``.
        if auth_credentials:
            oauth_token = auth_credentials.identifier
            oauth_token_secret = auth_credentials.shared_secret
        else:
            oauth_token = oauth_token_secret = None

        # Make OAuth-specific parameter dictionary.

        oauth_params = cls._generate_oauth_params(
            oauth_consumer_key=client_credentials.identifier,
            oauth_signature_method=oauth_signature_method,
            oauth_version=oauth_version,
            oauth_timestamp=cls.generate_timestamp(),
            oauth_nonce=cls.generate_nonce(),
            oauth_token=oauth_token,
            **extra_oauth_params
        )

        # Sign the request.
        signature = cls._generate_signature(method, url, params, body, headers,
                                            client_credentials.shared_secret,
                                            oauth_token_secret,
                                            oauth_params)
        oauth_params[OAUTH_PARAM_SIGNATURE] = signature

        # Now build the request.
        return cls._build_request(
            method, url, params, body, headers,
            oauth_params, realm, use_authorization_header
        )