Paquete JavaScript
Aprende como usar el paquete JavaScript de cside para webhooks.
Instalar el paquete
Primero, instala nuestro paquete de webhooks usando el siguiente comando:
npm i @cside.dev/webhooks
Usar el paquete
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 were given when you created the webhook endpoint
});
switch (event.type) {
case "alert.created": {
const alert = webhookEvent.data;
// ^ entirely type safe
console.log({
type: alert.type,
domain: alert.domain,
target: alert.target,
action: alert.action,
});
}
}
Ejemplos
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!",
};
});