@heroku/applink
Version:
Applink SDK for Heroku Apps.
53 lines (52 loc) • 2.25 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.HttpResponseError = void 0;
exports.init = init;
exports.parseRequest = parseRequest;
exports.parseDataActionEvent = parseDataActionEvent;
const context_js_1 = require("./sdk/context.js");
const invocation_event_js_1 = require("./sdk/invocation-event.js");
const logger_js_1 = require("./sdk/logger.js");
const heroku_applink_js_1 = require("./add-ons/heroku-applink.js");
const request_js_1 = require("./utils/request.js");
Object.defineProperty(exports, "HttpResponseError", { enumerable: true, get: function () { return request_js_1.HttpResponseError; } });
const CONTENT_TYPE_HEADER = "Content-Type";
const X_CLIENT_CONTEXT_HEADER = "x-client-context";
function init() {
return {
addons: {
applink: {
getAuthorization: heroku_applink_js_1.getAuthorization,
},
},
dataCloud: {
parseDataActionEvent,
},
salesforce: {
parseRequest,
},
};
}
function parseRequest(headers, body, log) {
if (!headers) {
throw Error(`Request headers not provided`);
}
const encodedClientContext = headers[X_CLIENT_CONTEXT_HEADER];
if (!encodedClientContext) {
throw Error(`Required ${X_CLIENT_CONTEXT_HEADER} header not found`);
}
const clientContext = JSON.parse(Buffer.from(encodedClientContext, "base64").toString("utf8"));
if (!clientContext.userContext) {
throw Error(`Required UserContext not found on ${X_CLIENT_CONTEXT_HEADER}`);
}
const context = new context_js_1.ContextImpl(clientContext.accessToken, clientContext.apiVersion, clientContext.requestId, clientContext.namespace, clientContext.orgId, clientContext.orgDomainUrl, clientContext.userContext.userId, clientContext.userContext.username, "SalesforceOrg");
const invocationEvent = new invocation_event_js_1.InvocationEventImpl(body || "", headers[CONTENT_TYPE_HEADER] || "application/json", context.id, new Date().getTime() + "");
return {
event: invocationEvent,
context,
logger: log || new logger_js_1.LoggerImpl(context.id),
};
}
function parseDataActionEvent(payload) {
return payload;
}