]> projects.mako.cc - twitter-api-cdsw-solutions/blob - oauthlib/oauth1/rfc5849/errors.py
added win_unicode_console module
[twitter-api-cdsw-solutions] / oauthlib / oauth1 / rfc5849 / errors.py
1 # coding=utf-8
2 """
3 oauthlib.oauth1.rfc5849.errors
4 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
5
6 Error used both by OAuth 1 clients and provicers to represent the spec
7 defined error responses for all four core grant types.
8 """
9 from __future__ import unicode_literals
10
11 from oauthlib.common import urlencode, add_params_to_uri
12
13
14 class OAuth1Error(Exception):
15     error = None
16     description = ''
17
18     def __init__(self, description=None, uri=None, status_code=400,
19                  request=None):
20         """
21         description:    A human-readable ASCII [USASCII] text providing
22                         additional information, used to assist the client
23                         developer in understanding the error that occurred.
24                         Values for the "error_description" parameter MUST NOT
25                         include characters outside the set
26                         x20-21 / x23-5B / x5D-7E.
27
28         uri:    A URI identifying a human-readable web page with information
29                 about the error, used to provide the client developer with
30                 additional information about the error.  Values for the
31                 "error_uri" parameter MUST conform to the URI- Reference
32                 syntax, and thus MUST NOT include characters outside the set
33                 x21 / x23-5B / x5D-7E.
34
35         state:  A CSRF protection value received from the client.
36
37         request:  Oauthlib Request object
38         """
39         self.description = description or self.description
40         message = '(%s) %s' % (self.error, self.description)
41         if request:
42             message += ' ' + repr(request)
43         super(OAuth1Error, self).__init__(message)
44
45         self.uri = uri
46         self.status_code = status_code
47
48     def in_uri(self, uri):
49         return add_params_to_uri(uri, self.twotuples)
50
51     @property
52     def twotuples(self):
53         error = [('error', self.error)]
54         if self.description:
55             error.append(('error_description', self.description))
56         if self.uri:
57             error.append(('error_uri', self.uri))
58         return error
59
60     @property
61     def urlencoded(self):
62         return urlencode(self.twotuples)
63
64
65 class InsecureTransportError(OAuth1Error):
66     error = 'insecure_transport_protocol'
67     description = 'Only HTTPS connections are permitted.'
68
69
70 class InvalidSignatureMethodError(OAuth1Error):
71     error = 'invalid_signature_method'
72
73
74 class InvalidRequestError(OAuth1Error):
75     error = 'invalid_request'
76
77
78 class InvalidClientError(OAuth1Error):
79     error = 'invalid_client'

Benjamin Mako Hill || Want to submit a patch?