Example #1
0
    def from_request(http_method, http_url, headers=None, parameters=None,
            query_string=None):
        """Combines multiple parameter sources."""
        if parameters is None:
            parameters = {}

        # Headers
        if headers and 'Authorization' in headers:
            auth_header = headers['Authorization']
            # Check that the authorization header is OAuth.
            if auth_header[:6] == 'OAuth ':
                auth_header = auth_header[6:]
                try:
                    # Get the parameters from the header.
                    header_params = OAuthRequest._split_header(auth_header)
                    parameters.update(header_params)
                except:
                    raise OAuthError('Unable to parse OAuth parameters from '
                        'Authorization header.')

        # GET or POST query string.
        if query_string:
            query_params = OAuthRequest._split_url_string(query_string)
            parameters.update(query_params)

        # URL parameters.
        param_str = urlparse.urlparse(http_url)[4]  # query
        url_params = OAuthRequest._split_url_string(param_str)
        parameters.update(url_params)

        if parameters:
            return OAuthRequest(http_method, http_url, parameters)

        return None
Example #2
0
 def get_normalized_http_url(self):
     """Parses the URL and rebuilds it to be scheme://host/path."""
     parts = urlparse.urlparse(self.http_url)
     scheme, netloc, path = parts[:3]
     # Exclude default port numbers.
     if scheme == 'http' and netloc[-3:] == ':80':
         netloc = netloc[:-3]
     elif scheme == 'https' and netloc[-4:] == ':443':
         netloc = netloc[:-4]
     return '%s://%s%s' % (scheme, netloc, path)
Example #3
0
 def get_callback_url(self):
     if self.callback and self.verifier:
         # Append the oauth_verifier.
         parts = urlparse.urlparse(self.callback)
         scheme, netloc, path, params, query, fragment = parts[:6]
         if query:
             query = '%s&oauth_verifier=%s' % (query, self.verifier)
         else:
             query = 'oauth_verifier=%s' % self.verifier
         return urlparse.urlunparse((scheme, netloc, path, params,
             query, fragment))
     return self.callback