Mercurial > pybugzilla
changeset 1:aca76355e4d8
Added make_caching_json_request() and .hgignore
author | Atul Varma <avarma@mozilla.com> |
---|---|
date | Mon, 12 Apr 2010 23:41:13 -0700 |
parents | 349a78c460e2 |
children | 04f5ad537f36 |
files | .hgignore bugzilla |
diffstat | 2 files changed, 29 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/.hgignore Mon Apr 12 23:41:13 2010 -0700 @@ -0,0 +1,3 @@ +syntax: glob +bugzilla-config.json +cache
--- a/bugzilla Mon Apr 12 23:24:41 2010 -0700 +++ b/bugzilla Mon Apr 12 23:41:13 2010 -0700 @@ -44,19 +44,35 @@ 'content_type': mimetype, 'body': data} -def main(config): - #print json_request('GET', - # '%s/attachment/436897' % config['api_server'], - # query_args={'attachmentdata': 1}) - raise NotImplementedError() +def make_caching_json_request(cachedir, json_request=json_request): + from hashlib import sha512 as hashfunc + + def caching_json_request(method, url, query_args=None, body=None): + key = repr((method, url, query_args, body)) + hashfile = '%s.json' % hashfunc(key).hexdigest() + hashpath = os.path.join(cachedir, hashfile) + if not os.path.exists(hashpath): + response = json_request(method=method, + url=url, + query_args=query_args, + body=body) + open(hashpath, 'w').write(json.dumps(response)) + return json.loads(open(hashpath, 'r').read()) + + return caching_json_request + +def main(config, json_request=json_request): + print json_request('GET', + '%s/attachment/436897' % config['api_server'], + query_args={'attachmentdata': 1}) if __name__ == '__main__': import os import sys mypath = __import__('__main__').__file__ - configfile = os.path.join(os.path.dirname(mypath), - 'bugzilla-config.json') + mydir = os.path.dirname(mypath) + configfile = os.path.join(mydir, 'bugzilla-config.json') config = json.loads(open(configfile).read()) if 'username' in config and 'password' not in config: @@ -72,4 +88,6 @@ print "Aborted." sys.exit(1) - main(config) + cachedir = os.path.join(mydir, 'cache') + main(config=config, + json_request=make_caching_json_request(cachedir))