( fileId: string, fileName: string, pageId?: string, messageId?: string )
| 35 | } |
| 36 | |
| 37 | function buildStoredRelativePath( |
| 38 | fileId: string, |
| 39 | fileName: string, |
| 40 | pageId?: string, |
| 41 | messageId?: string |
| 42 | ): string { |
| 43 | const safeFileId = validatePathSegment(fileId, 'file ID') |
| 44 | const extension = path.extname(fileName) |
| 45 | |
| 46 | if (pageId && messageId) { |
| 47 | const safePageId = validatePathSegment(pageId, 'page ID') |
| 48 | const safeMessageId = validatePathSegment(messageId, 'message ID') |
| 49 | return path.posix.join(safePageId, safeMessageId, `${safeFileId}${extension}`) |
| 50 | } |
| 51 | |
| 52 | return path.posix.join('temp', `${safeFileId}${extension}`) |
| 53 | } |
| 54 | |
| 55 | async function moveFile(sourcePath: string, targetPath: string): Promise<void> { |
| 56 | try { |
no test coverage detected