Skip to content

Commit 52fbebe

Browse files
committed
Added a clientService that will generate the client SDK files
1 parent a2bc1ef commit 52fbebe

13 files changed

+228
-0
lines changed

src/templates/exportClientService.hbs

Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
{{>header}}
2+
3+
{{#if imports}}
4+
{{#each imports}}
5+
import type { {{{this}}} } from '../models/{{{this}}}';
6+
{{/each}}
7+
{{/if}}
8+
9+
import type { CancelablePromise } from '../core/CancelablePromise';
10+
import { OpenAPI } from '../core/OpenAPI';
11+
import { request as __request } from '../core/request';
12+
13+
export class {{{name}}}{{{@root.postfix}}} {
14+
15+
{{#each operations}}
16+
/**
17+
{{#if deprecated}}
18+
* @deprecated
19+
{{/if}}
20+
{{#if summary}}
21+
* {{{escapeComment summary}}}
22+
{{/if}}
23+
{{#if description}}
24+
* {{{escapeComment description}}}
25+
{{/if}}
26+
{{#unless @root.useOptions}}
27+
{{#if parameters}}
28+
{{#each parameters}}
29+
* @param {{{name}}} {{#if description}}{{{escapeComment description}}}{{/if}}
30+
{{/each}}
31+
{{/if}}
32+
{{/unless}}
33+
{{#each results}}
34+
* @returns {{{type}}} {{#if description}}{{{escapeComment description}}}{{/if}}
35+
{{/each}}
36+
* @throws ApiError
37+
*/
38+
public static {{{name}}}({{>parameters}}): CancelablePromise<{{>result}}> {
39+
return __request(OpenAPI, {
40+
method: '{{{method}}}',
41+
url: '{{{path}}}',
42+
{{#if parametersPath}}
43+
path: {
44+
{{#each parametersPath}}
45+
'{{{prop}}}': {{{name}}},
46+
{{/each}}
47+
},
48+
{{/if}}
49+
{{#if parametersCookie}}
50+
cookies: {
51+
{{#each parametersCookie}}
52+
'{{{prop}}}': {{{name}}},
53+
{{/each}}
54+
},
55+
{{/if}}
56+
{{#if parametersHeader}}
57+
headers: {
58+
{{#each parametersHeader}}
59+
'{{{prop}}}': {{{name}}},
60+
{{/each}}
61+
},
62+
{{/if}}
63+
{{#if parametersQuery}}
64+
query: {
65+
{{#each parametersQuery}}
66+
'{{{prop}}}': {{{name}}},
67+
{{/each}}
68+
},
69+
{{/if}}
70+
{{#if parametersForm}}
71+
formData: {
72+
{{#each parametersForm}}
73+
'{{{prop}}}': {{{name}}},
74+
{{/each}}
75+
},
76+
{{/if}}
77+
{{#if parametersBody}}
78+
{{#equals parametersBody.in 'formData'}}
79+
formData: {{{parametersBody.name}}},
80+
{{/equals}}
81+
{{#equals parametersBody.in 'body'}}
82+
body: {{{parametersBody.name}}},
83+
{{/equals}}
84+
{{#if parametersBody.mediaType}}
85+
mediaType: '{{{parametersBody.mediaType}}}',
86+
{{/if}}
87+
{{/if}}
88+
{{#if responseHeader}}
89+
responseHeader: '{{{responseHeader}}}',
90+
{{/if}}
91+
{{#if errors}}
92+
errors: {
93+
{{#each errors}}
94+
{{{code}}}: `{{{escapeDescription description}}}`,
95+
{{/each}}
96+
},
97+
{{/if}}
98+
});
99+
}
100+
101+
{{/each}}
102+
}

src/utils/registerHandlebarTemplates.spec.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ describe('registerHandlebarTemplates', () => {
1212
expect(templates.exports.model).toBeDefined();
1313
expect(templates.exports.schema).toBeDefined();
1414
expect(templates.exports.service).toBeDefined();
15+
expect(templates.exports.clientService).toBeDefined();
1516
expect(templates.core.settings).toBeDefined();
1617
expect(templates.core.apiError).toBeDefined();
1718
expect(templates.core.apiRequestOptions).toBeDefined();

src/utils/registerHandlebarTemplates.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ import xhrGetResponseBody from '../templates/core/xhr/getResponseBody.hbs';
5252
import xhrGetResponseHeader from '../templates/core/xhr/getResponseHeader.hbs';
5353
import xhrRequest from '../templates/core/xhr/request.hbs';
5454
import xhrSendRequest from '../templates/core/xhr/sendRequest.hbs';
55+
import templateExportClientService from '../templates/exportClientService.hbs';
5556
import templateExportModel from '../templates/exportModel.hbs';
5657
import templateExportSchema from '../templates/exportSchema.hbs';
5758
import templateExportService from '../templates/exportService.hbs';
@@ -92,6 +93,7 @@ export interface Templates {
9293
model: Handlebars.TemplateDelegate;
9394
schema: Handlebars.TemplateDelegate;
9495
service: Handlebars.TemplateDelegate;
96+
clientService: Handlebars.TemplateDelegate;
9597
};
9698
core: {
9799
settings: Handlebars.TemplateDelegate;
@@ -124,6 +126,7 @@ export const registerHandlebarTemplates = (root: {
124126
model: Handlebars.template(templateExportModel),
125127
schema: Handlebars.template(templateExportSchema),
126128
service: Handlebars.template(templateExportService),
129+
clientService: Handlebars.template(templateExportClientService),
127130
},
128131
core: {
129132
settings: Handlebars.template(templateCoreSettings),

src/utils/writeClient.spec.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ describe('writeClient', () => {
2323
model: () => 'model',
2424
schema: () => 'schema',
2525
service: () => 'service',
26+
clientService: () => 'clientService',
2627
},
2728
core: {
2829
settings: () => 'settings',

src/utils/writeClient.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import { writeClientIndex } from './writeClientIndex';
1313
import { writeClientModels } from './writeClientModels';
1414
import { writeClientSchemas } from './writeClientSchemas';
1515
import { writeClientServices } from './writeClientServices';
16+
import { writeUserClientServices } from './writeUserClientServices';
1617

1718
/**
1819
* Write our OpenAPI client, using the given templates at the given output
@@ -78,6 +79,17 @@ export const writeClient = async (
7879
postfix,
7980
clientName
8081
);
82+
await writeUserClientServices(
83+
client.services,
84+
templates,
85+
outputPathServices,
86+
httpClient,
87+
useUnionTypes,
88+
useOptions,
89+
indent,
90+
postfix,
91+
clientName
92+
);
8193
}
8294

8395
if (exportSchemas) {

src/utils/writeClientClass.spec.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ describe('writeClientClass', () => {
2323
model: () => 'model',
2424
schema: () => 'schema',
2525
service: () => 'service',
26+
clientService: () => 'clientService',
2627
},
2728
core: {
2829
settings: () => 'settings',

src/utils/writeClientCore.spec.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ describe('writeClientCore', () => {
2525
model: () => 'model',
2626
schema: () => 'schema',
2727
service: () => 'service',
28+
clientService: () => 'clientService',
2829
},
2930
core: {
3031
settings: () => 'settings',

src/utils/writeClientIndex.spec.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ describe('writeClientIndex', () => {
2121
model: () => 'model',
2222
schema: () => 'schema',
2323
service: () => 'service',
24+
clientService: () => 'clientService',
2425
},
2526
core: {
2627
settings: () => 'settings',

src/utils/writeClientModels.spec.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ describe('writeClientModels', () => {
3838
model: () => 'model',
3939
schema: () => 'schema',
4040
service: () => 'service',
41+
clientService: () => 'clientService',
4142
},
4243
core: {
4344
settings: () => 'settings',

src/utils/writeClientSchemas.spec.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ describe('writeClientSchemas', () => {
3838
model: () => 'model',
3939
schema: () => 'schema',
4040
service: () => 'service',
41+
clientService: () => 'clientService',
4142
},
4243
core: {
4344
settings: () => 'settings',

0 commit comments

Comments
 (0)