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