UNPKG

chat-about-video

Version:

Chat about a video clip using ChatGPT hosted in OpenAI or Azure, or Gemini provided by Google

45 lines (44 loc) 2.36 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createAzureBlobStorageFileBatchUploader = void 0; const tslib_1 = require("tslib"); const storage_blob_1 = require("@azure/storage-blob"); const promise_utils_1 = require("@handy-common-utils/promise-utils"); const promises_1 = tslib_1.__importDefault(require("node:fs/promises")); const node_path_1 = tslib_1.__importDefault(require("node:path")); async function generateDownloadUrl(blockBlobClient, expirationSeconds) { const url = await blockBlobClient.generateSasUrl({ expiresOn: new Date(Date.now() + expirationSeconds * 1000), permissions: storage_blob_1.BlobSASPermissions.parse('r'), }); return url; } function createAzureBlobStorageFileBatchUploader(blobServiceClient, expirationSeconds, parallelism = 3) { return async (dir, relativePaths, containerName, blobPathPrefix) => { const containerClient = blobServiceClient.getContainerClient(containerName); if (!(await containerClient.exists())) { await containerClient.create(); } const blobNames = relativePaths.map((relativePath) => `${blobPathPrefix}${relativePath}`); // Upload each file to the container const downloadUrls = await (0, promise_utils_1.withConcurrency)(parallelism, relativePaths, async (fileName, i) => { const blobName = blobNames[i]; const blockBlobClient = containerClient.getBlockBlobClient(blobName); // Read the file as a buffer const fileContent = await promises_1.default.readFile(node_path_1.default.join(dir, fileName)); // Upload the buffer to Azure Blob Storage await blockBlobClient.upload(fileContent, fileContent.length, { blobHTTPHeaders: { blobContentType: 'application/octet-stream' }, }); return generateDownloadUrl(blockBlobClient, expirationSeconds); }); return { downloadUrls, cleanup: () => (0, promise_utils_1.inParallel)(parallelism, blobNames, async (blobName) => { const blockBlobClient = containerClient.getBlockBlobClient(blobName); await blockBlobClient.delete(); }), }; }; } exports.createAzureBlobStorageFileBatchUploader = createAzureBlobStorageFileBatchUploader;