UNPKG

@heroku/salesforce-sdk-nodejs

Version:

Salesforce SDK for Heroku Apps.

43 lines (42 loc) 1.82 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.init = init; exports.parseRequest = parseRequest; 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 herokuIntegration = require("./add-ons/heroku-integration.js"); const dataCloud = require("./sdk/data-cloud-api.js"); const CONTENT_TYPE_HEADER = 'Content-Type'; const X_CLIENT_CONTEXT_HEADER = 'x-client-context'; function init() { return { addons: { herokuIntegration }, dataCloud, 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); 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) }; }