| OLD | NEW |
| 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 authorization_code_grant; | 5 library authorization_code_grant; |
| 6 | 6 |
| 7 import 'dart:async'; | 7 import 'dart:async'; |
| 8 import 'dart:uri'; | 8 import 'dart:uri'; |
| 9 | 9 |
| 10 // TODO(nweiz): This should be a "package:" import. See issue 6745. | 10 // TODO(nweiz): This should be a "package:" import. See issue 6745. |
| (...skipping 211 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 222 } | 222 } |
| 223 _state = _FINISHED_STATE; | 223 _state = _FINISHED_STATE; |
| 224 | 224 |
| 225 return _handleAuthorizationCode(authorizationCode); | 225 return _handleAuthorizationCode(authorizationCode); |
| 226 }); | 226 }); |
| 227 } | 227 } |
| 228 | 228 |
| 229 /// This works just like [handleAuthorizationCode], except it doesn't validate | 229 /// This works just like [handleAuthorizationCode], except it doesn't validate |
| 230 /// the state beforehand. | 230 /// the state beforehand. |
| 231 Future<Client> _handleAuthorizationCode(String authorizationCode) { | 231 Future<Client> _handleAuthorizationCode(String authorizationCode) { |
| 232 var startTime = new Date.now(); | 232 var startTime = new DateTime.now(); |
| 233 return _httpClient.post(this.tokenEndpoint, fields: { | 233 return _httpClient.post(this.tokenEndpoint, fields: { |
| 234 "grant_type": "authorization_code", | 234 "grant_type": "authorization_code", |
| 235 "code": authorizationCode, | 235 "code": authorizationCode, |
| 236 "redirect_uri": this._redirectEndpoint.toString(), | 236 "redirect_uri": this._redirectEndpoint.toString(), |
| 237 // TODO(nweiz): the spec recommends that HTTP basic auth be used in | 237 // TODO(nweiz): the spec recommends that HTTP basic auth be used in |
| 238 // preference to form parameters, but Google doesn't support that. Should | 238 // preference to form parameters, but Google doesn't support that. Should |
| 239 // it be configurable? | 239 // it be configurable? |
| 240 "client_id": this.identifier, | 240 "client_id": this.identifier, |
| 241 "client_secret": this.secret | 241 "client_secret": this.secret |
| 242 }).then((response) { | 242 }).then((response) { |
| 243 var credentials = handleAccessTokenResponse( | 243 var credentials = handleAccessTokenResponse( |
| 244 response, tokenEndpoint, startTime, _scopes); | 244 response, tokenEndpoint, startTime, _scopes); |
| 245 return new Client( | 245 return new Client( |
| 246 this.identifier, this.secret, credentials, httpClient: _httpClient); | 246 this.identifier, this.secret, credentials, httpClient: _httpClient); |
| 247 }); | 247 }); |
| 248 } | 248 } |
| 249 | 249 |
| 250 /// Closes the grant and frees its resources. | 250 /// Closes the grant and frees its resources. |
| 251 /// | 251 /// |
| 252 /// This will close the underlying HTTP client, which is shared by the | 252 /// This will close the underlying HTTP client, which is shared by the |
| 253 /// [Client] created by this grant, so it's not safe to close the grant and | 253 /// [Client] created by this grant, so it's not safe to close the grant and |
| 254 /// continue using the client. | 254 /// continue using the client. |
| 255 void close() { | 255 void close() { |
| 256 if (_httpClient != null) _httpClient.close(); | 256 if (_httpClient != null) _httpClient.close(); |
| 257 _httpClient = null; | 257 _httpClient = null; |
| 258 } | 258 } |
| 259 } | 259 } |
| OLD | NEW |