diff --git a/api_builder.py b/api_builder.py index 624e7f0..d8579c3 100644 --- a/api_builder.py +++ b/api_builder.py @@ -3,6 +3,7 @@ import sys import inflection import requests +import yaml with open('prelude.py') as f: @@ -14,7 +15,10 @@ reserved = dir(__builtins__) def download(url): - return requests.get(url).json() + res = requests.get(url) + if url.endswith('.json'): + return res.json() + return yaml.parse(res) def mkname(method, name, params): @@ -38,23 +42,26 @@ def mkparam(param, data): param = data for key in keys: param = param[key] - name = param["name"] + return param + + +def mkvarname(name): name = inflection.underscore(name) + name = name.replace("$", "") if name in reserved: name = "{}_".format(name) - param["name"] = name - return param + return name def mkkwargs(params): for param in params: name = param['name'] if param['required']: - yield name + yield mkvarname(name) for param in params: name = param['name'] if not param['required']: - yield "{}=None".format(name) + yield "{}=None".format(mkvarname(name)) def getparams(params, where): @@ -69,7 +76,7 @@ def mkparams(params, where): ps = getparams(params, where) if not ps: return None - return '{{\n{}\n }}'.format(',\n'.join(' "{}": {}'.format(p, p) for p in ps)) + return '{{\n{}\n }}'.format(',\n'.join(' "{}": {}'.format(p, mkvarname(p)) for p in ps)) def pretty_print(name, data): @@ -85,7 +92,7 @@ def pretty_print(name, data): fmt = r2.sub('{}', path) paramdef = [mkparam(param, data) for param in body.get('parameters', [])] name = r.sub('', path).replace("/", "_").replace('-', '_')[1:] - params = [p["name"] for p in paramdef] + params = [mkvarname(p["name"]) for p in paramdef] name = mkname(method, name, params) params = ", {}".format(", ".join(mkkwargs(paramdef))) if params else '' print(' def {}(self{}):'.format(name, params))