UNPKG

@careevolution/orchestrate

Version:

A TypeScript client for the Orchestrate API

67 lines (66 loc) 3.98 kB
import { HttpHandler } from "./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; } export 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(priorityBaseUrl, defaultHeaders, priorityTimeoutMs); } export 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(priorityUrl, defaultHeaders, priorityTimeoutMs); } export 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(priorityUrl, defaultHeaders, priorityTimeoutMs); }