| Index: lib/googleapis_generator.dart
|
| diff --git a/lib/googleapis_generator.dart b/lib/googleapis_generator.dart
|
| index 5f738edf4a372454ae54a6c578c822106547b140..124fa44504b1a220f7d3919da75b692817d1c93e 100644
|
| --- a/lib/googleapis_generator.dart
|
| +++ b/lib/googleapis_generator.dart
|
| @@ -20,23 +20,9 @@ Future<List<DirectoryListItems>> _listAllApis() {
|
| }).whenComplete(() => client.close());
|
| }
|
|
|
| -Future<List<GenerateResult>> downloadDiscoveryDocuments(
|
| +Future<List<RestDescription>> downloadDiscoveryDocuments(
|
| String outputDir, {List<String> ids}) {
|
| - var apiDescriptions = <RestDescription>[];
|
| -
|
| - var client = new http.Client();
|
| - var discovery = _discoveryClient(client);
|
| - return discovery.apis.list().then((DirectoryList list) {
|
| - var futures = <Future>[];
|
| - for (var item in list.items) {
|
| - if (ids == null || ids.contains(item.id)) {
|
| - futures.add(discovery.apis.getRest(item.name, item.version).then((doc) {
|
| - apiDescriptions.add(doc);
|
| - }));
|
| - }
|
| - }
|
| - return Future.wait(futures).whenComplete(() => client.close());
|
| - }).then((_) {
|
| + return fetchDiscoveryDocuments(ids: ids).then((List<RestDescription> apis) {
|
| var directory = new Directory(outputDir);
|
| if (directory.existsSync()) {
|
| print('Deleting directory $outputDir.');
|
| @@ -44,35 +30,75 @@ Future<List<GenerateResult>> downloadDiscoveryDocuments(
|
| }
|
| directory.createSync(recursive: true);
|
|
|
| - for (var description in apiDescriptions) {
|
| + for (var description in apis) {
|
| var name = '$outputDir/${description.name}__${description.version}.json';
|
| var file = new File(name);
|
| var encoder = new JsonEncoder.withIndent(' ');
|
| file.writeAsStringSync(encoder.convert(description.toJson()));
|
| print('Written: $name');
|
| }
|
| + return apis;
|
| });
|
| }
|
|
|
| -Future generateFromConfiguration(String configFile) {
|
| - return _listAllApis().then((List<DirectoryListItems> items) {
|
| - var configuration = new DiscoveryPackagesConfiguration(configFile, items);
|
| +Future<List<RestDescription>> fetchDiscoveryDocuments({List<String> ids}) {
|
| + var apiDescriptions = <RestDescription>[];
|
|
|
| - // Print warnings for APIs not mentioned.
|
| - if (configuration.missingApis.isNotEmpty) {
|
| - print('WARNING: No configuration for the following APIs:');
|
| - configuration.missingApis.forEach((id) => print('- $id'));
|
| - }
|
| - if (configuration.excessApis.isNotEmpty) {
|
| - print('WARNING: The following APIs do not exist:');
|
| - configuration.excessApis.forEach((id) => print('- $id'));
|
| + var client = new http.Client();
|
| + var discovery = _discoveryClient(client);
|
| + return discovery.apis.list().then((DirectoryList list) {
|
| + var futures = <Future>[];
|
| + for (var item in list.items) {
|
| + if (ids == null || ids.contains(item.id)) {
|
| + futures.add(discovery.apis.getRest(item.name, item.version).then((doc) {
|
| + apiDescriptions.add(doc);
|
| + }));
|
| + }
|
| }
|
| + return Future.wait(futures)
|
| + .whenComplete(() => client.close())
|
| + .then((_) => apiDescriptions);
|
| + });
|
| +}
|
| +
|
| +List<RestDescription> loadDiscoveryDocuments(String directory) {
|
| + var apiDescriptions = new Directory(directory).listSync()
|
| + .where((fse) => fse is File && fse.path.endsWith('.json'))
|
| + .map((File file) {
|
| + return new RestDescription.fromJson(JSON.decode(file.readAsStringSync()));
|
| + }).toList();
|
| + return apiDescriptions;
|
| +}
|
| +
|
| +Future downloadFromConfiguration(String configFile) {
|
| + return _listAllApis().then((List<DirectoryListItems> items) {
|
| + var configuration = new DiscoveryPackagesConfiguration(configFile);
|
|
|
| // Generate the packages.
|
| var configFileUri = new Uri.file(configFile);
|
| - return configuration.generate(configFileUri.resolve('discovery').path,
|
| - configFileUri.resolve('generated').path);
|
| + return configuration.download(
|
| + configFileUri.resolve('discovery').path, items).then((_) {
|
| + // Print warnings for APIs not mentioned.
|
| + if (configuration.missingApis.isNotEmpty) {
|
| + print('WARNING: No configuration for the following APIs:');
|
| + configuration.missingApis.forEach((id) => print('- $id'));
|
| + }
|
| + if (configuration.excessApis.isNotEmpty) {
|
| + print('WARNING: The following APIs do not exist:');
|
| + configuration.excessApis.forEach((id) => print('- $id'));
|
| + }
|
| + });
|
| });
|
| }
|
|
|
| +void generateFromConfiguration(String configFile) {
|
| + var configuration =
|
| + new DiscoveryPackagesConfiguration(configFile);
|
| +
|
| + // Generate the packages.
|
| + var configFileUri = new Uri.file(configFile);
|
| + return configuration.generate(configFileUri.resolve('discovery').path,
|
| + configFileUri.resolve('generated').path);
|
| +}
|
| +
|
| DiscoveryApi _discoveryClient(http.Client client) => new DiscoveryApi(client);
|
|
|