Skip to content

Commit

Permalink
feat(api-client): method parameters nested to args object
Browse files Browse the repository at this point in the history
preparing for #8

Signed-off-by: Vojtech Masek <vojtech.masek@flowup.cz>
  • Loading branch information
vmasek committed Mar 13, 2018
1 parent 4afcdbc commit efaca5b
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 9 deletions.
2 changes: 1 addition & 1 deletion src/parser.ts
Expand Up @@ -47,7 +47,7 @@ function parseMethods({paths, security, parameters}: Swagger): Method[] {
),
methodType: methodType.toUpperCase() as MethodType,
parameters: transformParameters(operation.parameters, parameters || {}),
path: pathName.replace(/({.*?})/g, '$$$1'), // turn path interpolation `{this}` into string template `${this}
path: pathName.replace(/{(.*?)}/g, '$${args.$1}'), // turn path interpolation `{this}` into string template `${this}
response: prefixImportedModels(determineResponseType(operation.responses)),
summaryLines: operation.description
? (operation.description || '').split('\n')
Expand Down
23 changes: 15 additions & 8 deletions templates/ngx-service.mustache
Expand Up @@ -36,33 +36,40 @@ export class APIClient {
}

{{#methods}}
{{&methodName}}({{#parameters}}{{&camelCaseName}}: {{importType}}{{#isArray}}[]{{/isArray}}, {{/parameters}}options?: HttpOptions): Observable<{{&response}}> {
{{&methodName}}(
{{#parameters.length}}
args: {
{{#parameters}}{{&camelCaseName}}: {{importType}}{{#isArray}}[]{{/isArray}},{{/parameters}}
},
{{/parameters.length}}
options?: HttpOptions
): Observable<{{&response}}> {
const path = `{{&path}}`;
options = {...this.options, ...options};

{{#parameters}}
{{#isQueryParameter}}
if ({{&camelCaseName}}) {
if (args.{{&camelCaseName}}) {
{{#isArray}}
options.params = {{&camelCaseName}}.reduce((acc, cur) => acc.append('{{&name}}', `${cur}`), options.params);
options.params = args.{{&camelCaseName}}.reduce((acc, cur) => acc.append('{{&name}}', `${cur}`), options.params);
{{/isArray}}
{{^isArray}}
options.params = options.params.set('{{&name}}', String({{&camelCaseName}}));
options.params = options.params.set('{{&name}}', String(args.{{&camelCaseName}}));
{{/isArray}}
}
{{/isQueryParameter}}
{{#isHeaderParameter}}
if ({{&camelCaseName}}) {
if (args.{{&camelCaseName}}) {
{{#isArray}}
options.headers = options.headers.set('{{&name}}', {{&camelCaseName}}.map(value => `${value}`));
options.headers = options.headers.set('{{&name}}', args.{{&camelCaseName}}.map(value => `${value}`));
{{/isArray}}
{{^isArray}}
options.headers = options.headers.set('{{&name}}', String({{&camelCaseName}}));
options.headers = options.headers.set('{{&name}}', String(args.{{&camelCaseName}}));
{{/isArray}}
}
{{/isHeaderParameter}}
{{/parameters}}
return this.sendRequest<{{&response}}>('{{methodType}}', path, options{{#parameters}}{{#isBodyParameter}}, JSON.stringify({{&camelCaseName}}){{/isBodyParameter}}{{/parameters}});
return this.sendRequest<{{&response}}>('{{methodType}}', path, options{{#parameters}}{{#isBodyParameter}}, JSON.stringify(args.{{&camelCaseName}}){{/isBodyParameter}}{{/parameters}});
}

{{/methods}}
Expand Down

0 comments on commit efaca5b

Please sign in to comment.