UNPKG

2.08 kBJavaScriptView Raw
1// @ts-check
2'use strict';
3
4const fetch = require('node-fetch');
5const util = require('util');
6
7function 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
18async 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
46function 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
54async 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
67async 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
77module.exports = {
78 main,
79 list
80};
81