From 7953fb5c121911106b87eadb83048b8b7a6c359d Mon Sep 17 00:00:00 2001 From: metalicn20 Date: Sun, 16 Jan 2022 12:30:09 +0330 Subject: [PATCH 1/2] Add storage module's volume --- Deployment/docker-compose.yml | 2 ++ .../opex/storage/app/controller/FileController.kt | 13 +++++++++---- .../storage-app/src/main/resources/application.yml | 1 + 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/Deployment/docker-compose.yml b/Deployment/docker-compose.yml index 56da1276c..1bbdb3396 100644 --- a/Deployment/docker-compose.yml +++ b/Deployment/docker-compose.yml @@ -269,6 +269,8 @@ services: - JAVA_OPTS=-Xmx256m -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=1044 - SPRING_PROFILES_DEFAULT=docker - CONSUL_HOST=consul + volumes: + - $DATA/storage-data:/opex-storage depends_on: - consul deploy: diff --git a/storage/storage-app/src/main/kotlin/co/nilin/opex/storage/app/controller/FileController.kt b/storage/storage-app/src/main/kotlin/co/nilin/opex/storage/app/controller/FileController.kt index a8216d35d..7433aa417 100644 --- a/storage/storage-app/src/main/kotlin/co/nilin/opex/storage/app/controller/FileController.kt +++ b/storage/storage-app/src/main/kotlin/co/nilin/opex/storage/app/controller/FileController.kt @@ -5,6 +5,7 @@ import co.nilin.opex.storage.app.service.StringToHashService import co.nilin.opex.utility.error.data.OpexError import co.nilin.opex.utility.error.data.OpexException import kotlinx.coroutines.reactive.awaitFirstOrNull +import org.springframework.beans.factory.annotation.Value import org.springframework.http.MediaType import org.springframework.http.ResponseEntity import org.springframework.http.codec.multipart.FilePart @@ -17,27 +18,31 @@ import java.nio.file.Paths import java.util.* @RestController -class FileController(private val storageService: StorageService, private val stringToHashService: StringToHashService) { +class FileController( + private val storageService: StorageService, + private val stringToHashService: StringToHashService, + @Value("\${app.storage-path}") private val storagePath: String +) { data class FileUploadResponse(val path: String) private suspend fun upload(uid: String, file: FilePart?, nameWithoutExtension: String? = null): FileUploadResponse { if (file == null) throw OpexException(OpexError.BadRequest, "File Not Provided") val filename = file.filename() val ext = filename.replace(Regex(".+(?<=\\.)"), "") - if (ext.toLowerCase() !in listOf("jpg", "jpeg", "png", "mp4", "mov", "pdf", "gif")) + if (ext.toLowerCase() !in listOf("jpg", "jpeg", "png", "mp4", "mov")) throw OpexException(OpexError.BadRequest, "Invalid File Format") val uri = if (nameWithoutExtension == null) { "$uid/$filename" } else { "$uid/$nameWithoutExtension.$ext" } - val path = Paths.get("").resolve("/opex-storage/$uri").toString() + val path = Paths.get("").resolve("$storagePath/$uri").toString() storageService.store(path, file) return FileUploadResponse("/$uri") } private suspend fun download(uid: String, filename: String? = null): ResponseEntity { - val path = Paths.get("").resolve("/opex-storage/$uid/$filename") + val path = Paths.get("").resolve("$storagePath/$uid/$filename") if (!storageService.exists(path.toString())) throw OpexException(OpexError.NotFound) val file = storageService.load(path.toString()) val mimeType = URLConnection.getFileNameMap().getContentTypeFor(path.fileName.toString()) diff --git a/storage/storage-app/src/main/resources/application.yml b/storage/storage-app/src/main/resources/application.yml index 4b6ce48e6..ca206991c 100644 --- a/storage/storage-app/src/main/resources/application.yml +++ b/storage/storage-app/src/main/resources/application.yml @@ -22,6 +22,7 @@ spring: prefer-ip-address: true app: + storage-path: /storage cors: allowed-hosts: https://opex.dev, http://localhost:3000 allowed-patterns: http://192.168.* From 71af658e0d38d97781e04182fc8d0d4df21b5497 Mon Sep 17 00:00:00 2001 From: metalicn20 Date: Sun, 16 Jan 2022 12:38:43 +0330 Subject: [PATCH 2/2] Fix storage volume address --- Deployment/docker-compose.yml | 3 ++- .../co/nilin/opex/storage/app/controller/FileController.kt | 6 +++--- storage/storage-app/src/main/resources/application.yml | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/Deployment/docker-compose.yml b/Deployment/docker-compose.yml index 1bbdb3396..bc7418e20 100644 --- a/Deployment/docker-compose.yml +++ b/Deployment/docker-compose.yml @@ -269,8 +269,9 @@ services: - JAVA_OPTS=-Xmx256m -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=1044 - SPRING_PROFILES_DEFAULT=docker - CONSUL_HOST=consul + - ROOT_DIR=/storage volumes: - - $DATA/storage-data:/opex-storage + - $DATA/storage-data:/storage depends_on: - consul deploy: diff --git a/storage/storage-app/src/main/kotlin/co/nilin/opex/storage/app/controller/FileController.kt b/storage/storage-app/src/main/kotlin/co/nilin/opex/storage/app/controller/FileController.kt index 7433aa417..8fbc29995 100644 --- a/storage/storage-app/src/main/kotlin/co/nilin/opex/storage/app/controller/FileController.kt +++ b/storage/storage-app/src/main/kotlin/co/nilin/opex/storage/app/controller/FileController.kt @@ -21,7 +21,7 @@ import java.util.* class FileController( private val storageService: StorageService, private val stringToHashService: StringToHashService, - @Value("\${app.storage-path}") private val storagePath: String + @Value("\${app.root-dir}") private val rootDir: String ) { data class FileUploadResponse(val path: String) @@ -36,13 +36,13 @@ class FileController( } else { "$uid/$nameWithoutExtension.$ext" } - val path = Paths.get("").resolve("$storagePath/$uri").toString() + val path = Paths.get("").resolve("$rootDir/$uri").toString() storageService.store(path, file) return FileUploadResponse("/$uri") } private suspend fun download(uid: String, filename: String? = null): ResponseEntity { - val path = Paths.get("").resolve("$storagePath/$uid/$filename") + val path = Paths.get("").resolve("$rootDir/$uid/$filename") if (!storageService.exists(path.toString())) throw OpexException(OpexError.NotFound) val file = storageService.load(path.toString()) val mimeType = URLConnection.getFileNameMap().getContentTypeFor(path.fileName.toString()) diff --git a/storage/storage-app/src/main/resources/application.yml b/storage/storage-app/src/main/resources/application.yml index ca206991c..d0a341d9e 100644 --- a/storage/storage-app/src/main/resources/application.yml +++ b/storage/storage-app/src/main/resources/application.yml @@ -22,7 +22,7 @@ spring: prefer-ip-address: true app: - storage-path: /storage + root-dir: ${ROOT_DIR} cors: allowed-hosts: https://opex.dev, http://localhost:3000 allowed-patterns: http://192.168.*