From 11586a8fb26d20473f86511c5c8cd421a654c36e Mon Sep 17 00:00:00 2001 From: "DESKTOP-1R2VSQH\\Lenovo ThinkPad E490" Date: Tue, 28 Oct 2025 13:32:53 +0700 Subject: [PATCH] fix(ex/retirement): document --- src/controllers/ExRetirementController.ts | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/controllers/ExRetirementController.ts b/src/controllers/ExRetirementController.ts index 7a3292f9..880a8477 100644 --- a/src/controllers/ExRetirementController.ts +++ b/src/controllers/ExRetirementController.ts @@ -100,7 +100,7 @@ export class ExRetirementController extends Controller { } @Get("/document/{documentId}") - async getDocument(@Path("documentId") officerDocumentID: string) { + async getDocument(@Path("documentId") officerDocumentID: string, @Request() req: any) { let retryCount = 0; const maxRetries = 2; while (retryCount < maxRetries) { @@ -118,8 +118,18 @@ export class ExRetirementController extends Controller { headers: { Authorization: `Bearer ${token}`, }, + responseType: "arraybuffer", }); - return res.data; + + if (!req.res.headersSent && !req.res.destroyed) { + // Set response headers + req.res.setHeader("Content-Type", "application/pdf"); + req.res.setHeader("Content-Disposition", `inline; filename="${officerDocumentID}.pdf"`); + req.res.setHeader("Content-Length", res.data.byteLength.toString()); + + req.res.end(Buffer.from(res.data)); + return; + } } catch (error: any) { if (error.response?.status === 500 && retryCount < maxRetries - 1) { TokenCache.delete(`${clientId}:${clientSecret}`);