Skip to content

Commit d0c1f37

Browse files
committed
fix: add functions to fetch swagger.json from saddleback server
1 parent 2285d36 commit d0c1f37

File tree

5 files changed

+54
-107
lines changed

5 files changed

+54
-107
lines changed

bin/saddleback.cli.js

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,8 @@ const params = program
1515
.option('-c, --config <value>', 'Path to the config file')
1616
.option('-l, --login <value>', 'Login')
1717
.option('-p, --password <value>', 'Password')
18-
.option('-e, --environment <value>', 'Environment')
19-
.option('-uc, --useAutoCore <value>', 'Use fetching Core service swagger.json via login and password')
20-
.option('-ue, --useAutoEvent <value>', 'Use fetching Event service swagger.json via login and password')
21-
.option(
22-
'-un, --useAutoNotification <value>',
23-
'Use fetching Notification service swagger.json via login and password'
24-
)
25-
.option('-uw, --useAutoWorkflows <value>', 'Use fetching Workflows service swagger.json via login and password')
18+
.option('-e, --environment <value>', 'Environment dev | stage | stage2')
19+
.option('-s, --service <value>', 'Service ')
2620
.parse(process.argv)
2721
.opts();
2822

@@ -52,10 +46,7 @@ if (OpenAPI) {
5246
username: params.login,
5347
password: params.password,
5448
useEnvironment: params.environment,
55-
useAutoCoreService: params.useAutoCore,
56-
useAutoEventService: params.useAutoEvent,
57-
useAutoNotificationService: params.useAutoNotification,
58-
useAutoWorkflowsService: params.useAutoWorkflows,
49+
useService: params.service,
5950
})
6051
.then(() => {
6152
process.exit(0);

src/generateSaddlebackSpec.ts

Lines changed: 23 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -17,82 +17,38 @@ type Config = Options & {
1717
removeLodashPrefixes?: boolean;
1818
username: string;
1919
password: string;
20-
useAutoCoreService?: boolean;
21-
useAutoEventService?: boolean;
22-
useAutoNotificationService?: boolean;
23-
useAutoWorkflowsService?: boolean;
2420
useEnvironment?: Environment;
21+
useService?: Service;
2522
};
2623

2724
export const generateSaddlebackSpec = async (config: Config) => {
28-
const saddlebackGenerator = async (input: string | Record<string, any>, output: string) => {
29-
const openApi: OpenApi = isString(input) ? await getOpenApiSpec(input) : input;
30-
31-
if (config.removeLodashPrefixes && openApi.components && openApi.components.schemas) {
32-
const newSchemas: Dictionary<OpenApiSchema> = {};
33-
34-
for (const schemaKey in openApi.components.schemas) {
35-
if (openApi.components.schemas.hasOwnProperty(schemaKey)) {
36-
newSchemas[removeLodashPrefix(schemaKey)] = openApi.components.schemas[schemaKey];
37-
}
25+
const openApi: OpenApi =
26+
config.useEnvironment && config.useService
27+
? await getSwaggerJsonByEnv({
28+
env: config.useEnvironment,
29+
service: config.useService,
30+
username: config.username,
31+
password: config.password,
32+
})
33+
: isString(config.input)
34+
? await getOpenApiSpec(config.input)
35+
: config.input;
36+
37+
if (config.removeLodashPrefixes && openApi.components && openApi.components.schemas) {
38+
const newSchemas: Dictionary<OpenApiSchema> = {};
39+
40+
for (const schemaKey in openApi.components.schemas) {
41+
if (openApi.components.schemas.hasOwnProperty(schemaKey)) {
42+
newSchemas[removeLodashPrefix(schemaKey)] = openApi.components.schemas[schemaKey];
3843
}
39-
40-
openApi.components.schemas = newSchemas;
4144
}
4245

43-
mapSwaggerRef(openApi, removeLodashPrefixFromRef);
46+
openApi.components.schemas = newSchemas;
47+
}
4448

45-
await generate({ ...config, input: openApi });
46-
};
49+
mapSwaggerRef(openApi, removeLodashPrefixFromRef);
4750

48-
if (!config.useEnvironment) {
49-
await saddlebackGenerator(config.input, config.output);
50-
return;
51-
}
52-
if (config.useAutoCoreService) {
53-
await saddlebackGenerator(
54-
await getSwaggerJsonByEnv({
55-
env: config.useEnvironment,
56-
service: Service.Core,
57-
username: config.username,
58-
password: config.password,
59-
}),
60-
config.output + '/core'
61-
);
62-
}
63-
if (config.useAutoEventService) {
64-
await saddlebackGenerator(
65-
await getSwaggerJsonByEnv({
66-
env: config.useEnvironment,
67-
service: Service.Event,
68-
username: config.username,
69-
password: config.password,
70-
}),
71-
config.output + '/event'
72-
);
73-
}
74-
if (config.useAutoNotificationService) {
75-
await saddlebackGenerator(
76-
await getSwaggerJsonByEnv({
77-
env: config.useEnvironment,
78-
service: Service.Notifications,
79-
username: config.username,
80-
password: config.password,
81-
}),
82-
config.output + '/notifications'
83-
);
84-
}
85-
if (config.useAutoWorkflowsService) {
86-
await saddlebackGenerator(
87-
await getSwaggerJsonByEnv({
88-
env: config.useEnvironment,
89-
service: Service.Workflows,
90-
username: config.username,
91-
password: config.password,
92-
}),
93-
config.output + '/workflows'
94-
);
95-
}
51+
await generate({ ...config, input: openApi });
9652
};
9753

9854
export default generateSaddlebackSpec;

src/templates/exportSaddlebackService.hbs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
{{>header}}
2+
13
{{#if imports}}
24
{{#each imports}}
35
import type { {{{this}}} } from '../models/{{{this}}}{{#if ../additionalModelFileExtension}}.models{{/if}}';

test/index.js

Lines changed: 22 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -75,36 +75,32 @@ const main = async () => {
7575
removeLodashPrefixes: true,
7676
username: '[email protected]',
7777
password: `&cY8at<'S5PfJa#k`,
78-
useEnvironment: 'dev',
79-
useAutoCoreService: true,
80-
useAutoEventService: false,
81-
useAutoNotificationService: false,
82-
useAutoWorkflowsService: false,
78+
useEnvironment: 'stage2',
8379
};
84-
await OpenAPI.generateSaddlebackSpec({
85-
output: './test/auto',
86-
...config,
87-
});
88-
// await OpenAPI.generateSaddlebackSpec({
89-
// input: './test/spec/saddlebackCoreApi.json',
90-
// output: './test/new/saddleback/core',
91-
// ...config,
92-
// });
93-
// await OpenAPI.generateSaddlebackSpec({
94-
// input: './test/spec/saddlebackEventApi.json',
95-
// output: './test/new/saddleback/event',
96-
// ...config,
97-
// });
98-
// await OpenAPI.generateSaddlebackSpec({
99-
// input: './test/spec/saddlebackWebAppApi.json',
100-
// output: './test/new/saddleback/web',
101-
// ...config,
102-
// });
10380
// await OpenAPI.generateSaddlebackSpec({
104-
// input: './test/spec/saddlebackWorkflowApi.json',
105-
// output: './test/new/saddleback/workflow',
81+
// output: './test/auto',
10682
// ...config,
10783
// });
84+
await OpenAPI.generateSaddlebackSpec({
85+
useService: 'core',
86+
output: './auto/core',
87+
...config,
88+
});
89+
await OpenAPI.generateSaddlebackSpec({
90+
useService: 'event',
91+
output: './auto/event',
92+
...config,
93+
});
94+
await OpenAPI.generateSaddlebackSpec({
95+
useService: 'workflows',
96+
output: './auto/workflows',
97+
...config,
98+
});
99+
await OpenAPI.generateSaddlebackSpec({
100+
useService: 'notifications',
101+
output: './auto/notifications',
102+
...config,
103+
});
108104

109105
// await generateRealWorldSpecs();
110106
};

types/index.d.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
import {Environment} from "../src/utils/saddleback/getUrlByServiceEnv";
1+
import { Service } from '../src/client/interfaces/Service';
2+
import { Environment } from '../src/utils/saddleback/getUrlByServiceEnv';
23

34
export declare enum HttpClient {
45
FETCH = 'fetch',
@@ -42,7 +43,8 @@ export type CustomConfig = Options & {
4243
useAutoEventService?: boolean;
4344
useAutoNotificationService?: boolean;
4445
useAutoWorkflowsService?: boolean;
45-
useEnvironment?: Environment;
46+
useEnvironment?: Environment | 'dev' | 'stage' | 'stage2';
47+
useService?: Service | 'workflows' | 'event' | 'notifications' | 'core';
4648
};
4749

4850
export declare function generate(options: Options): Promise<void>;

0 commit comments

Comments
 (0)