Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(928)

Unified Diff: lib/src/authorization_code_grant.dart

Issue 1311323002: Modernize the style. (Closed) Base URL: git@github.com:dart-lang/oauth2.git@master
Patch Set: Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | lib/src/authorization_exception.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: lib/src/authorization_code_grant.dart
diff --git a/lib/src/authorization_code_grant.dart b/lib/src/authorization_code_grant.dart
index 9ec4a274d19d7df359061f26f94cb3eafd80db5d..e3bb645382ab124eae1dd023ac91367d6a1bccfc 100644
--- a/lib/src/authorization_code_grant.dart
+++ b/lib/src/authorization_code_grant.dart
@@ -2,7 +2,7 @@
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
-library authorization_code_grant;
+library oauth2.authorization_code_grant;
import 'dart:async';
@@ -13,8 +13,9 @@ import 'authorization_exception.dart';
import 'handle_access_token_response.dart';
import 'utils.dart';
-/// A class for obtaining credentials via an [authorization code grant][]. This
-/// method of authorization involves sending the resource owner to the
+/// A class for obtaining credentials via an [authorization code grant][].
+///
+/// This method of authorization involves sending the resource owner to the
/// authorization server where they will authorize the client. They're then
/// redirected back to your server, along with an authorization code. This is
/// used to obtain [Credentials] and create a fully-authorized [Client].
@@ -27,32 +28,22 @@ import 'utils.dart';
///
/// [authorization code grant]: http://tools.ietf.org/html/draft-ietf-oauth-v2-31#section-4.1
class AuthorizationCodeGrant {
- /// An enum value for [_state] indicating that [getAuthorizationUrl] has not
- /// yet been called for this grant.
- static const _INITIAL_STATE = 0;
-
- // An enum value for [_state] indicating that [getAuthorizationUrl] has been
- // called but neither [handleAuthorizationResponse] nor
- // [handleAuthorizationCode] has been called.
- static const _AWAITING_RESPONSE_STATE = 1;
-
- // An enum value for [_state] indicating that [getAuthorizationUrl] and either
- // [handleAuthorizationResponse] or [handleAuthorizationCode] have been
- // called.
- static const _FINISHED_STATE = 2;
-
- /// The client identifier for this client. The authorization server will issue
- /// each client a separate client identifier and secret, which allows the
- /// server to tell which client is accessing it. Some servers may also have an
- /// anonymous identifier/secret pair that any client may use.
+ /// The client identifier for this client.
+ ///
+ /// The authorization server will issue each client a separate client
+ /// identifier and secret, which allows the server to tell which client is
+ /// accessing it. Some servers may also have an anonymous identifier/secret
+ /// pair that any client may use.
///
/// This is usually global to the program using this library.
final String identifier;
- /// The client secret for this client. The authorization server will issue
- /// each client a separate client identifier and secret, which allows the
- /// server to tell which client is accessing it. Some servers may also have an
- /// anonymous identifier/secret pair that any client may use.
+ /// The client secret for this client.
+ ///
+ /// The authorization server will issue each client a separate client
+ /// identifier and secret, which allows the server to tell which client is
+ /// accessing it. Some servers may also have an anonymous identifier/secret
+ /// pair that any client may use.
///
/// This is usually global to the program using this library.
///
@@ -64,13 +55,17 @@ class AuthorizationCodeGrant {
/// A URL provided by the authorization server that serves as the base for the
/// URL that the resource owner will be redirected to to authorize this
- /// client. This will usually be listed in the authorization server's
- /// OAuth2 API documentation.
+ /// client.
+ ///
+ /// This will usually be listed in the authorization server's OAuth2 API
+ /// documentation.
final Uri authorizationEndpoint;
/// A URL provided by the authorization server that this library uses to
- /// obtain long-lasting credentials. This will usually be listed in the
- /// authorization server's OAuth2 API documentation.
+ /// obtain long-lasting credentials.
+ ///
+ /// This will usually be listed in the authorization server's OAuth2 API
+ /// documentation.
final Uri tokenEndpoint;
/// The HTTP client used to make HTTP requests.
@@ -87,9 +82,8 @@ class AuthorizationCodeGrant {
/// included in the response query parameters.
String _stateString;
- /// The current state of the grant object. One of [_INITIAL_STATE],
- /// [_AWAITING_RESPONSE_STATE], or [_FINISHED_STATE].
- int _state = _INITIAL_STATE;
+ /// The current state of the grant object.
+ _State _state = _State.initial;
/// Creates a new grant.
///
@@ -104,9 +98,11 @@ class AuthorizationCodeGrant {
: _httpClient = httpClient == null ? new http.Client() : httpClient;
/// Returns the URL to which the resource owner should be redirected to
- /// authorize this client. The resource owner will then be redirected to
- /// [redirect], which should point to a server controlled by the client. This
- /// redirect will have additional query parameters that should be passed to
+ /// authorize this client.
+ ///
+ /// The resource owner will then be redirected to [redirect], which should
+ /// point to a server controlled by the client. This redirect will have
+ /// additional query parameters that should be passed to
/// [handleAuthorizationResponse].
///
/// The specific permissions being requested from the authorization server may
@@ -122,10 +118,10 @@ class AuthorizationCodeGrant {
/// It is a [StateError] to call this more than once.
Uri getAuthorizationUrl(Uri redirect,
{List<String> scopes: const <String>[], String state}) {
- if (_state != _INITIAL_STATE) {
+ if (_state != _State.initial) {
throw new StateError('The authorization URL has already been generated.');
}
- _state = _AWAITING_RESPONSE_STATE;
+ _state = _State.awaitingResponse;
this._redirectEndpoint = redirect;
this._scopes = scopes;
@@ -143,9 +139,11 @@ class AuthorizationCodeGrant {
}
/// Processes the query parameters added to a redirect from the authorization
- /// server. Note that this "response" is not an HTTP response, but rather the
- /// data passed to a server controlled by the client as query parameters on
- /// the redirect URL.
+ /// server.
+ ///
+ /// Note that this "response" is not an HTTP response, but rather the data
+ /// passed to a server controlled by the client as query parameters on the
+ /// redirect URL.
///
/// It is a [StateError] to call this more than once, to call it before
/// [getAuthorizationUrl] is called, or to call it after
@@ -159,14 +157,14 @@ class AuthorizationCodeGrant {
/// Throws [AuthorizationException] if the authorization fails.
Future<Client> handleAuthorizationResponse(Map<String, String> parameters)
async {
- if (_state == _INITIAL_STATE) {
+ if (_state == _State.initial) {
throw new StateError(
'The authorization URL has not yet been generated.');
- } else if (_state == _FINISHED_STATE) {
+ } else if (_state == _State.finished) {
throw new StateError(
'The authorization code has already been received.');
}
- _state = _FINISHED_STATE;
+ _state = _State.finished;
if (_stateString != null) {
if (!parameters.containsKey('state')) {
@@ -194,11 +192,12 @@ class AuthorizationCodeGrant {
return await _handleAuthorizationCode(parameters['code']);
}
- /// Processes an authorization code directly. Usually
- /// [handleAuthorizationResponse] is preferable to this method, since it
- /// validates all of the query parameters. However, some authorization servers
- /// allow the user to copy and paste an authorization code into a command-line
- /// application, in which case this method must be used.
+ /// Processes an authorization code directly.
+ ///
+ /// Usually [handleAuthorizationResponse] is preferable to this method, since
+ /// it validates all of the query parameters. However, some authorization
+ /// servers allow the user to copy and paste an authorization code into a
+ /// command-line application, in which case this method must be used.
///
/// It is a [StateError] to call this more than once, to call it before
/// [getAuthorizationUrl] is called, or to call it after
@@ -209,14 +208,14 @@ class AuthorizationCodeGrant {
///
/// Throws [AuthorizationException] if the authorization fails.
Future<Client> handleAuthorizationCode(String authorizationCode) async {
- if (_state == _INITIAL_STATE) {
+ if (_state == _State.initial) {
throw new StateError(
'The authorization URL has not yet been generated.');
- } else if (_state == _FINISHED_STATE) {
+ } else if (_state == _State.finished) {
throw new StateError(
'The authorization code has already been received.');
}
- _state = _FINISHED_STATE;
+ _state = _State.finished;
return await _handleAuthorizationCode(authorizationCode);
}
@@ -252,3 +251,26 @@ class AuthorizationCodeGrant {
_httpClient = null;
}
}
+
+/// States that [AuthorizationCodeGrant] can be in.
+class _State {
Bob Nystrom 2015/08/25 21:49:10 I think you might actually be able to use an enum
nweiz 2015/08/25 22:06:54 Technically yes, but it makes debugging prints rea
+ /// [AuthorizationCodeGrant.getAuthorizationUrl] has not yet been called for
+ /// this grant.
+ static const initial = const _State("initial");
+
+ // [AuthorizationCodeGrant.getAuthorizationUrl] has been called but neither
+ // [AuthorizationCodeGrant.handleAuthorizationResponse] nor
+ // [AuthorizationCodeGrant.handleAuthorizationCode] has been called.
+ static const awaitingResponse = const _State("awaiting response");
+
+ // [AuthorizationCodeGrant.getAuthorizationUrl] and either
+ // [AuthorizationCodeGrant.handleAuthorizationResponse] or
+ // [AuthorizationCodeGrant.handleAuthorizationCode] have been called.
+ static const finished = const _State("finished");
+
+ final String _name;
+
+ const _State(this._name);
+
+ String toString() => _name;
+}
« no previous file with comments | « no previous file | lib/src/authorization_exception.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698