From 1a2241c40e10193c5ff7008a7b7b36cc1d855d96 Mon Sep 17 00:00:00 2001 From: joonhoekim <26rote@gmail.com> Date: Tue, 25 Mar 2025 15:55:45 +0900 Subject: initial commit --- pages/api/po/createContractFile.ts | 57 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 pages/api/po/createContractFile.ts (limited to 'pages/api/po/createContractFile.ts') diff --git a/pages/api/po/createContractFile.ts b/pages/api/po/createContractFile.ts new file mode 100644 index 00000000..b74c95f2 --- /dev/null +++ b/pages/api/po/createContractFile.ts @@ -0,0 +1,57 @@ +export const config = { + api: { + bodyParser: true, // ✅ 이게 false면 안 됨! + }, +}; + +import type { NextApiRequest, NextApiResponse } from "next"; +import { downloadContractFile } from "@/lib/docuSign/docuSignFns"; +import path from "path"; +import fs from "fs"; + +export default async function handler( + req: NextApiRequest, + res: NextApiResponse +) { + if (req.method !== "POST") { + return res.status(405).end(); + } + + try { + const { envelopeId, fileName, filePath } = req.body; + + if (!envelopeId) { + return res + .status(500) + .json({ success: false, message: "Not use envelopeId" }); + } + + const docuSignStart = await downloadContractFile(envelopeId); + + const { result, buffer, error } = docuSignStart; + + if (result && buffer) { + const cleanedPath = filePath.replace(/^\/+/, ""); + const dirPath = path.resolve(process.cwd(), "public", cleanedPath); // 예: 'contracts/185/signatures' + const fullFilePath = path.join(dirPath, fileName); // 예: 'contracts/185/signatures/xxx.pdf' + + if (!fs.existsSync(dirPath)) { + fs.mkdirSync(dirPath, { recursive: true }); + } + + fs.writeFileSync(fullFilePath, buffer); + return res.status(200).json({ + success: result, + }); + } + + return res.status(200).json({ + success: result, + message: error?.message, + }); + } catch (error: any) { + res + .status(500) + .json({ success: false, message: error?.message || "Unknown error" }); + } +} -- cgit v1.2.3