import { getBlobs, createRepCompleteMessage } from "../../../actions/azurestorage"; import { hashAPIPath } from "../../../actions/core/hash"; import { consoleLogger } from "../../../actions/core/logger"; import { respondError, respondSuccess } from "../middleware/apiResponse"; import nextConnect from "next-connect"; import middleware from "../middleware/middleware"; const ApiProxy = nextConnect(); ApiProxy.use(middleware); ApiProxy.get(async (req, res) => { const containerName = req.query.container; const tempCaseRef = req.query.tempcaseref; const filename = req.query.repid; const checkHash = req.query.hash; if ( typeof containerName === "undefined" || containerName.length === 0 || typeof tempCaseRef === "undefined" || tempCaseRef.length === 0 || typeof filename === "undefined" || filename.length === 0 || typeof checkHash === "undefined" || checkHash.length === 0 ) { return respondError(res, { status: 400, code: "MISSING_REQUIRED_QUERY", message: "container, tempcaseref, repid and hash are required" }); } const hashCandidatePaths = [ "/api/file/createrepcompletemessage_api?container=" + containerName + "&tempcaseref=" + tempCaseRef + "&repid=" + filename, "/api/file/createrepcompletemessage_api?container=" + encodeURIComponent(containerName) + "&tempcaseref=" + encodeURIComponent(tempCaseRef) + "&repid=" + encodeURIComponent(filename) ]; const isHashValid = hashCandidatePaths.some( (candidatePath) => hashAPIPath(candidatePath) == "&hash=" + checkHash ); if (!isHashValid) { return respondError(res, { status: 400, code: "INVALID_HASH", message: "Invalid hash" }); } try { const data = await createRepCompleteMessage( containerName, tempCaseRef, filename ); return respondSuccess(res, data); } catch (error) { consoleLogger(error); return respondError(res, { status: 400, code: "CREATE_REP_COMPLETE_MESSAGE_FAILED", message: "Failed to create representation complete message" }); } }); export const config = { api: { bodyParser: false } }; export default ApiProxy;