Permalink
Browse files

Removing trailing whitespace.

  • Loading branch information...
1 parent 21b4116 commit f5f5b5dbe097ff9c8d93fcba5f2eb7ccecbfde2b @dgouldin committed Feb 11, 2011
Showing with 57 additions and 57 deletions.
  1. +57 −57 oauth2/__init__.py
View
@@ -85,19 +85,19 @@ def generate_verifier(length=8):
class Consumer(object):
"""A consumer of OAuth-protected services.
-
+
The OAuth consumer is a "third-party" service that wants to access
protected resources from an OAuth service provider on behalf of an end
user. It's kind of the OAuth client.
-
+
Usually a consumer must be registered with the service provider by the
developer of the consumer software. As part of that process, the service
provider gives the consumer a *key* and a *secret* with which the consumer
software can identify itself to the service. The consumer will include its
key in each request to identify itself, but will use its secret only when
signing requests, to prove that the request is from that particular
registered consumer.
-
+
Once registered, the consumer can then use its consumer credentials to ask
the service provider for a request token, kicking off the OAuth
authorization process.
@@ -125,12 +125,12 @@ def __str__(self):
class Token(object):
"""An OAuth credential used to request authorization or a protected
resource.
-
+
Tokens in OAuth comprise a *key* and a *secret*. The key is included in
requests to identify the token being used, but the secret is used only in
the signature, to prove that the requester is who the server gave the
token to.
-
+
When first negotiating the authorization, the consumer asks for a *request
token* that the live user authorizes with the service provider. The
consumer then exchanges the request token for an *access token* that can
@@ -175,7 +175,7 @@ def get_callback_url(self):
def to_string(self):
"""Returns this token as a plain string, suitable for storage.
-
+
The resulting string includes the token's secret, so you should never
send or store this string where a third party can read it.
"""
@@ -188,7 +188,7 @@ def to_string(self):
if self.callback_confirmed is not None:
data['oauth_callback_confirmed'] = self.callback_confirmed
return urllib.urlencode(data)
-
+
@staticmethod
def from_string(s):
"""Deserializes a token from a string like one returned by
@@ -209,7 +209,7 @@ def from_string(s):
try:
secret = params['oauth_token_secret'][0]
except Exception:
- raise ValueError("'oauth_token_secret' not found in "
+ raise ValueError("'oauth_token_secret' not found in "
"OAuth request.")
token = Token(key, secret)
@@ -225,39 +225,39 @@ def __str__(self):
def setter(attr):
name = attr.__name__
-
+
def getter(self):
try:
return self.__dict__[name]
except KeyError:
raise AttributeError(name)
-
+
def deleter(self):
del self.__dict__[name]
-
+
return property(getter, attr, deleter)
class Request(dict):
-
+
"""The parameters and information for an HTTP request, suitable for
authorizing with OAuth credentials.
-
+
When a consumer wants to access a service's protected resources, it does
so using a signed HTTP request identifying itself (the consumer) with its
key, and providing an access token authorized by the end user to access
those resources.
-
+
"""
-
+
version = VERSION
-
+
def __init__(self, method=HTTP_METHOD, url=None, parameters=None):
self.method = method
self.url = url
if parameters is not None:
self.update(parameters)
-
+
@setter
def url(self, value):
self.__dict__['url'] = value
@@ -277,40 +277,40 @@ def url(self, value):
else:
self.normalized_url = None
self.__dict__['url'] = None
-
+
@setter
def method(self, value):
self.__dict__['method'] = value.upper()
-
+
def _get_timestamp_nonce(self):
return self['oauth_timestamp'], self['oauth_nonce']
-
+
def get_nonoauth_parameters(self):
"""Get any non-OAuth parameters."""
- return dict([(k, v) for k, v in self.iteritems()
+ return dict([(k, v) for k, v in self.iteritems()
if not k.startswith('oauth_')])
-
+
def to_header(self, realm=''):
"""Serialize as a header for an HTTPAuth request."""
- oauth_params = ((k, v) for k, v in self.items()
+ oauth_params = ((k, v) for k, v in self.items()
if k.startswith('oauth_'))
stringy_params = ((k, escape(str(v))) for k, v in oauth_params)
header_params = ('%s="%s"' % (k, v) for k, v in stringy_params)
params_header = ', '.join(header_params)
-
+
auth_header = 'OAuth realm="%s"' % realm
if params_header:
auth_header = "%s, %s" % (auth_header, params_header)
-
+
return {'Authorization': auth_header}
-
+
def to_postdata(self):
"""Serialize as post data for a POST request."""
# tell urlencode to deal with sequence values and map them correctly
# to resulting querystring. for example self["k"] = ["v1", "v2"] will
# result in 'k=v1&k=v2' and not k=%5B%27v1%27%2C+%27v2%27%5D
return urllib.urlencode(self, True)
-
+
def to_url(self):
"""Serialize as a URL for a GET request."""
base_url = urlparse.urlparse(self.url)
@@ -327,7 +327,7 @@ def get_parameter(self, parameter):
raise Error('Parameter not found: %s' % parameter)
return ret
-
+
def get_normalized_parameters(self):
"""Return a string that contains the parameters that must be signed."""
items = []
@@ -351,7 +351,7 @@ def get_normalized_parameters(self):
# (http://tools.ietf.org/html/draft-hammer-oauth-07#section-3.6)
# Spaces must be encoded with "%20" instead of "+"
return encoded_str.replace('+', '%20')
-
+
def sign_request(self, signature_method, consumer, token):
"""Set the signature parameter to the result of sign."""
@@ -363,24 +363,24 @@ def sign_request(self, signature_method, consumer, token):
self['oauth_signature_method'] = signature_method.name
self['oauth_signature'] = signature_method.sign(self, consumer, token)
-
+
@classmethod
def make_timestamp(cls):
"""Get seconds since epoch (UTC)."""
return str(int(time.time()))
-
+
@classmethod
def make_nonce(cls):
"""Generate pseudorandom number."""
return str(random.randint(0, 100000000))
-
+
@classmethod
def from_request(cls, 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']
@@ -394,59 +394,59 @@ def from_request(cls, http_method, http_url, headers=None, parameters=None,
except:
raise Error('Unable to parse OAuth parameters from '
'Authorization header.')
-
+
# GET or POST query string.
if query_string:
query_params = cls._split_url_string(query_string)
parameters.update(query_params)
-
+
# URL parameters.
param_str = urlparse.urlparse(http_url)[4] # query
url_params = cls._split_url_string(param_str)
parameters.update(url_params)
-
+
if parameters:
return cls(http_method, http_url, parameters)
-
+
return None
-
+
@classmethod
def from_consumer_and_token(cls, consumer, token=None,
http_method=HTTP_METHOD, http_url=None, parameters=None):
if not parameters:
parameters = {}
-
+
defaults = {
'oauth_consumer_key': consumer.key,
'oauth_timestamp': cls.make_timestamp(),
'oauth_nonce': cls.make_nonce(),
'oauth_version': cls.version,
}
-
+
defaults.update(parameters)
parameters = defaults
-
+
if token:
parameters['oauth_token'] = token.key
if token.verifier:
parameters['oauth_verifier'] = token.verifier
-
+
return Request(http_method, http_url, parameters)
-
+
@classmethod
- def from_token_and_callback(cls, token, callback=None,
+ def from_token_and_callback(cls, token, callback=None,
http_method=HTTP_METHOD, http_url=None, parameters=None):
if not parameters:
parameters = {}
-
+
parameters['oauth_token'] = token.key
-
+
if callback:
parameters['oauth_callback'] = callback
-
+
return cls(http_method, http_url, parameters)
-
+
@staticmethod
def _split_header(header):
"""Turn Authorization: header into parameters."""
@@ -463,7 +463,7 @@ def _split_header(header):
# Remove quotes and unescape the value.
params[param_parts[0]] = urllib.unquote(param_parts[1].strip('\"'))
return params
-
+
@staticmethod
def _split_url_string(param_str):
"""Turn URL string into parameters."""
@@ -476,7 +476,7 @@ def _split_url_string(param_str):
class Server(object):
"""A skeletal implementation of a service provider, providing protected
resources to requests from authorized consumers.
-
+
This class implements the logic to check requests for authorization. You
can use it with your web server or web framework to protect certain
resources with OAuth.
@@ -552,7 +552,7 @@ def _check_signature(self, request, consumer, token):
if not valid:
key, base = signature_method.signing_base(request, consumer, token)
- raise Error('Invalid signature. Expected signature base '
+ raise Error('Invalid signature. Expected signature base '
'string: %s' % base)
built = signature_method.sign(request, consumer, token)
@@ -583,7 +583,7 @@ def __init__(self, consumer, token=None, cache=None, timeout=None,
self.token = token
self.method = SignatureMethod_HMAC_SHA1()
- httplib2.Http.__init__(self, cache=cache, timeout=timeout,
+ httplib2.Http.__init__(self, cache=cache, timeout=timeout,
proxy_info=proxy_info)
def set_signature_method(self, method):
@@ -592,7 +592,7 @@ def set_signature_method(self, method):
self.method = method
- def request(self, uri, method="GET", body=None, headers=None,
+ def request(self, uri, method="GET", body=None, headers=None,
redirections=httplib2.DEFAULT_MAX_REDIRECTS, connection_type=None):
DEFAULT_CONTENT_TYPE = 'application/x-www-form-urlencoded'
@@ -623,14 +623,14 @@ def request(self, uri, method="GET", body=None, headers=None,
else:
headers.update(req.to_header())
- return httplib2.Http.request(self, uri, method=method, body=body,
- headers=headers, redirections=redirections,
+ return httplib2.Http.request(self, uri, method=method, body=body,
+ headers=headers, redirections=redirections,
connection_type=connection_type)
class SignatureMethod(object):
"""A way of signing requests.
-
+
The OAuth protocol lets consumers and service providers pick a way to sign
requests. This interface shows the methods expected by the other `oauth`
modules for signing requests. Subclass it and implement its methods to
@@ -666,7 +666,7 @@ def check(self, request, consumer, token, signature):
class SignatureMethod_HMAC_SHA1(SignatureMethod):
name = 'HMAC-SHA1'
-
+
def signing_base(self, request, consumer, token):
sig = (
escape(request.method),

0 comments on commit f5f5b5d

Please sign in to comment.