From 236e489070db95fe8bbe1392dcb09c0932b9ec21 Mon Sep 17 00:00:00 2001 From: mehmet-erim Date: Wed, 20 Nov 2019 17:21:14 +0300 Subject: [PATCH] feat(client-generator): add request template generator --- .../templates/angular/service-templates.ts | 31 ++++++++++++------- 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/npm/packs/client-generator/src/templates/angular/service-templates.ts b/npm/packs/client-generator/src/templates/angular/service-templates.ts index 818c2186df..91e68a9a65 100644 --- a/npm/packs/client-generator/src/templates/angular/service-templates.ts +++ b/npm/packs/client-generator/src/templates/angular/service-templates.ts @@ -1,5 +1,7 @@ import changeCase from 'change-case'; import { replacer } from '../../utils/replacer'; +import { Argument } from '../../utils/generators'; +import snq from 'snq'; export namespace ServiceTemplates { export function classTemplate(name: string, content: string) { @@ -16,19 +18,24 @@ export class ${changeCase.pascalCase(name)}Service { }`; } - export function getMethodTemplate( - name: string, - url: string, - args: string = '', - params: string[] = [], - queryParams?: object, - ) { + export function getMethodTemplate(name: string, url: string, args: string = '', queryParams?: boolean) { return ` - ${changeCase.camelCase(replacer(name))}(${args}): Observable { - return this.restService.request({ - method: 'GET', - url: '/${url}${params.length ? '/' + params.join('/') : ''}', - }); + ${changeCase.camelCase(replacer(name))}(${args}${queryParams ? ', queryParams: any' : ''}): Observable { + ${requestTemplate('GET', url, false, !!queryParams)} }`; } + + export function requestTemplate(method: string, url: string, body?: boolean, queryParams?: boolean) { + const reg = /(?<=\{)(.*)(?=\})/g; + + (url.match(reg) || []).forEach(matched => { + const index = url.indexOf(`{${matched}}`); + url = url.slice(0, index) + '$' + url.slice(index); + }); + + return `return this.restService.request({ + method: '${method}', + url: \`/${url}\`,${queryParams ? 'params: queryParams,' : ''}${body ? 'body,' : ''} + });`; + } }