Het pakket installeren
Language

JavaScript-pakket

Leer hoe u het JavaScript-pakket van cside voor webhooks gebruikt.

Het pakket installeren

Installeer eerst ons webhooks-pakket met het volgende commando:

npm i @cside.dev/webhooks

Het pakket gebruiken

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

Voorbeelden

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