UNPKG

@heroku/applink

Version:

Applink SDK for Heroku Apps.

53 lines (52 loc) 2.25 kB
"use strict"; 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; }