From 79b6e650058c6e0ef54e20ad91f5c8c03b8c8f35 Mon Sep 17 00:00:00 2001 From: usbharu <64310155+usbharu@users.noreply.github.com> Date: Wed, 15 Nov 2023 20:50:03 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=E3=83=A1=E3=83=87=E3=82=A3=E3=82=A2?= =?UTF-8?q?=E3=81=AE=E3=83=AA=E3=83=8D=E3=83=BC=E3=83=A0=E3=82=92=E5=88=A5?= =?UTF-8?q?=E3=82=AF=E3=83=A9=E3=82=B9=E3=81=AB=E5=88=87=E3=82=8A=E5=87=BA?= =?UTF-8?q?=E3=81=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/media/MediaFileRenameService.kt | 14 ++++++++++++++ .../core/service/media/MediaServiceImpl.kt | 17 ++++++++++++++--- .../service/media/UUIDMediaFileRenameService.kt | 16 ++++++++++++++++ .../converter/image/ImageMediaProcessService.kt | 6 ++++++ 4 files changed, 50 insertions(+), 3 deletions(-) create mode 100644 src/main/kotlin/dev/usbharu/hideout/core/service/media/MediaFileRenameService.kt create mode 100644 src/main/kotlin/dev/usbharu/hideout/core/service/media/UUIDMediaFileRenameService.kt diff --git a/src/main/kotlin/dev/usbharu/hideout/core/service/media/MediaFileRenameService.kt b/src/main/kotlin/dev/usbharu/hideout/core/service/media/MediaFileRenameService.kt new file mode 100644 index 00000000..ea0ec53d --- /dev/null +++ b/src/main/kotlin/dev/usbharu/hideout/core/service/media/MediaFileRenameService.kt @@ -0,0 +1,14 @@ +package dev.usbharu.hideout.core.service.media + +interface MediaFileRenameService { + /** + * メディアをリネームします + * + * @param uploadName アップロードされた時点でのファイル名 + * @param uploadMimeType アップロードされた時点でのMimeType + * @param processedName 処理後のファイル名 + * @param processedMimeType 処理後のMimeType + * @return リネーム後のファイル名 + */ + fun rename(uploadName: String, uploadMimeType: MimeType, processedName: String, processedMimeType: MimeType): String +} diff --git a/src/main/kotlin/dev/usbharu/hideout/core/service/media/MediaServiceImpl.kt b/src/main/kotlin/dev/usbharu/hideout/core/service/media/MediaServiceImpl.kt index 005ea34f..a28a5fa3 100644 --- a/src/main/kotlin/dev/usbharu/hideout/core/service/media/MediaServiceImpl.kt +++ b/src/main/kotlin/dev/usbharu/hideout/core/service/media/MediaServiceImpl.kt @@ -21,7 +21,8 @@ open class MediaServiceImpl( private val mediaBlurhashService: MediaBlurhashService, private val mediaRepository: MediaRepository, private val mediaProcessServices: List, - private val remoteMediaDownloadService: RemoteMediaDownloadService + private val remoteMediaDownloadService: RemoteMediaDownloadService, + private val renameService: MediaFileRenameService ) : MediaService { override suspend fun uploadLocalMedia(mediaRequest: MediaRequest): EntityMedia { val fileName = mediaRequest.file.name @@ -50,7 +51,12 @@ open class MediaServiceImpl( ) val dataMediaSave = MediaSaveRequest( - process.filePath.fileName.toString(), + renameService.rename( + mediaRequest.file.name, + mimeType, + process.filePath.fileName.toString(), + process.fileMimeType + ), "", process.filePath, process.thumbnailPath @@ -101,7 +107,12 @@ open class MediaServiceImpl( val process = findMediaProcessor(mimeType).process(mimeType, remoteMedia.name, it.path, null) val mediaSaveRequest = MediaSaveRequest( - process.filePath.fileName.toString(), + renameService.rename( + remoteMedia.name, + mimeType, + process.filePath.fileName.toString(), + process.fileMimeType + ), "", process.filePath, process.thumbnailPath diff --git a/src/main/kotlin/dev/usbharu/hideout/core/service/media/UUIDMediaFileRenameService.kt b/src/main/kotlin/dev/usbharu/hideout/core/service/media/UUIDMediaFileRenameService.kt new file mode 100644 index 00000000..d891cb93 --- /dev/null +++ b/src/main/kotlin/dev/usbharu/hideout/core/service/media/UUIDMediaFileRenameService.kt @@ -0,0 +1,16 @@ +package dev.usbharu.hideout.core.service.media + +import org.springframework.beans.factory.annotation.Qualifier +import org.springframework.stereotype.Service +import java.util.* + +@Qualifier("uuid") +@Service +class UUIDMediaFileRenameService : MediaFileRenameService { + override fun rename( + uploadName: String, + uploadMimeType: MimeType, + processedName: String, + processedMimeType: MimeType + ): String = "${UUID.randomUUID()}.${uploadMimeType.subtype}.${processedMimeType.subtype}" +} diff --git a/src/main/kotlin/dev/usbharu/hideout/core/service/media/converter/image/ImageMediaProcessService.kt b/src/main/kotlin/dev/usbharu/hideout/core/service/media/converter/image/ImageMediaProcessService.kt index 0efa6c83..1401b752 100644 --- a/src/main/kotlin/dev/usbharu/hideout/core/service/media/converter/image/ImageMediaProcessService.kt +++ b/src/main/kotlin/dev/usbharu/hideout/core/service/media/converter/image/ImageMediaProcessService.kt @@ -10,6 +10,7 @@ import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.slf4j.MDCContext import kotlinx.coroutines.withContext import net.coobird.thumbnailator.Thumbnails +import org.slf4j.LoggerFactory import org.springframework.beans.factory.annotation.Qualifier import org.springframework.stereotype.Service import java.nio.file.Files @@ -83,6 +84,7 @@ class ImageMediaProcessService(private val imageMediaProcessorConfiguration: Ima tempFile.outputStream().use { if (ImageIO.write(bufferedImage, convertType, it).not()) { + logger.warn("Failed to save a temporary file. type: {} ,path: {}", convertType, tempFile) throw MediaProcessException("Failed to save a temporary file.") } } @@ -93,4 +95,8 @@ class ImageMediaProcessService(private val imageMediaProcessorConfiguration: Ima MimeType("image", convertType, FileType.Image).takeIf { genThumbnail } ) } + + companion object { + private val logger = LoggerFactory.getLogger(ImageMediaProcessService::class.java) + } }