remove readme from the non-solutions
[twitter-api-cdsw-solutions] / oauthlib / oauth2 / rfc6749 / endpoints / pre_configured.py
1 # -*- coding: utf-8 -*-
2 """
3 oauthlib.oauth2.rfc6749
4 ~~~~~~~~~~~~~~~~~~~~~~~
5
6 This module is an implementation of various logic needed
7 for consuming and providing OAuth 2.0 RFC6749.
8 """
9 from __future__ import absolute_import, unicode_literals
10
11 from ..tokens import BearerToken
12 from ..grant_types import AuthorizationCodeGrant
13 from ..grant_types import ImplicitGrant
14 from ..grant_types import ResourceOwnerPasswordCredentialsGrant
15 from ..grant_types import ClientCredentialsGrant
16 from ..grant_types import RefreshTokenGrant
17
18 from .authorization import AuthorizationEndpoint
19 from .token import TokenEndpoint
20 from .resource import ResourceEndpoint
21 from .revocation import RevocationEndpoint
22
23
24 class Server(AuthorizationEndpoint, TokenEndpoint, ResourceEndpoint,
25              RevocationEndpoint):
26
27     """An all-in-one endpoint featuring all four major grant types."""
28
29     def __init__(self, request_validator, token_expires_in=None,
30                  token_generator=None, refresh_token_generator=None,
31                  *args, **kwargs):
32         """Construct a new all-grants-in-one server.
33
34         :param request_validator: An implementation of
35                                   oauthlib.oauth2.RequestValidator.
36         :param token_expires_in: An int or a function to generate a token
37                                  expiration offset (in seconds) given a
38                                  oauthlib.common.Request object.
39         :param token_generator: A function to generate a token from a request.
40         :param refresh_token_generator: A function to generate a token from a
41                                         request for the refresh token.
42         :param kwargs: Extra parameters to pass to authorization-,
43                        token-, resource-, and revocation-endpoint constructors.
44         """
45         auth_grant = AuthorizationCodeGrant(request_validator)
46         implicit_grant = ImplicitGrant(request_validator)
47         password_grant = ResourceOwnerPasswordCredentialsGrant(
48             request_validator)
49         credentials_grant = ClientCredentialsGrant(request_validator)
50         refresh_grant = RefreshTokenGrant(request_validator)
51         bearer = BearerToken(request_validator, token_generator,
52                              token_expires_in, refresh_token_generator)
53         AuthorizationEndpoint.__init__(self, default_response_type='code',
54                                        response_types={
55                                            'code': auth_grant,
56                                            'token': implicit_grant,
57                                        },
58                                        default_token_type=bearer)
59         TokenEndpoint.__init__(self, default_grant_type='authorization_code',
60                                grant_types={
61                                    'authorization_code': auth_grant,
62                                    'password': password_grant,
63                                    'client_credentials': credentials_grant,
64                                    'refresh_token': refresh_grant,
65                                },
66                                default_token_type=bearer)
67         ResourceEndpoint.__init__(self, default_token='Bearer',
68                                   token_types={'Bearer': bearer})
69         RevocationEndpoint.__init__(self, request_validator)
70
71
72 class WebApplicationServer(AuthorizationEndpoint, TokenEndpoint, ResourceEndpoint,
73                            RevocationEndpoint):
74
75     """An all-in-one endpoint featuring Authorization code grant and Bearer tokens."""
76
77     def __init__(self, request_validator, token_generator=None,
78                  token_expires_in=None, refresh_token_generator=None, **kwargs):
79         """Construct a new web application server.
80
81         :param request_validator: An implementation of
82                                   oauthlib.oauth2.RequestValidator.
83         :param token_expires_in: An int or a function to generate a token
84                                  expiration offset (in seconds) given a
85                                  oauthlib.common.Request object.
86         :param token_generator: A function to generate a token from a request.
87         :param refresh_token_generator: A function to generate a token from a
88                                         request for the refresh token.
89         :param kwargs: Extra parameters to pass to authorization-,
90                        token-, resource-, and revocation-endpoint constructors.
91         """
92         auth_grant = AuthorizationCodeGrant(request_validator)
93         refresh_grant = RefreshTokenGrant(request_validator)
94         bearer = BearerToken(request_validator, token_generator,
95                              token_expires_in, refresh_token_generator)
96         AuthorizationEndpoint.__init__(self, default_response_type='code',
97                                        response_types={'code': auth_grant},
98                                        default_token_type=bearer)
99         TokenEndpoint.__init__(self, default_grant_type='authorization_code',
100                                grant_types={
101                                    'authorization_code': auth_grant,
102                                    'refresh_token': refresh_grant,
103                                },
104                                default_token_type=bearer)
105         ResourceEndpoint.__init__(self, default_token='Bearer',
106                                   token_types={'Bearer': bearer})
107         RevocationEndpoint.__init__(self, request_validator)
108
109
110 class MobileApplicationServer(AuthorizationEndpoint, ResourceEndpoint,
111                               RevocationEndpoint):
112
113     """An all-in-one endpoint featuring Implicit code grant and Bearer tokens."""
114
115     def __init__(self, request_validator, token_generator=None,
116                  token_expires_in=None, refresh_token_generator=None, **kwargs):
117         """Construct a new implicit grant server.
118
119         :param request_validator: An implementation of
120                                   oauthlib.oauth2.RequestValidator.
121         :param token_expires_in: An int or a function to generate a token
122                                  expiration offset (in seconds) given a
123                                  oauthlib.common.Request object.
124         :param token_generator: A function to generate a token from a request.
125         :param refresh_token_generator: A function to generate a token from a
126                                         request for the refresh token.
127         :param kwargs: Extra parameters to pass to authorization-,
128                        token-, resource-, and revocation-endpoint constructors.
129         """
130         implicit_grant = ImplicitGrant(request_validator)
131         bearer = BearerToken(request_validator, token_generator,
132                              token_expires_in, refresh_token_generator)
133         AuthorizationEndpoint.__init__(self, default_response_type='token',
134                                        response_types={
135                                            'token': implicit_grant},
136                                        default_token_type=bearer)
137         ResourceEndpoint.__init__(self, default_token='Bearer',
138                                   token_types={'Bearer': bearer})
139         RevocationEndpoint.__init__(self, request_validator,
140                                     supported_token_types=['access_token'])
141
142
143 class LegacyApplicationServer(TokenEndpoint, ResourceEndpoint,
144                               RevocationEndpoint):
145
146     """An all-in-one endpoint featuring Resource Owner Password Credentials grant and Bearer tokens."""
147
148     def __init__(self, request_validator, token_generator=None,
149                  token_expires_in=None, refresh_token_generator=None, **kwargs):
150         """Construct a resource owner password credentials grant server.
151
152         :param request_validator: An implementation of
153                                   oauthlib.oauth2.RequestValidator.
154         :param token_expires_in: An int or a function to generate a token
155                                  expiration offset (in seconds) given a
156                                  oauthlib.common.Request object.
157         :param token_generator: A function to generate a token from a request.
158         :param refresh_token_generator: A function to generate a token from a
159                                         request for the refresh token.
160         :param kwargs: Extra parameters to pass to authorization-,
161                        token-, resource-, and revocation-endpoint constructors.
162         """
163         password_grant = ResourceOwnerPasswordCredentialsGrant(
164             request_validator)
165         refresh_grant = RefreshTokenGrant(request_validator)
166         bearer = BearerToken(request_validator, token_generator,
167                              token_expires_in, refresh_token_generator)
168         TokenEndpoint.__init__(self, default_grant_type='password',
169                                grant_types={
170                                    'password': password_grant,
171                                    'refresh_token': refresh_grant,
172                                },
173                                default_token_type=bearer)
174         ResourceEndpoint.__init__(self, default_token='Bearer',
175                                   token_types={'Bearer': bearer})
176         RevocationEndpoint.__init__(self, request_validator)
177
178
179 class BackendApplicationServer(TokenEndpoint, ResourceEndpoint,
180                                RevocationEndpoint):
181
182     """An all-in-one endpoint featuring Client Credentials grant and Bearer tokens."""
183
184     def __init__(self, request_validator, token_generator=None,
185                  token_expires_in=None, refresh_token_generator=None, **kwargs):
186         """Construct a client credentials grant server.
187
188         :param request_validator: An implementation of
189                                   oauthlib.oauth2.RequestValidator.
190         :param token_expires_in: An int or a function to generate a token
191                                  expiration offset (in seconds) given a
192                                  oauthlib.common.Request object.
193         :param token_generator: A function to generate a token from a request.
194         :param refresh_token_generator: A function to generate a token from a
195                                         request for the refresh token.
196         :param kwargs: Extra parameters to pass to authorization-,
197                        token-, resource-, and revocation-endpoint constructors.
198         """
199         credentials_grant = ClientCredentialsGrant(request_validator)
200         bearer = BearerToken(request_validator, token_generator,
201                              token_expires_in, refresh_token_generator)
202         TokenEndpoint.__init__(self, default_grant_type='client_credentials',
203                                grant_types={
204                                    'client_credentials': credentials_grant},
205                                default_token_type=bearer)
206         ResourceEndpoint.__init__(self, default_token='Bearer',
207                                   token_types={'Bearer': bearer})
208         RevocationEndpoint.__init__(self, request_validator,
209                                     supported_token_types=['access_token'])

Benjamin Mako Hill || Want to submit a patch?