| OLD | NEW |
| (Empty) | |
| 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file |
| 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. |
| 4 |
| 5 library googleapis_generator; |
| 6 |
| 7 import "dart:io"; |
| 8 import "dart:async"; |
| 9 import "dart:convert"; |
| 10 |
| 11 import 'package:discoveryapis_generator/discoveryapis_generator.dart'; |
| 12 import 'package:http/http.dart' as http; |
| 13 |
| 14 import 'src/package_configuration.dart'; |
| 15 |
| 16 Future<List<DirectoryListItems>> _listAllApis() { |
| 17 var client = new http.Client(); |
| 18 return _discoveryClient(client).apis.list().then((DirectoryList list) { |
| 19 return list.items; |
| 20 }).whenComplete(() => client.close()); |
| 21 } |
| 22 |
| 23 Future<List<GenerateResult>> downloadDiscoveryDocuments( |
| 24 String outputDir, {List<String> ids}) { |
| 25 var apiDescriptions = <RestDescription>[]; |
| 26 |
| 27 var client = new http.Client(); |
| 28 var discovery = _discoveryClient(client); |
| 29 return discovery.apis.list().then((DirectoryList list) { |
| 30 var futures = <Future>[]; |
| 31 for (var item in list.items) { |
| 32 if (ids == null || ids.contains(item.id)) { |
| 33 futures.add(discovery.apis.getRest(item.name, item.version).then((doc) { |
| 34 apiDescriptions.add(doc); |
| 35 })); |
| 36 } |
| 37 } |
| 38 return Future.wait(futures).whenComplete(() => client.close()); |
| 39 }).then((_) { |
| 40 var directory = new Directory(outputDir); |
| 41 if (directory.existsSync()) { |
| 42 print('Deleting directory $outputDir.'); |
| 43 directory.deleteSync(recursive: true); |
| 44 } |
| 45 directory.createSync(recursive: true); |
| 46 |
| 47 for (var description in apiDescriptions) { |
| 48 var name = '$outputDir/${description.name}__${description.version}.json'; |
| 49 var file = new File(name); |
| 50 var encoder = new JsonEncoder.withIndent(' '); |
| 51 file.writeAsStringSync(encoder.convert(description.toJson())); |
| 52 print('Written: $name'); |
| 53 } |
| 54 }); |
| 55 } |
| 56 |
| 57 Future generateFromConfiguration(String configFile) { |
| 58 return _listAllApis().then((List<DirectoryListItems> items) { |
| 59 var configuration = new DiscoveryPackagesConfiguration(configFile, items); |
| 60 |
| 61 // Print warnings for APIs not mentioned. |
| 62 if (configuration.missingApis.isNotEmpty) { |
| 63 print('WARNING: No configuration for the following APIs:'); |
| 64 configuration.missingApis.forEach((id) => print('- $id')); |
| 65 } |
| 66 if (configuration.excessApis.isNotEmpty) { |
| 67 print('WARNING: The following APIs do not exist:'); |
| 68 configuration.excessApis.forEach((id) => print('- $id')); |
| 69 } |
| 70 |
| 71 // Generate the packages. |
| 72 var configFileUri = new Uri.file(configFile); |
| 73 return configuration.generate(configFileUri.resolve('discovery').path, |
| 74 configFileUri.resolve('generated').path); |
| 75 }); |
| 76 } |
| 77 |
| 78 DiscoveryApi _discoveryClient(http.Client client) => new DiscoveryApi(client); |
| OLD | NEW |