nodejs-cryptomus
Version:
A comprehensive Node.js client for the Cryptomus API
64 lines (63 loc) • 2.2 kB
JavaScript
;
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;