UNPKG

@careevolution/orchestrate

Version:

A TypeScript client for the Orchestrate API

58 lines (57 loc) 3.3 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"; 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; } export 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(priorityBaseUrl, defaultHeaders); } export 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(priorityUrl, defaultHeaders); } export 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(priorityUrl, defaultHeaders); }