UNPKG

@maximai/maxim-js

Version:

Maxim AI JS SDK. Visit https://getmaxim.ai for more info.

72 lines 2.94 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.MaximAttachmentAPI = void 0; const maxim_1 = require("./maxim"); class MaximAttachmentAPI extends maxim_1.MaximAPI { constructor(baseUrl, apiKey) { super(baseUrl, apiKey); } async getUploadUrl(key, mimeType, size) { return new Promise((resolve, reject) => { this.fetch(`/api/sdk/v1/log-repositories/attachments/upload-url?key=${key}&mimeType=${mimeType}&size=${size}`) .then((response) => { if ("error" in response) { reject(response.error); } else { resolve(response.data); } }) .catch((error) => { reject(error); }); }); } async uploadToSignedUrl(url, data, mimeType) { return new Promise((resolve, reject) => { const parsedUrl = new URL(url); const isLocalhost = parsedUrl.hostname === "localhost"; const requestModule = isLocalhost ? require("http") : require("https"); const makeRequest = (retryCount = 0) => { const options = { hostname: parsedUrl.hostname, port: isLocalhost ? parsedUrl.port || 3000 : 443, path: parsedUrl.pathname + parsedUrl.search, method: "PUT", headers: { "Content-Type": mimeType, "Content-Length": data.length, }, }; const req = requestModule.request(options, (res) => { if (res.statusCode >= 200 && res.statusCode < 300) { resolve(); } else { if (retryCount < 3) { console.warn(`[MaximSDK] Upload failed with status ${res.statusCode}, retrying (${retryCount + 1}/3)...`); makeRequest(retryCount + 1); } else { reject(new Error(`Failed to upload file: HTTP status ${res.statusCode} after 3 retries`)); } } }); req.on("error", (error) => { if (retryCount < 3) { console.warn(`[MaximSDK] Upload failed with error: ${error.message}, retrying (${retryCount + 1}/3)...`); makeRequest(retryCount + 1); } else { reject(error); } }); req.write(data); req.end(); }; makeRequest(); }); } } exports.MaximAttachmentAPI = MaximAttachmentAPI; //# sourceMappingURL=attachment.js.map