package.dist.src.webhookutils.index.js Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of sdk Show documentation
Show all versions of sdk Show documentation
Client SDK for Momento services
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.validateWebhookRequest = exports.RequestValidation = void 0;
const crypto = require("crypto");
var RequestValidation;
(function (RequestValidation) {
RequestValidation["VALID"] = "valid";
RequestValidation["INVALID"] = "invalid";
})(RequestValidation = exports.RequestValidation || (exports.RequestValidation = {}));
/**
* This function is a helper function that can be used to validate that webhook
* requests are coming from Momento. It is best practice to validate incoming
* request to a public webhook endpoint
* @param props {Props}
*/
const validateWebhookRequest = (props) => {
const hash = crypto.createHmac('SHA3-256', props.signingSecret);
const hashed = hash.update(props.body).digest('hex');
console.log('expected', props.signature);
console.log('actual', hashed);
if (hashed === props.signature) {
return RequestValidation.VALID;
}
return RequestValidation.INVALID;
};
exports.validateWebhookRequest = validateWebhookRequest;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvd2ViaG9va3V0aWxzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLGlDQUFpQztBQWlCakMsSUFBWSxpQkFHWDtBQUhELFdBQVksaUJBQWlCO0lBQzNCLG9DQUFlLENBQUE7SUFDZix3Q0FBbUIsQ0FBQTtBQUNyQixDQUFDLEVBSFcsaUJBQWlCLEdBQWpCLHlCQUFpQixLQUFqQix5QkFBaUIsUUFHNUI7QUFFRDs7Ozs7R0FLRztBQUNJLE1BQU0sc0JBQXNCLEdBQUcsQ0FBQyxLQUFZLEVBQXFCLEVBQUU7SUFDeEUsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ2hFLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNyRCxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDekMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDOUIsSUFBSSxNQUFNLEtBQUssS0FBSyxDQUFDLFNBQVMsRUFBRTtRQUM5QixPQUFPLGlCQUFpQixDQUFDLEtBQUssQ0FBQztLQUNoQztJQUNELE9BQU8saUJBQWlCLENBQUMsT0FBTyxDQUFDO0FBQ25DLENBQUMsQ0FBQztBQVRXLFFBQUEsc0JBQXNCLDBCQVNqQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNyeXB0byBmcm9tICdjcnlwdG8nO1xuXG50eXBlIFByb3BzID0ge1xuICAvKipcbiAgICogVGhlIHNpZ25pbmcgc2VjcmV0IGFzc29jaWF0ZWQgd2l0aCB0aGUgd2ViaG9va1xuICAgKi9cbiAgc2lnbmluZ1NlY3JldDogc3RyaW5nO1xuICAvKipcbiAgICogVGhlICdtb21lbnRvLXNpZ25hdHVyZScgaGVhZGVyIHBhc3NlZCB3aXRoIHRoZSByZXF1ZXN0XG4gICAqL1xuICBzaWduYXR1cmU6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBzdHJpbmdpZmllZCBib2R5IG9mIHRoZSByZXF1ZXN0XG4gICAqL1xuICBib2R5OiBzdHJpbmc7XG59O1xuXG5leHBvcnQgZW51bSBSZXF1ZXN0VmFsaWRhdGlvbiB7XG4gIFZBTElEID0gJ3ZhbGlkJyxcbiAgSU5WQUxJRCA9ICdpbnZhbGlkJyxcbn1cblxuLyoqXG4gKiBUaGlzIGZ1bmN0aW9uIGlzIGEgaGVscGVyIGZ1bmN0aW9uIHRoYXQgY2FuIGJlIHVzZWQgdG8gdmFsaWRhdGUgdGhhdCB3ZWJob29rXG4gKiByZXF1ZXN0cyBhcmUgY29taW5nIGZyb20gTW9tZW50by4gSXQgaXMgYmVzdCBwcmFjdGljZSB0byB2YWxpZGF0ZSBpbmNvbWluZ1xuICogcmVxdWVzdCB0byBhIHB1YmxpYyB3ZWJob29rIGVuZHBvaW50XG4gKiBAcGFyYW0gcHJvcHMge1Byb3BzfVxuICovXG5leHBvcnQgY29uc3QgdmFsaWRhdGVXZWJob29rUmVxdWVzdCA9IChwcm9wczogUHJvcHMpOiBSZXF1ZXN0VmFsaWRhdGlvbiA9PiB7XG4gIGNvbnN0IGhhc2ggPSBjcnlwdG8uY3JlYXRlSG1hYygnU0hBMy0yNTYnLCBwcm9wcy5zaWduaW5nU2VjcmV0KTtcbiAgY29uc3QgaGFzaGVkID0gaGFzaC51cGRhdGUocHJvcHMuYm9keSkuZGlnZXN0KCdoZXgnKTtcbiAgY29uc29sZS5sb2coJ2V4cGVjdGVkJywgcHJvcHMuc2lnbmF0dXJlKTtcbiAgY29uc29sZS5sb2coJ2FjdHVhbCcsIGhhc2hlZCk7XG4gIGlmIChoYXNoZWQgPT09IHByb3BzLnNpZ25hdHVyZSkge1xuICAgIHJldHVybiBSZXF1ZXN0VmFsaWRhdGlvbi5WQUxJRDtcbiAgfVxuICByZXR1cm4gUmVxdWVzdFZhbGlkYXRpb24uSU5WQUxJRDtcbn07XG4iXX0=
© 2015 - 2025 Weber Informatics LLC | Privacy Policy