| // Copyright (c) 2014, 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. | |
| /// Provides access to an authenticated HTTP client which can be used to access | |
| /// Google APIs. | |
| library; | |
| import 'package:http/http.dart' as http; | |
| import 'service_scope.dart' as ss; | |
| const Symbol _authenticatedClientKey = #gcloud.http; | |
| /// Access the [http.Client] object available in the current service scope. | |
| /// | |
| /// The returned object will be the one which was previously registered with | |
| /// [registerAuthClientService] within the current (or a parent) service | |
| /// scope. | |
| /// | |
| /// Accessing this getter outside of a service scope will result in an error. | |
| /// See the `package:gcloud/service_scope.dart` library for more information. | |
| http.Client get authClientService => | |
| ss.lookup(_authenticatedClientKey) as http.Client; | |
| /// Registers the [http.Client] object within the current service scope. | |
| /// | |
| /// The provided `client` object will be available via the top-level | |
| /// `authenticatedHttp` getter. | |
| /// | |
| /// Calling this function outside of a service scope will result in an error. | |
| /// Calling this function more than once inside the same service scope is not | |
| /// allowed. | |
| void registerAuthClientService(http.Client client, {bool close = true}) { | |
| ss.register(_authenticatedClientKey, client); | |
| if (close) { | |
| ss.registerScopeExitCallback(() { | |
| client.close(); | |
| return null; | |
| }); | |
| } | |
| } |