UNPKG

mindee

Version:

Mindee Client Library for Node.js

86 lines (85 loc) 3.51 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.ApiSettings = exports.TIMEOUT_DEFAULT = exports.STANDARD_API_OWNER = exports.API_HOST_ENVVAR_NAME = exports.API_KEY_ENVVAR_NAME = void 0; /* eslint-disable @typescript-eslint/naming-convention */ const logger_1 = require("../logger"); const package_json_1 = require("../../package.json"); const os = __importStar(require("os")); exports.API_KEY_ENVVAR_NAME = "MINDEE_API_KEY"; exports.API_HOST_ENVVAR_NAME = "MINDEE_API_HOST"; exports.STANDARD_API_OWNER = "mindee"; exports.TIMEOUT_DEFAULT = 120; const DEFAULT_MINDEE_API_HOST = "api.mindee.net"; class ApiSettings { constructor({ apiKey = "", }) { if (!apiKey || apiKey.length === 0) { this.apiKey = this.apiKeyFromEnv(); } else { this.apiKey = apiKey; } if (!this.apiKey || this.apiKey.length === 0) { throw new Error("Your API key could not be set, check your Client Configuration\n." + `You can set this using the ${exports.API_KEY_ENVVAR_NAME} environment variable.`); } this.baseHeaders = { "User-Agent": this.getUserAgent(), Authorization: `Token ${this.apiKey}`, }; this.hostname = this.hostnameFromEnv(); this.timeout = process.env.MINDEE_REQUEST_TIMEOUT ? parseInt(process.env.MINDEE_REQUEST_TIMEOUT) : exports.TIMEOUT_DEFAULT; } getUserAgent() { let platform = os.type().toLowerCase(); if (platform.includes("darwin")) { platform = "macos"; } else if (platform.includes("window")) { platform = "windows"; } else if (platform.includes("bsd")) { platform = "bsd"; } return `mindee-api-nodejs@v${package_json_1.version} nodejs-${process.version} ${platform}`; } apiKeyFromEnv() { const envVarValue = process.env[exports.API_KEY_ENVVAR_NAME]; if (envVarValue) { logger_1.logger.debug(`Set API key from environment: ${exports.API_KEY_ENVVAR_NAME}`); return envVarValue; } return ""; } hostnameFromEnv() { const envVarValue = process.env[exports.API_HOST_ENVVAR_NAME]; if (envVarValue) { logger_1.logger.debug(`Set the API hostname to ${envVarValue}`); return envVarValue; } return DEFAULT_MINDEE_API_HOST; } } exports.ApiSettings = ApiSettings;