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

Unified Diff: lib/src/credentials.dart

Issue 1308163004: Async-ify. (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
Index: lib/src/credentials.dart
diff --git a/lib/src/credentials.dart b/lib/src/credentials.dart
index ce4e06454ffd52a59c82f24b845ce7a347fbdd2d..88b1f5d115d20ba4d253c4666c59740c84edcd62 100644
--- a/lib/src/credentials.dart
+++ b/lib/src/credentials.dart
@@ -146,47 +146,44 @@ class Credentials {
String identifier,
String secret,
{List<String> newScopes,
- http.Client httpClient}) {
+ http.Client httpClient}) async {
var scopes = this.scopes;
if (newScopes != null) scopes = newScopes;
if (scopes == null) scopes = <String>[];
if (httpClient == null) httpClient = new http.Client();
var startTime = new DateTime.now();
- return async.then((_) {
- if (refreshToken == null) {
- throw new StateError("Can't refresh credentials without a refresh "
- "token.");
- } else if (tokenEndpoint == null) {
- throw new StateError("Can't refresh credentials without a token "
- "endpoint.");
- }
-
- var fields = {
- "grant_type": "refresh_token",
- "refresh_token": refreshToken,
- // TODO(nweiz): the spec recommends that HTTP basic auth be used in
- // preference to form parameters, but Google doesn't support that.
- // Should it be configurable?
- "client_id": identifier,
- "client_secret": secret
- };
- if (!scopes.isEmpty) fields["scope"] = scopes.join(' ');
-
- return httpClient.post(tokenEndpoint, body: fields);
- }).then((response) {
- return handleAccessTokenResponse(
+ if (refreshToken == null) {
+ throw new StateError("Can't refresh credentials without a refresh "
+ "token.");
+ } else if (tokenEndpoint == null) {
+ throw new StateError("Can't refresh credentials without a token "
+ "endpoint.");
+ }
+
+ var fields = {
+ "grant_type": "refresh_token",
+ "refresh_token": refreshToken,
+ // TODO(nweiz): the spec recommends that HTTP basic auth be used in
+ // preference to form parameters, but Google doesn't support that.
+ // Should it be configurable?
+ "client_id": identifier,
+ "client_secret": secret
+ };
+ if (!scopes.isEmpty) fields["scope"] = scopes.join(' ');
+
+ var response = await httpClient.post(tokenEndpoint, body: fields);
+ var credentials = await handleAccessTokenResponse(
response, tokenEndpoint, startTime, scopes);
- }).then((credentials) {
- // The authorization server may issue a new refresh token. If it doesn't,
- // we should re-use the one we already have.
- if (credentials.refreshToken != null) return credentials;
- return new Credentials(
- credentials.accessToken,
- this.refreshToken,
- credentials.tokenEndpoint,
- credentials.scopes,
- credentials.expiration);
- });
+
+ // The authorization server may issue a new refresh token. If it doesn't,
+ // we should re-use the one we already have.
+ if (credentials.refreshToken != null) return credentials;
+ return new Credentials(
+ credentials.accessToken,
+ this.refreshToken,
+ credentials.tokenEndpoint,
+ credentials.scopes,
+ credentials.expiration);
}
}

Powered by Google App Engine
This is Rietveld 408576698