deepinfra
Version:
Official API wrapper for DeepInfra
56 lines (55 loc) • 1.9 kB
JavaScript
;
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;