1 |
|
2 | 'use strict';
|
3 |
|
4 | const fetch = require('node-fetch');
|
5 | const util = require('util');
|
6 |
|
7 | function getServer(prefix) {
|
8 | if (prefix === 'og') {
|
9 | return 'https://api.openapi-generator.tech/api/gen/';
|
10 | }
|
11 | else if (prefix === 'sc') {
|
12 | return 'https://generator.swagger.io/api/gen/';
|
13 | }
|
14 | console.warn('Unknown API provider prefix',prefix);
|
15 | return false;
|
16 | }
|
17 |
|
18 | async function main(obj, config, configName, callback) {
|
19 | const components = configName.split(':');
|
20 | const prefix = components[0];
|
21 | const type = components[1];
|
22 | const template = components[2];
|
23 | const server = getServer(prefix);
|
24 | const body = { options: {}, spec: obj };
|
25 | const response = await fetch(server+type+'s/'+template, {
|
26 | method: 'post',
|
27 | body: JSON.stringify(body),
|
28 | headers: { 'Content-Type': 'application/json' }
|
29 | })
|
30 | .then(res => res.json())
|
31 | .then(json => json)
|
32 | .catch(ex => {
|
33 | console.warn(ex.message);
|
34 | });
|
35 | if (response && response.link) {
|
36 | const zipfile = await fetch(response.link)
|
37 | .then(res => res.buffer())
|
38 | .then(buffer => buffer);
|
39 | callback(null, zipfile);
|
40 | }
|
41 | else {
|
42 | if (response) console.warn(util.inspect(response));
|
43 | }
|
44 | }
|
45 |
|
46 | function format(templates, prefix, type, filter) {
|
47 | for (let template of templates) {
|
48 | if (!filter || (template.indexOf(filter)>-1)) {
|
49 | console.log(prefix+':'+type+':'+template);
|
50 | }
|
51 | }
|
52 | }
|
53 |
|
54 | async function slurp(server, prefix, type, plural, filter) {
|
55 | await fetch(server+plural)
|
56 | .then(res => {
|
57 | return res.text();
|
58 | })
|
59 | .then(data => {
|
60 | format(JSON.parse(data), prefix, type, filter);
|
61 | })
|
62 | .catch(err => {
|
63 | console.error(util.inspect(err));
|
64 | });
|
65 | }
|
66 |
|
67 | async function list(prefix, filter) {
|
68 | const server = getServer(prefix);
|
69 | if (server) {
|
70 | await slurp(server, prefix, 'client', 'clients', filter);
|
71 | await slurp(server, prefix, 'server', 'servers', filter);
|
72 | return 0;
|
73 | }
|
74 | return 1;
|
75 | }
|
76 |
|
77 | module.exports = {
|
78 | main,
|
79 | list
|
80 | };
|
81 |
|