-
Notifications
You must be signed in to change notification settings - Fork 0
/
generate.js
103 lines (96 loc) · 1.97 KB
/
generate.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
const fs = require("fs");
const services = [
{
name: "songs",
url: "http://rostov-song-server.herokuapp.com/api/v3",
apiKey: "${SONGS_API_KEY}",
},
{
name: "devsongs",
url: "https://rostov-songs-dev.herokuapp.com/api/v3",
apiKey: "${SONGS_API_KEY}",
},
{
name: "messages",
url: "http://rostov-messages-server.herokuapp.com/api/v1",
apiKey: "key",
},
{
name: "notifications",
url: "https://rostov-notifs-server.herokuapp.com/api/v1",
apiKey: "${NOTIFICATIONS_API_KEY}",
},
{
name: "payments",
url: "https://rostov-payments-server.herokuapp.com/api/v1/",
apiKey: "key",
},
];
let output = `http:
port: \${PORT:-8080}
host: \${HOST:-rostov-gateway.herokuapp.com}
apiEndpoints:
`;
services.forEach((service) => {
output += `
${service.name}:
methods: "*"
origin: "*"
host: \${HOST:-rostov-gateway.herokuapp.com}
paths: "/${service.name}/*"
`;
});
output += `
serviceEndpoints:
`;
services.forEach((service) => {
output += `
${service.name}_service:
url: "${service.url}"
`;
});
output += `
policies:
- cors
- proxy
- request-transformer
- rewrite
- auth
pipelines:
`;
services.forEach((service) => {
output += `
${service.name}:
apiEndpoints:
- ${service.name}
policies:
- cors:
- action:
methods: "*"
origin: "*"
credentials: true
allowedHeaders: "*"
preflightContinue: false
- auth: null
- request-transformer:
- action:
headers:
add:
api_key: "'${service.apiKey}'"
- rewrite:
- condition:
name: regexpmatch
match: ^/${service.name}/(.*)$
action:
rewrite: /$1
- proxy:
- action:
serviceEndpoint: ${service.name}_service
`;
});
fs.writeFile(
"./config/gateway.config.yml",
output,
{ flag: "w" },
console.error
);