UNPKG

deepinfra

Version:
56 lines (55 loc) 1.9 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.DeepInfraClient = void 0; const axios_1 = __importDefault(require("axios")); const client_1 = require("../lib/constants/client"); const client_config_1 = require("../lib/types/common/client-config"); class DeepInfraClient { url; authToken; axiosClient; clientConfig; constructor(url, authToken, config) { this.url = url; this.authToken = authToken; this.axiosClient = axios_1.default.create({ baseURL: this.url, }); this.clientConfig = new client_config_1.ClientConfig(config); } async backoffDelay(attempt) { const delay = attempt === 1 ? this.clientConfig.initialBackoff : this.clientConfig.subsequentBackoff; return new Promise((resolve) => setTimeout(resolve, delay)); } async post(data, config) { const headers = { "content-type": "application/json", ...config?.headers, "User-Agent": client_1.USER_AGENT, Authorization: `Bearer ${this.authToken}`, }; for (let attempt = 0; attempt <= this.clientConfig.maxRetries; attempt++) { try { return await this.axiosClient.post(this.url, data, { ...config, headers, }); } catch (error) { if (attempt < this.clientConfig.maxRetries) { await this.backoffDelay(attempt); } else { throw error; } } } throw new Error("Maximum retries exceeded"); } } exports.DeepInfraClient = DeepInfraClient;