fix(edit-monitor): store headers as JSON

This commit is contained in:
Bert Verhelst 2021-10-09 12:42:32 +02:00
parent fba4f86552
commit d71d27220b
4 changed files with 9 additions and 32 deletions

View file

@ -99,31 +99,6 @@ class Monitor extends BeanModel {
return JSON.parse(this.accepted_statuscodes_json);
}
/**
* Convert header string into an object:
* eg:
*
* Authorization: Basic <credentials>
* Content-Type: application/json
*
* into
*
* {
* "Authorization": "Basic <credentials>",
* "Content-Type": "application/json"
* }
**/
getParsedHeaders() {
if (!this.headers || !this.headers.includes(":")) {
return {};
}
return Object.fromEntries(this.headers.split("\n").map(header => {
const trimmedHeader = header.trim();
const firstColonIndex = trimmedHeader.indexOf(":");
return [trimmedHeader.slice(0, firstColonIndex), trimmedHeader.slice(firstColonIndex + 1) || ""];
}).filter(arr => !!arr[0] && !!arr[1]));
}
start(io) {
let previousBeat = null;
let retries = 0;
@ -173,7 +148,7 @@ class Monitor extends BeanModel {
headers: {
"Accept": "*/*",
"User-Agent": "Uptime-Kuma/" + version,
...this.getParsedHeaders(),
...JSON.parse(this.headers),
},
httpsAgent: new https.Agent({
maxCachedSessions: 0, // Use Custom agent to disable session reuse (https://github.com/nodejs/node/issues/3940)