@heroku/salesforce-sdk-nodejs
Version:
Salesforce SDK for Heroku Apps.
43 lines (42 loc) • 1.82 kB
JavaScript
;
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)
};
}