Skip to content

Commit e1268b1

Browse files
committed
- Working HttpClient exporter
1 parent 83a0692 commit e1268b1

16 files changed

+54
-34
lines changed

src/templates/client.hbs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import type { BaseHttpRequest } from './core/BaseHttpRequest';
44
import type { OpenAPIConfig } from './core/OpenAPI';
55
import { {{{httpRequest}}} } from './core/{{{httpRequest}}}';
6+
67
{{#if services}}
78
{{#each services}}
89
import { {{{name}}}{{{@root.postfix}}} } from './services/{{{name}}}{{{@root.postfix}}}';
@@ -17,7 +18,7 @@ export class {{{clientName}}} {
1718
public readonly {{{camelCase name}}}: {{{name}}}{{{@root.postfix}}};
1819
{{/each}}
1920

20-
public readonly request: BaseHttpRequest;
21+
private readonly request: BaseHttpRequest;
2122

2223
constructor(config?: OpenAPIConfig, HttpRequest: HttpRequestConstructor = {{{httpRequest}}}) {
2324
this.request = new HttpRequest({

src/utils/getHttpRequestName.ts

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,18 @@
1-
export const getHttpRequestName = (): string => {
2-
return '';
1+
import { HttpClient } from '../HttpClient';
2+
3+
/**
4+
* Generate the HttpRequest filename based on the selected client
5+
* @param httpClient The selected httpClient (fetch, xhr, node or axios)
6+
*/
7+
export const getHttpRequestName = (httpClient: HttpClient): string => {
8+
switch (httpClient) {
9+
case HttpClient.FETCH:
10+
return 'FetchHttpRequest';
11+
case HttpClient.XHR:
12+
return 'XHRHttpRequest';
13+
case HttpClient.NODE:
14+
return 'NodeHttpRequest';
15+
case HttpClient.AXIOS:
16+
return 'AxiosHttpRequest';
17+
}
318
};

src/utils/registerHandlebarHelpers.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@ import camelCase from 'camelcase';
22
import Handlebars from 'handlebars/runtime';
33
import { EOL } from 'os';
44

5-
import { Enum } from '../client/interfaces/Enum';
6-
import { Model } from '../client/interfaces/Model';
7-
import { HttpClient } from '../HttpClient';
5+
import type { Enum } from '../client/interfaces/Enum';
6+
import type { Model } from '../client/interfaces/Model';
7+
import type { HttpClient } from '../HttpClient';
88
import { unique } from './unique';
99

1010
export const registerHandlebarHelpers = (root: {

src/utils/writeClient.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import type { Client } from '../client/interfaces/Client';
22
import { HttpClient } from '../HttpClient';
33
import { Indent } from '../Indent';
44
import { mkdir, rmdir, writeFile } from './fileSystem';
5-
import { Templates } from './registerHandlebarTemplates';
5+
import type { Templates } from './registerHandlebarTemplates';
66
import { writeClient } from './writeClient';
77

88
jest.mock('./fileSystem');

src/utils/writeClient.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
import { resolve } from 'path';
22

33
import type { Client } from '../client/interfaces/Client';
4-
import { HttpClient } from '../HttpClient';
5-
import { Indent } from '../Indent';
4+
import type { HttpClient } from '../HttpClient';
5+
import type { Indent } from '../Indent';
66
import { mkdir, rmdir } from './fileSystem';
77
import { isDefined } from './isDefined';
88
import { isSubDirectory } from './isSubdirectory';
9-
import { Templates } from './registerHandlebarTemplates';
9+
import type { Templates } from './registerHandlebarTemplates';
1010
import { writeClientClass } from './writeClientClass';
1111
import { writeClientCore } from './writeClientCore';
1212
import { writeClientIndex } from './writeClientIndex';

src/utils/writeClientClass.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import type { Client } from '../client/interfaces/Client';
22
import { HttpClient } from '../HttpClient';
33
import { Indent } from '../Indent';
44
import { mkdir, rmdir, writeFile } from './fileSystem';
5-
import { Templates } from './registerHandlebarTemplates';
5+
import type { Templates } from './registerHandlebarTemplates';
66
import { writeClientClass } from './writeClientClass';
77

88
jest.mock('./fileSystem');

src/utils/writeClientClass.ts

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,16 @@
11
import { resolve } from 'path';
22

33
import type { Client } from '../client/interfaces/Client';
4-
import { HttpClient } from '../HttpClient';
5-
import { Indent } from '../Indent';
4+
import type { HttpClient } from '../HttpClient';
5+
import type { Indent } from '../Indent';
66
import { writeFile } from './fileSystem';
77
import { formatCode as f } from './formatCode';
88
import { formatIndentation as i } from './formatIndentation';
9-
import { Templates } from './registerHandlebarTemplates';
9+
import { getHttpRequestName } from './getHttpRequestName';
10+
import type { Templates } from './registerHandlebarTemplates';
1011
import { sortModelsByName } from './sortModelsByName';
1112
import { sortServicesByName } from './sortServicesByName';
13+
1214
/**
1315
* Generate the OpenAPI client index file using the Handlebar template and write it to disk.
1416
* The index file just contains all the exports you need to use the client as a standalone
@@ -37,7 +39,7 @@ export const writeClientClass = async (
3739
version: client.version,
3840
models: sortModelsByName(client.models),
3941
services: sortServicesByName(client.services),
40-
httpRequest: 'XHRHttpRequest',
42+
httpRequest: getHttpRequestName(httpClient),
4143
});
4244

4345
await writeFile(resolve(outputPath, 'client.ts'), i(f(templateResult), indent));

src/utils/writeClientCore.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import type { Client } from '../client/interfaces/Client';
22
import { HttpClient } from '../HttpClient';
33
import { Indent } from '../Indent';
44
import { writeFile } from './fileSystem';
5-
import { Templates } from './registerHandlebarTemplates';
5+
import type { Templates } from './registerHandlebarTemplates';
66
import { writeClientCore } from './writeClientCore';
77

88
jest.mock('./fileSystem');

src/utils/writeClientCore.ts

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
import { resolve } from 'path';
22

33
import type { Client } from '../client/interfaces/Client';
4-
import { HttpClient } from '../HttpClient';
5-
import { Indent } from '../Indent';
4+
import type { HttpClient } from '../HttpClient';
5+
import type { Indent } from '../Indent';
66
import { copyFile, exists, writeFile } from './fileSystem';
77
import { formatIndentation as i } from './formatIndentation';
8+
import { getHttpRequestName } from './getHttpRequestName';
89
import { isDefined } from './isDefined';
9-
import { Templates } from './registerHandlebarTemplates';
10+
import type { Templates } from './registerHandlebarTemplates';
1011

1112
/**
1213
* Generate OpenAPI core files, this includes the basic boilerplate code to handle requests.
@@ -26,12 +27,13 @@ export const writeClientCore = async (
2627
clientName?: string,
2728
request?: string
2829
): Promise<void> => {
30+
const httpRequest = getHttpRequestName(httpClient);
2931
const context = {
3032
httpClient,
3133
clientName,
34+
httpRequest,
3235
server: client.server,
3336
version: client.version,
34-
httpRequest: 'XHRHttpRequest',
3537
};
3638

3739
await writeFile(resolve(outputPath, 'OpenAPI.ts'), i(templates.core.settings(context), indent));
@@ -43,7 +45,7 @@ export const writeClientCore = async (
4345

4446
if (isDefined(clientName)) {
4547
await writeFile(resolve(outputPath, 'BaseHttpRequest.ts'), i(templates.core.baseHttpRequest(context), indent));
46-
await writeFile(resolve(outputPath, 'XHRHttpRequest.ts'), i(templates.core.httpRequest(context), indent));
48+
await writeFile(resolve(outputPath, `${httpRequest}.ts`), i(templates.core.httpRequest(context), indent));
4749
}
4850

4951
if (request) {

src/utils/writeClientIndex.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import type { Client } from '../client/interfaces/Client';
22
import { writeFile } from './fileSystem';
3-
import { Templates } from './registerHandlebarTemplates';
3+
import type { Templates } from './registerHandlebarTemplates';
44
import { writeClientIndex } from './writeClientIndex';
55

66
jest.mock('./fileSystem');

0 commit comments

Comments
 (0)