import { createContainer, getContainers, getBlobs, createBlob, uploadFile, deleteBlob, downloadFile, } from "../../../actions/azurestorage"; import { BlobServiceClient, ContainerClient } from "@azure/storage-blob"; import { DefaultAzureCredential, InteractiveBrowserCredential, EnvironmentCredential, ClientSecretCredential, } from "@azure/identity"; import middleware from "../middleware/middleware"; import nextConnect from "next-connect"; import CryptoJS from "crypto-js"; import { hashAPIPath } from "../../../actions"; const WORDKEY = process.env.HASHKEY; const ApiProxy = nextConnect(); ApiProxy.use(middleware); ApiProxy.get(async (req, res) => { var containerName = req.query.container; var blobName = req.query.blobname; var checkHash = req.query.hash; var checkquerypath = "/api/file/downloadblob?container=" + containerName + "&blobname=" + blobName; if (hashAPIPath(checkquerypath) == "&hash=" + checkHash) { const downloaded = await downloadFile(containerName, blobName); res.setHeader( "content-disposition", "attachment; filename=" + blobName ); return res.status(200).send(downloaded); } else { return res.status(400).json(); } }); async function streamToBuffer(readableStream) { return new Promise((resolve, reject) => { const chunks = []; readableStream.on("data", (data) => { chunks.push(data instanceof Buffer ? data : Buffer.from(data)); }); readableStream.on("end", () => { resolve(Buffer.concat(chunks)); }); readableStream.on("error", reject); }); } export const config = { api: { bodyParser: false, }, }; export default ApiProxy;