Mercurial > lbo > hg > async-google-apis
changeset 14:ca993cdce94d
Improve parameter handling
author | Lewin Bormann <lbo@spheniscida.de> |
---|---|
date | Sat, 17 Oct 2020 17:45:11 +0200 |
parents | 5694ea390f8e |
children | 88754a78780e |
files | generate/generate.py generate/templates.py |
diffstat | 2 files changed, 17 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/generate/generate.py Sat Oct 17 17:37:19 2020 +0200 +++ b/generate/generate.py Sat Oct 17 17:45:11 2020 +0200 @@ -154,6 +154,7 @@ for methodname, method in resource['methods'].items(): print("processed:", resourcename, methodname) struct = {'name': capitalize_first(resourcename) + capitalize_first(methodname) + 'Params', 'fields': []} + # Build struct dict for rendering. if 'parameters' in method: for paramname, param in method['parameters'].items(): struct['fields'].append({ @@ -177,6 +178,7 @@ params = re.findall(pat, string) snakeparams = [snake_case(p) for p in params] format_params = ','.join(['{}={}.{}{}'.format(p, paramsname, sp, suffix) for (p, sp) in zip(params, snakeparams)]) + # Some required parameters are in the URL. This rust syntax formats the relative URL part appropriately. return 'format!("{}", {})'.format(string, format_params), snakeparams @@ -195,6 +197,7 @@ for methodname, method in methods['methods'].items(): params_name = service + capitalize_first(methodname) + 'Params' parameters = {p: snake_case(p) for p, pp in method.get('parameters', {}).items() if 'required' not in pp} + required_parameters = {p: snake_case(p) for p, pp in method.get('parameters', {}).items() if 'required' in pp} in_type = method['request']['$ref'] if 'request' in method else '()' out_type = method['response']['$ref'] if 'response' in method else '()' is_upload = 'mediaUpload' in method @@ -217,6 +220,10 @@ 'param': p, 'snake_param': sp } for (p, sp) in parameters.items()], + 'required_params': [{ + 'param': p, + 'snake_param': sp + } for (p, sp) in required_parameters.items()], 'http_method': http_method } method_fragments.append(chevron.render(NormalMethodTmpl, data_normal)) @@ -233,6 +240,10 @@ 'param': p, 'snake_param': sp } for (p, sp) in parameters.items()], + 'required_params': [{ + 'param': p, + 'snake_param': sp + } for (p, sp) in required_parameters.items()], 'http_method': http_method } method_fragments.append(chevron.render(UploadMethodTmpl, data_upload))
--- a/generate/templates.py Sat Oct 17 17:37:19 2020 +0200 +++ b/generate/templates.py Sat Oct 17 17:45:11 2020 +0200 @@ -85,6 +85,9 @@ url_params.push_str(&format!("&{{{param}}}={}", val)); } {{/params}} + {{#required_params}} + url_params.push_str(&format!("&{{{param}}}={}", params.{{{snake_param}}})); + {{/required_params}} let full_uri = path + &url_params; let reqb = hyper::Request::builder() @@ -125,6 +128,9 @@ url_params.push_str(&format!("&{{{param}}}={}", val)); } {{/params}} + {{#required_params}} + url_params.push_str(&format!("&{{{param}}}={}", params.{{{snake_param}}})); + {{/required_params}} let full_uri = path + &url_params; let reqb = hyper::Request::builder()