@hubspot/api-client
Version:
NodeJS v3 [HubSpot API](https://developers.hubspot.com/docs/api/overview) SDK(Client) files
47 lines • 2.21 kB
JavaScript
;
var __rest = (this && this.__rest) || function (s, e) {
var t = {};
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
t[p] = s[p];
if (s != null && typeof Object.getOwnPropertySymbols === "function")
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
t[p[i]] = s[p[i]];
}
return t;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.Signature = void 0;
const crypto = require("crypto");
class Signature {
static isValid(_a) {
var { method = 'POST', signatureVersion = 'v1' } = _a, options = __rest(_a, ["method", "signatureVersion"]);
const hash = Signature.getSignature(method, signatureVersion, options);
if (signatureVersion === 'v3') {
const currentTime = Date.now();
if (options.timestamp === undefined || currentTime - options.timestamp > Signature.MAX_ALLOWED_TIMESTAMP) {
throw new Error('Timestamp is invalid, reject request');
}
}
return options.signature === hash;
}
static getSignature(method, signatureVersion, options) {
let sourceString = null;
switch (signatureVersion) {
case 'v1':
sourceString = options.clientSecret + options.requestBody;
return crypto.createHash('sha256').update(sourceString).digest('hex');
case 'v2':
sourceString = options.clientSecret + method + options.url + options.requestBody;
return crypto.createHash('sha256').update(sourceString).digest('hex');
case 'v3':
sourceString = method + options.url + options.requestBody + options.timestamp;
return crypto.createHmac('sha256', options.clientSecret).update(sourceString).digest('base64');
default:
throw new Error(`Not supported signature version: ${signatureVersion}`);
}
}
}
exports.Signature = Signature;
Signature.MAX_ALLOWED_TIMESTAMP = 300000;
//# sourceMappingURL=signature.js.map