mirror of
https://github.com/OneUptime/oneuptime.git
synced 2026-04-06 00:32:12 +02:00
feat: Update DataToProcess to include IncomingEmailMonitorRequest and refactor IncomingEmail processing
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
import IncomingMonitorRequest from "../../../Types/Monitor/IncomingMonitor/IncomingMonitorRequest";
|
||||
import IncomingEmailMonitorRequest from "../../../Types/Monitor/IncomingEmailMonitor/IncomingEmailMonitorRequest";
|
||||
import ServerMonitorResponse from "../../../Types/Monitor/ServerMonitor/ServerMonitorResponse";
|
||||
import ProbeMonitorResponse from "../../../Types/Probe/ProbeMonitorResponse";
|
||||
import LogMonitorResponse from "../../../Types/Monitor/LogMonitor/LogMonitorResponse";
|
||||
@@ -9,6 +10,7 @@ import ExceptionMonitorResponse from "../../../Types/Monitor/ExceptionMonitor/Ex
|
||||
type DataToProcess =
|
||||
| ProbeMonitorResponse
|
||||
| IncomingMonitorRequest
|
||||
| IncomingEmailMonitorRequest
|
||||
| ServerMonitorResponse
|
||||
| LogMonitorResponse
|
||||
| TraceMonitorResponse
|
||||
|
||||
@@ -37,7 +37,6 @@ router.post(
|
||||
const isValid: boolean = await provider.validateWebhook({
|
||||
headers: req.headers as Record<string, string>,
|
||||
body: req.body as JSONObject,
|
||||
rawBody: (req as ExpressRequest & { rawBody?: string }).rawBody,
|
||||
});
|
||||
|
||||
if (!isValid) {
|
||||
@@ -76,8 +75,8 @@ router.post(
|
||||
emailFrom: parsedEmail.from,
|
||||
emailTo: parsedEmail.to,
|
||||
emailSubject: parsedEmail.subject,
|
||||
emailBody: parsedEmail.textBody,
|
||||
emailBodyHtml: parsedEmail.htmlBody,
|
||||
emailBody: parsedEmail.body,
|
||||
emailBodyHtml: parsedEmail.bodyHtml,
|
||||
emailHeaders: parsedEmail.headers,
|
||||
attachments: parsedEmail.attachments,
|
||||
});
|
||||
|
||||
@@ -16,6 +16,7 @@ import ProbeMonitorResponse from "Common/Types/Probe/ProbeMonitorResponse";
|
||||
import IncomingEmailMonitorRequest from "Common/Types/Monitor/IncomingEmailMonitor/IncomingEmailMonitorRequest";
|
||||
import MonitorType from "Common/Types/Monitor/MonitorType";
|
||||
import Monitor from "Common/Models/DatabaseModels/Monitor";
|
||||
import { MonitorStepProbeResponse } from "Common/Models/DatabaseModels/MonitorProbe";
|
||||
import { JSONObject } from "Common/Types/JSON";
|
||||
import { PROBE_INGEST_CONCURRENCY } from "../../Config";
|
||||
import ExceptionMessages from "Common/Types/Exception/ExceptionMessages";
|
||||
@@ -63,7 +64,7 @@ async function processProbeFromQueue(
|
||||
): Promise<void> {
|
||||
const probeResponse: ProbeMonitorResponse = JSONFunctions.deserialize(
|
||||
jobData.probeMonitorResponse?.["probeMonitorResponse"] as JSONObject,
|
||||
) as ProbeMonitorResponse;
|
||||
) as unknown as ProbeMonitorResponse;
|
||||
|
||||
if (!probeResponse) {
|
||||
throw new BadDataException("ProbeMonitorResponse not found");
|
||||
@@ -86,15 +87,18 @@ async function processProbeFromQueue(
|
||||
probeResponse.ingestedAt = OneUptimeDate.getCurrentDate();
|
||||
|
||||
// save the probe response to the monitor test.
|
||||
await MonitorTestService.updateOneById({
|
||||
const stepResponse: MonitorStepProbeResponse = {
|
||||
[probeResponse.monitorStepId.toString()]: {
|
||||
...JSON.parse(JSON.stringify(probeResponse)),
|
||||
monitoredAt: OneUptimeDate.getCurrentDate(),
|
||||
} as ProbeMonitorResponse,
|
||||
};
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
await (MonitorTestService as any).updateOneById({
|
||||
id: testId,
|
||||
data: {
|
||||
monitorStepProbeResponse: {
|
||||
[probeResponse.monitorStepId.toString()]: {
|
||||
...JSON.parse(JSON.stringify(probeResponse)),
|
||||
monitoredAt: OneUptimeDate.getCurrentDate(),
|
||||
},
|
||||
} as JSONObject,
|
||||
monitorStepProbeResponse: stepResponse,
|
||||
},
|
||||
props: {
|
||||
isRoot: true,
|
||||
|
||||
7
ProbeIngest/package-lock.json
generated
7
ProbeIngest/package-lock.json
generated
@@ -278,6 +278,7 @@
|
||||
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.6.tgz",
|
||||
"integrity": "sha512-FxpRyGjrMJXh7X3wGLGhNDCRiwpWEF74sKjTLDJSG5Kyvow3QZaG0Adbqzi9ZrVjTWpsX+2cxWXD71NMg93kdw==",
|
||||
"dev": true,
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@ampproject/remapping": "^2.2.0",
|
||||
"@babel/code-frame": "^7.23.5",
|
||||
@@ -1249,7 +1250,8 @@
|
||||
"node_modules/@types/node": {
|
||||
"version": "17.0.45",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz",
|
||||
"integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw=="
|
||||
"integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==",
|
||||
"peer": true
|
||||
},
|
||||
"node_modules/@types/prettier": {
|
||||
"version": "2.7.3",
|
||||
@@ -1520,6 +1522,7 @@
|
||||
"url": "https://github.com/sponsors/ai"
|
||||
}
|
||||
],
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"caniuse-lite": "^1.0.30001565",
|
||||
"electron-to-chromium": "^1.4.601",
|
||||
@@ -2461,6 +2464,7 @@
|
||||
"resolved": "https://registry.npmjs.org/jest/-/jest-28.1.3.tgz",
|
||||
"integrity": "sha512-N4GT5on8UkZgH0O5LUavMRV1EDEhNTL0KEfRmDIeZHSV7p2XgLoY9t9VDUgL6o+yfdgYHVxuz81G8oB9VG5uyA==",
|
||||
"dev": true,
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@jest/core": "^28.1.3",
|
||||
"@jest/types": "^28.1.3",
|
||||
@@ -4357,6 +4361,7 @@
|
||||
"version": "10.9.2",
|
||||
"resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz",
|
||||
"integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@cspotcode/source-map-support": "^0.8.0",
|
||||
"@tsconfig/node10": "^1.0.7",
|
||||
|
||||
Reference in New Issue
Block a user