UNPKG

nodejs-cryptomus

Version:

A comprehensive Node.js client for the Cryptomus API

64 lines (63 loc) 2.2 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.WebhookService = void 0; const signature_1 = require("../utils/signature"); /** * Webhook service for handling and validating webhooks */ class WebhookService { /** * Create a new webhook service * * @param apiKey - API key for signature verification */ constructor(apiKey) { this.apiKey = apiKey; } /** * Parse and validate a webhook payload * * @param payload - Raw webhook payload as string * @param signature - Signature from webhook headers * @returns Parsed webhook payload * @throws Error if signature is invalid */ parseWebhook(payload, signature) { if (!(0, signature_1.verifyWebhookSignature)(payload, signature, this.apiKey)) { throw new Error('Invalid webhook signature'); } const parsedPayload = JSON.parse(payload); return parsedPayload; } /** * Parse and validate a payment webhook payload * * @param payload - Raw webhook payload as string * @param signature - Signature from webhook headers * @returns Parsed payment webhook payload * @throws Error if signature is invalid or payload type is not payment */ parsePaymentWebhook(payload, signature) { const parsedPayload = this.parseWebhook(payload, signature); if (parsedPayload.type !== 'payment') { throw new Error('Invalid webhook type, expected payment webhook'); } return parsedPayload; } /** * Parse and validate a payout webhook payload * * @param payload - Raw webhook payload as string * @param signature - Signature from webhook headers * @returns Parsed payout webhook payload * @throws Error if signature is invalid or payload type is not payout */ parsePayoutWebhook(payload, signature) { const parsedPayload = this.parseWebhook(payload, signature); if (parsedPayload.type !== 'payout') { throw new Error('Invalid webhook type, expected payout webhook'); } return parsedPayload; } } exports.WebhookService = WebhookService;