mirror of
https://github.com/AikidoSec/safe-chain.git
synced 2026-05-26 12:10:49 +00:00
Consume the safe chain proxy min package age reporting webhook
This commit is contained in:
parent
127447d425
commit
ceefaabe57
6 changed files with 115 additions and 43 deletions
|
|
@ -10,7 +10,13 @@ const SERVER_STOP_TIMEOUT_MS = 1000;
|
|||
*/
|
||||
|
||||
/**
|
||||
* @typedef {{ blockReceived: [BlockEvent] }} ReportingServerEvents
|
||||
* @typedef {Object} MinPackageAgeEvent
|
||||
* @property {number} ts_ms
|
||||
* @property {{ product: string, identifier: string, suppressed_versions: string[] }} artifact
|
||||
*/
|
||||
|
||||
/**
|
||||
* @typedef {{ blockReceived: [BlockEvent], minPackageAgeSuppressionReceived: [MinPackageAgeEvent] }} ReportingServerEvents
|
||||
*/
|
||||
|
||||
/**
|
||||
|
|
@ -38,6 +44,11 @@ export function getReportingServer() {
|
|||
emitter.emit("blockReceived", blockEvent);
|
||||
});
|
||||
}
|
||||
else if (req.method === "POST" && req.url?.startsWith("/events/min-package-age")) {
|
||||
await parseMinPackageAgeEventFromRequest(req).then((minPackageAgeEvent) => {
|
||||
emitter.emit("minPackageAgeSuppressionReceived", minPackageAgeEvent);
|
||||
});
|
||||
}
|
||||
res.writeHead(200);
|
||||
res.end();
|
||||
}
|
||||
|
|
@ -75,12 +86,30 @@ export function getReportingServer() {
|
|||
* @param {http.IncomingMessage} req
|
||||
* @returns {Promise<BlockEvent>}
|
||||
*/
|
||||
function parseBlockEventFromRequest(req) {
|
||||
async function parseBlockEventFromRequest(req) {
|
||||
const requestData = await getRequestDataAsString(req);
|
||||
return JSON.parse(requestData);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {http.IncomingMessage} req
|
||||
* @returns {Promise<MinPackageAgeEvent>}
|
||||
*/
|
||||
async function parseMinPackageAgeEventFromRequest(req) {
|
||||
const requestData = await getRequestDataAsString(req);
|
||||
return JSON.parse(requestData);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {http.IncomingMessage} req
|
||||
* @returns {Promise<string>}
|
||||
*/
|
||||
function getRequestDataAsString(req) {
|
||||
return new Promise((resolve, reject) => {
|
||||
/** @type {Buffer[]} */
|
||||
const chunks = [];
|
||||
req.on("data", (chunk) => chunks.push(chunk));
|
||||
req.on("end", () => resolve(JSON.parse(Buffer.concat(chunks).toString())));
|
||||
req.on("end", () => resolve(Buffer.concat(chunks).toString()));
|
||||
req.on("error", reject);
|
||||
});
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue