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

Unified Diff: pkg/oauth2/lib/src/handle_access_token_response.dart

Issue 812253002: Delete a bunch of packages that are now on GitHub. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Un-delete http Created 6 years 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 | « pkg/oauth2/lib/src/expiration_exception.dart ('k') | pkg/oauth2/lib/src/utils.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/oauth2/lib/src/handle_access_token_response.dart
diff --git a/pkg/oauth2/lib/src/handle_access_token_response.dart b/pkg/oauth2/lib/src/handle_access_token_response.dart
deleted file mode 100644
index 576636265cf1846c2cafd8351e225fe5dc393b0a..0000000000000000000000000000000000000000
--- a/pkg/oauth2/lib/src/handle_access_token_response.dart
+++ /dev/null
@@ -1,143 +0,0 @@
-// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
-// 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 handle_access_token_response;
-
-import 'dart:convert';
-
-import 'package:http/http.dart' as http;
-import 'package:http_parser/http_parser.dart';
-
-import 'credentials.dart';
-import 'authorization_exception.dart';
-
-/// The amount of time, in seconds, to add as a "grace period" for credential
-/// expiration. This allows credential expiration checks to remain valid for a
-/// reasonable amount of time.
-const _EXPIRATION_GRACE = 10;
-
-/// Handles a response from the authorization server that contains an access
-/// token. This response format is common across several different components of
-/// the OAuth2 flow.
-Credentials handleAccessTokenResponse(
- http.Response response,
- Uri tokenEndpoint,
- DateTime startTime,
- List<String> scopes) {
- if (response.statusCode != 200) _handleErrorResponse(response, tokenEndpoint);
-
- void validate(bool condition, String message) =>
- _validate(response, tokenEndpoint, condition, message);
-
- var contentType = response.headers['content-type'];
- if (contentType != null) contentType = new MediaType.parse(contentType);
-
- // The spec requires a content-type of application/json, but some endpoints
- // (e.g. Dropbox) serve it as text/javascript instead.
- validate(contentType != null &&
- (contentType.mimeType == "application/json" ||
- contentType.mimeType == "text/javascript"),
- 'content-type was "$contentType", expected "application/json"');
-
- var parameters;
- try {
- parameters = JSON.decode(response.body);
- } on FormatException catch (e) {
- validate(false, 'invalid JSON');
- }
-
- for (var requiredParameter in ['access_token', 'token_type']) {
- validate(parameters.containsKey(requiredParameter),
- 'did not contain required parameter "$requiredParameter"');
- validate(parameters[requiredParameter] is String,
- 'required parameter "$requiredParameter" was not a string, was '
- '"${parameters[requiredParameter]}"');
- }
-
- // TODO(nweiz): support the "mac" token type
- // (http://tools.ietf.org/html/draft-ietf-oauth-v2-http-mac-01)
- validate(parameters['token_type'].toLowerCase() == 'bearer',
- '"$tokenEndpoint": unknown token type "${parameters['token_type']}"');
-
- var expiresIn = parameters['expires_in'];
- validate(expiresIn == null || expiresIn is int,
- 'parameter "expires_in" was not an int, was "$expiresIn"');
-
- for (var name in ['refresh_token', 'scope']) {
- var value = parameters[name];
- validate(value == null || value is String,
- 'parameter "$name" was not a string, was "$value"');
- }
-
- var scope = parameters['scope'];
- if (scope != null) scopes = scope.split(" ");
-
- var expiration = expiresIn == null ? null :
- startTime.add(new Duration(seconds: expiresIn - _EXPIRATION_GRACE));
-
- return new Credentials(
- parameters['access_token'],
- parameters['refresh_token'],
- tokenEndpoint,
- scopes,
- expiration);
-}
-
-/// Throws the appropriate exception for an error response from the
-/// authorization server.
-void _handleErrorResponse(http.Response response, Uri tokenEndpoint) {
- void validate(bool condition, String message) =>
- _validate(response, tokenEndpoint, condition, message);
-
- // OAuth2 mandates a 400 or 401 response code for access token error
- // responses. If it's not a 400 reponse, the server is either broken or
- // off-spec.
- if (response.statusCode != 400 && response.statusCode != 401) {
- var reason = '';
- if (response.reasonPhrase != null && !response.reasonPhrase.isEmpty) {
- ' ${response.reasonPhrase}';
- }
- throw new FormatException('OAuth request for "$tokenEndpoint" failed '
- 'with status ${response.statusCode}$reason.\n\n${response.body}');
- }
-
- var contentType = response.headers['content-type'];
- if (contentType != null) contentType = new MediaType.parse(contentType);
- validate(contentType != null && contentType.mimeType == "application/json",
- 'content-type was "$contentType", expected "application/json"');
-
- var parameters;
- try {
- parameters = JSON.decode(response.body);
- } on FormatException catch (e) {
- validate(false, 'invalid JSON');
- }
-
- validate(parameters.containsKey('error'),
- 'did not contain required parameter "error"');
- validate(parameters["error"] is String,
- 'required parameter "error" was not a string, was '
- '"${parameters["error"]}"');
-
- for (var name in ['error_description', 'error_uri']) {
- var value = parameters[name];
- validate(value == null || value is String,
- 'parameter "$name" was not a string, was "$value"');
- }
-
- var description = parameters['error_description'];
- var uriString = parameters['error_uri'];
- var uri = uriString == null ? null : Uri.parse(uriString);
- throw new AuthorizationException(parameters['error'], description, uri);
-}
-
-void _validate(
- http.Response response,
- Uri tokenEndpoint,
- bool condition,
- String message) {
- if (condition) return;
- throw new FormatException('Invalid OAuth response for "$tokenEndpoint": '
- '$message.\n\n${response.body}');
-}
« no previous file with comments | « pkg/oauth2/lib/src/expiration_exception.dart ('k') | pkg/oauth2/lib/src/utils.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698