Package JavaScript
Utilisez le package JavaScript de cside pour vérifier les signatures webhook et gérer les événements de notification avec un support TypeScript complet.
Installer le package
Installez le package webhooks de cside :
npm i @cside.dev/webhooks
Utiliser le package
import { constructEvent } from "@cside.dev/webhooks";
const rawBody = req.rawBody; // This is the raw body from the request, how you get this will depend on your HTTP framework
const signature = req.headers["x-cside-signature"]; // This will always be provided in the headers.
const event = await constructEvent({
rawBody,
signature,
secret: process.env.CSIDE_WEBHOOK_SECRET, // This is the webhook secret you configured when adding the webhook destination
});
switch (event.type) {
case "alert.created": {
const alert = event.data;
// ^ entirely type safe
console.log({
type: alert.type,
domain: alert.domain,
target: alert.target,
action: alert.action,
});
}
}
Exemples
import Fastify from 'fastify';
import { constructEvent } from "@cside.dev/webhooks";
const fastify = Fastify({ logger: true });
await fastify.register(import('@fastify/raw-body'), {
field: 'rawBody',
global: false,
routes: ['/webhook']
});
fastify.post('/webhook', {
config: { rawBody: true }
}, async (request, reply) => {
const signature = request.headers['x-cside-signature'];
const webhookEvent = await constructEvent(
request.rawBody,
signature,
process.env.CSIDE_WEBHOOK_SECRET!,
);
switch (webhookEvent.event) {
case "alert.created": {
const alert = webhookEvent.data;
console.log({
type: alert.type,
domain: alert.domain,
target: alert.target,
action: alert.action,
});
}
}
});import { createKaitoHandler, KaitoError } from "@kaito-http/core";
import { constructEvent } from "@cside.dev/webhooks";
const app = router()
.get("/", async ({ ctx }) => {
return {
uptime: ctx.uptime,
time_now: Date.now(),
};
})
.post("/", async ({ ctx }) => {
const signature = ctx.req.headers.get("x-cside-signature");
if (!signature) {
throw new KaitoError(400, "Missing signature");
}
const rawBody = await ctx.req.text();
const webhookEvent = await constructEvent(
rawBody,
signature,
process.env.CSIDE_WEBHOOK_SECRET!,
);
switch (webhookEvent.event) {
case "alert.created": {
const alert = webhookEvent.data;
console.log({
type: alert.type,
domain: alert.domain,
target: alert.target,
action: alert.action,
});
}
}
return {
message: "OK!",
};
}); Was this page helpful?
Thanks for your feedback!