@careevolution/orchestrate
Version:
A TypeScript client for the Orchestrate API
58 lines (57 loc) • 3.3 kB
JavaScript
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);
}