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

Side by Side Diff: pkg/oauth2/lib/src/client.dart

Issue 14070010: Refactor Future constructors. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Added co19 issue number. Created 7 years, 8 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « pkg/intl/lib/intl_standalone.dart ('k') | pkg/oauth2/test/authorization_code_grant_test.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 library oauth2_client; 5 library oauth2_client;
6 6
7 import 'dart:async'; 7 import 'dart:async';
8 import 'dart:uri'; 8 import 'dart:uri';
9 9
10 import 'package:http/http.dart' as http; 10 import 'package:http/http.dart' as http;
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
76 this.secret, 76 this.secret,
77 this._credentials, 77 this._credentials,
78 {http.Client httpClient}) 78 {http.Client httpClient})
79 : _httpClient = httpClient == null ? new http.Client() : httpClient; 79 : _httpClient = httpClient == null ? new http.Client() : httpClient;
80 80
81 /// Sends an HTTP request with OAuth2 authorization credentials attached. This 81 /// Sends an HTTP request with OAuth2 authorization credentials attached. This
82 /// will also automatically refresh this client's [Credentials] before sending 82 /// will also automatically refresh this client's [Credentials] before sending
83 /// the request if necessary. 83 /// the request if necessary.
84 Future<http.StreamedResponse> send(http.BaseRequest request) { 84 Future<http.StreamedResponse> send(http.BaseRequest request) {
85 return async.then((_) { 85 return async.then((_) {
86 if (!credentials.isExpired) return new Future.immediate(null); 86 if (!credentials.isExpired) return new Future.value();
87 if (!credentials.canRefresh) throw new ExpirationException(credentials); 87 if (!credentials.canRefresh) throw new ExpirationException(credentials);
88 return refreshCredentials(); 88 return refreshCredentials();
89 }).then((_) { 89 }).then((_) {
90 request.headers['authorization'] = "Bearer ${credentials.accessToken}"; 90 request.headers['authorization'] = "Bearer ${credentials.accessToken}";
91 return _httpClient.send(request); 91 return _httpClient.send(request);
92 }).then((response) { 92 }).then((response) {
93 if (response.statusCode != 401 || 93 if (response.statusCode != 401 ||
94 !response.headers.containsKey('www-authenticate')) { 94 !response.headers.containsKey('www-authenticate')) {
95 return response; 95 return response;
96 } 96 }
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
137 return this; 137 return this;
138 }); 138 });
139 } 139 }
140 140
141 /// Closes this client and its underlying HTTP client. 141 /// Closes this client and its underlying HTTP client.
142 void close() { 142 void close() {
143 if (_httpClient != null) _httpClient.close(); 143 if (_httpClient != null) _httpClient.close();
144 _httpClient = null; 144 _httpClient = null;
145 } 145 }
146 } 146 }
OLDNEW
« no previous file with comments | « pkg/intl/lib/intl_standalone.dart ('k') | pkg/oauth2/test/authorization_code_grant_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698