diff options
author | Joe Gregorio <jcgregorio@google.com> | 2013-03-03 20:45:29 -0500 |
---|---|---|
committer | Joe Gregorio <jcgregorio@google.com> | 2013-03-03 20:45:29 -0500 |
commit | bb96435e29a3c1f96db21f8c71e29cb0a6e12246 (patch) | |
tree | 422ca82006546c35fd05fa4933fffa7bfddd2e69 /describe.py | |
parent | baf0480f414d79cca31d9d02a64967e72fa3dfd2 (diff) | |
download | google-api-python-client-bb96435e29a3c1f96db21f8c71e29cb0a6e12246.tar.gz |
Add some command-line flags to control describe.
Reviewed in https://codereview.appspot.com/7438047/
Diffstat (limited to 'describe.py')
-rw-r--r-- | describe.py | 77 |
1 files changed, 61 insertions, 16 deletions
diff --git a/describe.py b/describe.py index b2bcc6d64..ac1411ca8 100644 --- a/describe.py +++ b/describe.py @@ -31,12 +31,13 @@ import httplib2 from string import Template from apiclient.discovery import build +from apiclient.discovery import build_from_document +from apiclient.discovery import DISCOVERY_URI from oauth2client.anyjson import simplejson +import gflags import uritemplate -BASE = 'docs/dyn' - CSS = """<style> body, h1, h2, h3, div, span, p, pre, a { @@ -111,9 +112,6 @@ h1, h2, h3 { </style> """ -DISCOVERY_URI = ('https://www.googleapis.com/discovery/v1/apis/' - '{api}/{apiVersion}/rest') - METHOD_TEMPLATE = """<div class="method"> <code class="details" id="$name">$name($params)</code> <pre>$doc</pre> @@ -130,6 +128,24 @@ METHOD_LINK = """<p class="toc_element"> <code><a href="#$name">$name($params)</a></code></p> <p class="firstline">$firstline</p>""" +BASE = 'docs/dyn' + +DIRECTORY_URI = 'https://www.googleapis.com/discovery/v1/apis?preferred=true', + +FLAGS = gflags.FLAGS + +gflags.DEFINE_string('discovery_uri_template', DISCOVERY_URI, + 'URI Template for discovery.') + +gflags.DEFINE_string('discovery_uri', '', 'URI of discovery document. ' + 'If supplied then only this API will be documented.') + +gflags.DEFINE_string('directory_uri', DIRECTORY_URI, + 'URI of directory document. ' + 'Unused if --discovery_uri is supplied.') + +gflags.DEFINE_string('dest', BASE, 'Directory name to write documents into.') + def safe_version(version): """Create a safe version of the verion string. @@ -300,7 +316,7 @@ def document_collection_recursive(resource, path, root_discovery, discovery): html = document_collection(resource, path, root_discovery, discovery) - f = open(os.path.join(BASE, path + 'html'), 'w') + f = open(os.path.join(FLAGS.dest, path + 'html'), 'w') f.write(html.encode('utf-8')) f.close() @@ -323,7 +339,7 @@ def document_api(name, version): service = build(name, version) response, content = http.request( uritemplate.expand( - DISCOVERY_URI, { + FLAGS.discovery_uri_template, { 'api': name, 'apiVersion': version}) ) @@ -335,14 +351,43 @@ def document_api(name, version): service, '%s_%s.' % (name, version), discovery, discovery) -if __name__ == '__main__': +def document_api_from_discovery_document(uri): + """Document the given API. + + Args: + uri: string, URI of discovery document. + """ http = httplib2.Http() - resp, content = http.request( - 'https://www.googleapis.com/discovery/v1/apis?preferred=true', - headers={'X-User-IP': '0.0.0.0'}) - if resp.status == 200: - directory = simplejson.loads(content)['items'] - for api in directory: - document_api(api['name'], api['version']) + response, content = http.request(FLAGS.discovery_uri) + discovery = simplejson.loads(content) + + service = build_from_document(discovery) + + name = discovery['version'] + version = safe_version(discovery['version']) + + document_collection_recursive( + service, '%s_%s.' % (name, version), discovery, discovery) + + +if __name__ == '__main__': + # Let the gflags module process the command-line arguments + try: + argv = FLAGS(sys.argv) + except gflags.FlagsError, e: + print '%s\\nUsage: %s ARGS\\n%s' % (e, argv[0], FLAGS) + sys.exit(1) + + if FLAGS.discovery_uri: + document_api_from_discovery_document(FLAGS.discovery_uri) else: - sys.exit("Failed to load the discovery document.") + http = httplib2.Http() + resp, content = http.request( + FLAGS.directory_uri, + headers={'X-User-IP': '0.0.0.0'}) + if resp.status == 200: + directory = simplejson.loads(content)['items'] + for api in directory: + document_api(api['name'], api['version']) + else: + sys.exit("Failed to load the discovery document.") |