UNPKG

@careevolution/orchestrate

Version:

A TypeScript client for the Orchestrate API

72 lines (71 loc) 4.28 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"; const timeoutEnvironmentVariable = "ORCHESTRATE_TIMEOUT_MS"; const defaultTimeoutMs = 120000; function getPriorityFromEnvironment(argument, environmentVariable) { return argument || process.env[environmentVariable]; } function getPriorityBaseUrl(baseUrl) { return getPriorityFromEnvironment(baseUrl, baseUrlEnvironmentVariable) || "https://api.careevolutionapi.com"; } function getPriorityTimeout(timeoutMs) { const envTimeout = getPriorityFromEnvironment(timeoutMs === null || timeoutMs === void 0 ? void 0 : timeoutMs.toString(), timeoutEnvironmentVariable); return envTimeout ? parseInt(envTimeout, 10) : (timeoutMs !== null && timeoutMs !== void 0 ? timeoutMs : defaultTimeoutMs); } function getAdditionalHeaders() { if (process.env[additionalHeadersEnvironmentVariable]) { return JSON.parse(process.env[additionalHeadersEnvironmentVariable]); } return undefined; } function createHttpHandler(apiKey, baseUrl, timeoutMs) { const additionalHeaders = getAdditionalHeaders(); const priorityBaseUrl = getPriorityBaseUrl(baseUrl); const priorityTimeoutMs = getPriorityTimeout(timeoutMs); 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, priorityTimeoutMs); } function createIdentityHttpHandler(apiKey, metricsKey, baseUrl, timeoutMs) { const additionalHeaders = getAdditionalHeaders(); const priorityUrl = getPriorityFromEnvironment(baseUrl, identityUrlEnvironmentVariable); const priorityTimeoutMs = getPriorityTimeout(timeoutMs); 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, priorityTimeoutMs); } function createLocalHashingHttpHandler(baseUrl, timeoutMs) { const additionalHeaders = getAdditionalHeaders(); const priorityUrl = getPriorityFromEnvironment(baseUrl, identityLocalHashingUrlEnvironmentVariable); const priorityTimeoutMs = getPriorityTimeout(timeoutMs); 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, priorityTimeoutMs); }