UNPKG

@careevolution/orchestrate

Version:

A TypeScript client for the Orchestrate API

63 lines (62 loc) 3.6 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createHttpHandler = createHttpHandler; exports.createIdentityHttpHandler = createIdentityHttpHandler; exports.createLocalHashingHttpHandler = createLocalHashingHttpHandler; const httpHandler_js_1 = require("./httpHandler.js"); const baseUrlEnvironmentVariable = "ORCHESTRATE_BASE_URL"; const identityUrlEnvironmentVariable = "ORCHESTRATE_IDENTITY_URL"; const identityLocalHashingUrlEnvironmentVariable = "ORCHESTRATE_IDENTITY_LOCAL_HASHING_URL"; const additionalHeadersEnvironmentVariable = "ORCHESTRATE_ADDITIONAL_HEADERS"; const apiKeyEnvironmentVariable = "ORCHESTRATE_API_KEY"; const identityApiKeyEnvironmentVariable = "ORCHESTRATE_IDENTITY_API_KEY"; const identityMetricsKeyEnvironmentVariable = "ORCHESTRATE_IDENTITY_METRICS_KEY"; function getPriorityFromEnvironment(argument, environmentVariable) { return argument || process.env[environmentVariable]; } function getPriorityBaseUrl(baseUrl) { return getPriorityFromEnvironment(baseUrl, baseUrlEnvironmentVariable) || "https://api.careevolutionapi.com"; } function getAdditionalHeaders() { if (process.env[additionalHeadersEnvironmentVariable]) { return JSON.parse(process.env[additionalHeadersEnvironmentVariable]); } return undefined; } function createHttpHandler(apiKey, baseUrl = undefined) { const additionalHeaders = getAdditionalHeaders(); const priorityBaseUrl = getPriorityBaseUrl(baseUrl); const defaultHeaders = Object.assign(Object.assign({}, additionalHeaders), { "Content-Type": "application/json", Accept: "application/json" }); const priorityApiKey = getPriorityFromEnvironment(apiKey, apiKeyEnvironmentVariable); if (priorityApiKey) { defaultHeaders["x-api-key"] = priorityApiKey; } return new httpHandler_js_1.HttpHandler(priorityBaseUrl, defaultHeaders); } function createIdentityHttpHandler(apiKey, metricsKey, baseUrl) { const additionalHeaders = getAdditionalHeaders(); const priorityUrl = getPriorityFromEnvironment(baseUrl, identityUrlEnvironmentVariable); const defaultHeaders = Object.assign(Object.assign({}, additionalHeaders), { "Content-Type": "application/json", Accept: "application/json" }); const priorityApiKey = getPriorityFromEnvironment(apiKey, identityApiKeyEnvironmentVariable); const priorityMetricsKey = getPriorityFromEnvironment(metricsKey, identityMetricsKeyEnvironmentVariable); if (!priorityUrl) { throw new Error(`Identity URL is required. Specify in the constructor or set '${identityUrlEnvironmentVariable}' environment variable.`); } if (priorityApiKey) { defaultHeaders["x-api-key"] = priorityApiKey; } if (priorityMetricsKey) { const headerMetricsKey = priorityMetricsKey.replace("Basic ", ""); defaultHeaders["Authorization"] = `Basic ${headerMetricsKey}`; } return new httpHandler_js_1.HttpHandler(priorityUrl, defaultHeaders); } function createLocalHashingHttpHandler(baseUrl) { const additionalHeaders = getAdditionalHeaders(); const priorityUrl = getPriorityFromEnvironment(baseUrl, identityLocalHashingUrlEnvironmentVariable); const defaultHeaders = Object.assign(Object.assign({}, additionalHeaders), { "Content-Type": "application/json", Accept: "application/json" }); if (!priorityUrl) { throw new Error(`Local hashing URL is required. Specify in the constructor or set '${identityLocalHashingUrlEnvironmentVariable}' environment variable.`); } return new httpHandler_js_1.HttpHandler(priorityUrl, defaultHeaders); }