Installer le package
Language

Package JavaScript

Apprenez a utiliser le package JavaScript de cside pour les webhooks.

Installer le package

Tout d’abord, installez notre package webhooks en utilisant la commande suivante :

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 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,
    });
  }
}

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!",
    };
});