Don't crash if bridges are offline

Fixes https://github.com/turt2live/matrix-dimension/issues/131
This commit is contained in:
Travis Ralston 2019-04-13 17:06:43 -06:00
parent 8cd5067e73
commit 266cf8c0d8
5 changed files with 157 additions and 117 deletions

View file

@ -140,21 +140,26 @@ export class GitterBridge {
qs: qs,
json: body,
}, (err, res, _body) => {
if (err) {
LogService.error("GitterBridge", "Error calling " + url);
LogService.error("GitterBridge", err);
reject(err);
} else if (!res) {
LogService.error("GitterBridge", "There is no response for " + url);
reject(new Error("No response provided - is the service online?"));
} else if (res.statusCode !== 200) {
if (typeof(res.body) === "string") res.body = JSON.parse(res.body);
LogService.error("GitterBridge", "Got status code " + res.statusCode + " when calling " + url);
LogService.error("GitterBridge", res.body);
reject({body: res.body, status: res.statusCode});
} else {
if (typeof(res.body) === "string") res.body = JSON.parse(res.body);
resolve(res.body);
try {
if (err) {
LogService.error("GitterBridge", "Error calling " + url);
LogService.error("GitterBridge", err);
reject(err);
} else if (!res) {
LogService.error("GitterBridge", "There is no response for " + url);
reject(new Error("No response provided - is the service online?"));
} else if (res.statusCode !== 200) {
if (typeof (res.body) === "string") res.body = JSON.parse(res.body);
LogService.error("GitterBridge", "Got status code " + res.statusCode + " when calling " + url);
LogService.error("GitterBridge", res.body);
reject({body: res.body, status: res.statusCode});
} else {
if (typeof (res.body) === "string") res.body = JSON.parse(res.body);
resolve(res.body);
}
} catch (e) {
LogService.error("GitterBridge", e);
reject(e);
}
});
});
@ -173,21 +178,26 @@ export class GitterBridge {
qs: qs,
json: body,
}, (err, res, _body) => {
if (err) {
LogService.error("GitterBridge", "Error calling" + url);
LogService.error("GitterBridge", err);
reject(err);
} else if (!res) {
LogService.error("GitterBridge", "There is no response for " + url);
reject(new Error("No response provided - is the service online?"));
} else if (res.statusCode !== 200) {
if (typeof(res.body) === "string") res.body = JSON.parse(res.body);
LogService.error("GitterBridge", "Got status code " + res.statusCode + " when calling " + url);
LogService.error("GitterBridge", res.body);
reject({body: res.body, status: res.statusCode});
} else {
if (typeof(res.body) === "string") res.body = JSON.parse(res.body);
resolve(res.body);
try {
if (err) {
LogService.error("GitterBridge", "Error calling" + url);
LogService.error("GitterBridge", err);
reject(err);
} else if (!res) {
LogService.error("GitterBridge", "There is no response for " + url);
reject(new Error("No response provided - is the service online?"));
} else if (res.statusCode !== 200) {
if (typeof (res.body) === "string") res.body = JSON.parse(res.body);
LogService.error("GitterBridge", "Got status code " + res.statusCode + " when calling " + url);
LogService.error("GitterBridge", res.body);
reject({body: res.body, status: res.statusCode});
} else {
if (typeof (res.body) === "string") res.body = JSON.parse(res.body);
resolve(res.body);
}
} catch (e) {
LogService.error("GitterBridge", e);
reject(e);
}
});
});

View file

@ -281,20 +281,25 @@ export class IrcBridge {
qs: qs,
json: body,
}, (err, res, _body) => {
if (err) {
LogService.error("IrcBridge", "Error calling " + url);
LogService.error("IrcBridge", err);
reject(err);
} else if (!res) {
LogService.error("IrcBridge", "There is no response for " + url);
reject(new Error("No response provided - is the service online?"));
} else if (res.statusCode !== 200) {
LogService.error("IrcBridge", "Got status code " + res.statusCode + " when calling " + url);
LogService.error("IrcBridge", res.body);
reject(new Error("Request failed"));
} else {
if (typeof(res.body) === "string") res.body = JSON.parse(res.body);
resolve(res.body);
try {
if (err) {
LogService.error("IrcBridge", "Error calling " + url);
LogService.error("IrcBridge", err);
reject(err);
} else if (!res) {
LogService.error("IrcBridge", "There is no response for " + url);
reject(new Error("No response provided - is the service online?"));
} else if (res.statusCode !== 200) {
LogService.error("IrcBridge", "Got status code " + res.statusCode + " when calling " + url);
LogService.error("IrcBridge", res.body);
reject(new Error("Request failed"));
} else {
if (typeof (res.body) === "string") res.body = JSON.parse(res.body);
resolve(res.body);
}
} catch (e) {
LogService.error("IrcBridge", e);
reject(e);
}
});
});
@ -313,20 +318,25 @@ export class IrcBridge {
qs: qs,
json: body,
}, (err, res, _body) => {
if (err) {
LogService.error("IrcBridge", "Error calling" + url);
LogService.error("IrcBridge", err);
reject(err);
} else if (!res) {
LogService.error("IrcBridge", "There is no response for " + url);
reject(new Error("No response provided - is the service online?"));
} else if (res.statusCode !== 200) {
LogService.error("IrcBridge", "Got status code " + res.statusCode + " when calling " + url);
LogService.error("IrcBridge", res.body);
reject(new Error("Request failed"));
} else {
if (typeof(res.body) === "string") res.body = JSON.parse(res.body);
resolve(res.body);
try {
if (err) {
LogService.error("IrcBridge", "Error calling" + url);
LogService.error("IrcBridge", err);
reject(err);
} else if (!res) {
LogService.error("IrcBridge", "There is no response for " + url);
reject(new Error("No response provided - is the service online?"));
} else if (res.statusCode !== 200) {
LogService.error("IrcBridge", "Got status code " + res.statusCode + " when calling " + url);
LogService.error("IrcBridge", res.body);
reject(new Error("Request failed"));
} else {
if (typeof (res.body) === "string") res.body = JSON.parse(res.body);
resolve(res.body);
}
} catch (e) {
LogService.error("IrcBridge", e);
reject(e);
}
});
});

View file

@ -257,21 +257,26 @@ export class SlackBridge {
qs: qs,
json: body,
}, (err, res, _body) => {
if (err) {
LogService.error("SlackBridge", "Error calling " + url);
LogService.error("SlackBridge", err);
reject(err);
} else if (!res) {
LogService.error("SlackBridge", "There is no response for " + url);
reject(new Error("No response provided - is the service online?"));
} else if (res.statusCode !== 200) {
if (typeof(res.body) === "string") res.body = JSON.parse(res.body);
LogService.error("SlackBridge", "Got status code " + res.statusCode + " when calling " + url);
LogService.error("SlackBridge", res.body);
reject({body: res.body, status: res.statusCode});
} else {
if (typeof(res.body) === "string") res.body = JSON.parse(res.body);
resolve(res.body);
try {
if (err) {
LogService.error("SlackBridge", "Error calling " + url);
LogService.error("SlackBridge", err);
reject(err);
} else if (!res) {
LogService.error("SlackBridge", "There is no response for " + url);
reject(new Error("No response provided - is the service online?"));
} else if (res.statusCode !== 200) {
if (typeof (res.body) === "string") res.body = JSON.parse(res.body);
LogService.error("SlackBridge", "Got status code " + res.statusCode + " when calling " + url);
LogService.error("SlackBridge", res.body);
reject({body: res.body, status: res.statusCode});
} else {
if (typeof (res.body) === "string") res.body = JSON.parse(res.body);
resolve(res.body);
}
} catch (e) {
LogService.error("SlackBridge", e);
reject(e);
}
});
});
@ -290,21 +295,26 @@ export class SlackBridge {
qs: qs,
json: body,
}, (err, res, _body) => {
if (err) {
LogService.error("SlackBridge", "Error calling" + url);
LogService.error("SlackBridge", err);
reject(err);
} else if (!res) {
LogService.error("SlackBridge", "There is no response for " + url);
reject(new Error("No response provided - is the service online?"));
} else if (res.statusCode !== 200) {
if (typeof(res.body) === "string") res.body = JSON.parse(res.body);
LogService.error("SlackBridge", "Got status code " + res.statusCode + " when calling " + url);
LogService.error("SlackBridge", res.body);
reject({body: res.body, status: res.statusCode});
} else {
if (typeof(res.body) === "string") res.body = JSON.parse(res.body);
resolve(res.body);
try {
if (err) {
LogService.error("SlackBridge", "Error calling" + url);
LogService.error("SlackBridge", err);
reject(err);
} else if (!res) {
LogService.error("SlackBridge", "There is no response for " + url);
reject(new Error("No response provided - is the service online?"));
} else if (res.statusCode !== 200) {
if (typeof (res.body) === "string") res.body = JSON.parse(res.body);
LogService.error("SlackBridge", "Got status code " + res.statusCode + " when calling " + url);
LogService.error("SlackBridge", res.body);
reject({body: res.body, status: res.statusCode});
} else {
if (typeof (res.body) === "string") res.body = JSON.parse(res.body);
resolve(res.body);
}
} catch (e) {
LogService.error("SlackBridge", e);
reject(e);
}
});
});

View file

@ -209,21 +209,26 @@ export class TelegramBridge {
"Authorization": `Bearer ${bridge.sharedSecret}`,
},
}, (err, res, _body) => {
if (err) {
LogService.error("TelegramBridge", "Error calling" + url);
LogService.error("TelegramBridge", err);
reject(err);
} else if (!res) {
LogService.error("TelegramBridge", "There is no response for " + url);
reject(new Error("No response provided - is the service online?"));
} else if (res.statusCode !== 200 && res.statusCode !== 202) {
LogService.error("TelegramBridge", "Got status code " + res.statusCode + " when calling " + url);
LogService.error("TelegramBridge", res.body);
if (typeof(res.body) === "string") res.body = JSON.parse(res.body);
reject({errBody: res.body, error: new Error("Request failed")});
} else {
if (typeof(res.body) === "string") res.body = JSON.parse(res.body);
resolve(res.body);
try {
if (err) {
LogService.error("TelegramBridge", "Error calling" + url);
LogService.error("TelegramBridge", err);
reject(err);
} else if (!res) {
LogService.error("TelegramBridge", "There is no response for " + url);
reject(new Error("No response provided - is the service online?"));
} else if (res.statusCode !== 200 && res.statusCode !== 202) {
LogService.error("TelegramBridge", "Got status code " + res.statusCode + " when calling " + url);
LogService.error("TelegramBridge", res.body);
if (typeof (res.body) === "string") res.body = JSON.parse(res.body);
reject({errBody: res.body, error: new Error("Request failed")});
} else {
if (typeof (res.body) === "string") res.body = JSON.parse(res.body);
resolve(res.body);
}
} catch (e) {
LogService.error("TelegramBridge", e);
reject(e);
}
});
});

View file

@ -78,20 +78,25 @@ export class WebhooksBridge {
qs: qs,
json: body,
}, (err, res, _body) => {
if (err) {
LogService.error("WebhooksBridge", "Error calling" + url);
LogService.error("WebhooksBridge", err);
reject(err);
} else if (!res) {
LogService.error("WebhooksBridge", "There is no response for " + url);
reject(new Error("No response provided - is the service online?"));
} else if (res.statusCode !== 200) {
LogService.error("WebhooksBridge", "Got status code " + res.statusCode + " when calling " + url);
LogService.error("WebhooksBridge", res.body);
reject(new Error("Request failed"));
} else {
if (typeof(res.body) === "string") res.body = JSON.parse(res.body);
resolve(res.body);
try {
if (err) {
LogService.error("WebhooksBridge", "Error calling" + url);
LogService.error("WebhooksBridge", err);
reject(err);
} else if (!res) {
LogService.error("WebhooksBridge", "There is no response for " + url);
reject(new Error("No response provided - is the service online?"));
} else if (res.statusCode !== 200) {
LogService.error("WebhooksBridge", "Got status code " + res.statusCode + " when calling " + url);
LogService.error("WebhooksBridge", res.body);
reject(new Error("Request failed"));
} else {
if (typeof (res.body) === "string") res.body = JSON.parse(res.body);
resolve(res.body);
}
} catch (e) {
LogService.error("WebhooksBridge", e);
reject(e);
}
});
});