-
Notifications
You must be signed in to change notification settings - Fork 16
/
Copy pathconfig.ts
47 lines (44 loc) · 1.32 KB
/
config.ts
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
const getConfig = () => {
return {
port: process.env.PORT ?? 3000,
urls: process.env.URLS,
pushover: {
token: process.env.PUSHOVER_TOKEN,
user: process.env.PUSHOVER_USER,
},
timeout: {
regular: parseEnvInt("TIMEOUT_REGULAR", 300),
error: parseEnvInt("TIMEOUT_ERROR", 300),
},
chromiumExecutablePath: process.env.CHROMIUM_EXECUTABLE_PATH,
noPuppeteerSandbox: !!process.env.NO_PUPPETEER_SANDBOX,
logHtml: !!process.env.LOG_HTML,
headless: !!process.env.HEADLESS,
};
};
export default getConfig;
const parseEnvInt = (variableName: string, fallback: number): number => {
const envValue = process.env[variableName] ?? "";
const envValueInt = parseInt(envValue);
return isNaN(envValueInt) ? fallback : envValueInt;
};
export const getUrls = (): string[] => {
const urls = getConfig().urls;
if (!urls) throw "No URLS provided.";
return urls.split(",").map((url) => {
if (url.slice(-1) === "/") {
return url.substr(0, url.length - 1);
} else {
return url;
}
});
};
export const getZipFromUrl = (url: string): string => {
if (url.indexOf("impftermine/service") !== -1) {
return url.substr(-5, 5);
} else if (url.indexOf("impftermine/suche") !== -1) {
return url.substr(69, 5);
} else {
throw "Could not get ZIP from URL.";
}
};