From 9bf9ae26959ee88bf2a9cf3f198744ce99ebd4b0 Mon Sep 17 00:00:00 2001 From: Denis Kazantsev <51866756+denis14082000@users.noreply.github.com> Date: Thu, 20 Jan 2022 18:28:11 +0300 Subject: [PATCH] Added delete method to s3 service (#62) --- .../s3/storage/services/FileStorageService.kt | 2 ++ .../storage/services/S3FileStorageServiceImpl.kt | 15 ++++++++++++++- .../touchin/s3/storage/services/dto/DeleteData.kt | 5 +++++ 3 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 s3-storage/src/main/kotlin/ru/touchin/s3/storage/services/dto/DeleteData.kt diff --git a/s3-storage/src/main/kotlin/ru/touchin/s3/storage/services/FileStorageService.kt b/s3-storage/src/main/kotlin/ru/touchin/s3/storage/services/FileStorageService.kt index 2d0ce91..7ab23ec 100644 --- a/s3-storage/src/main/kotlin/ru/touchin/s3/storage/services/FileStorageService.kt +++ b/s3-storage/src/main/kotlin/ru/touchin/s3/storage/services/FileStorageService.kt @@ -1,5 +1,6 @@ package ru.touchin.s3.storage.services +import ru.touchin.s3.storage.services.dto.DeleteData import ru.touchin.s3.storage.services.dto.GetUrl import ru.touchin.s3.storage.services.dto.UploadData import java.net.URL @@ -7,6 +8,7 @@ import java.net.URL interface FileStorageService { fun upload(uploadData: UploadData) + fun delete(deleteData: DeleteData) fun getUrl(getUrl: GetUrl): URL? } diff --git a/s3-storage/src/main/kotlin/ru/touchin/s3/storage/services/S3FileStorageServiceImpl.kt b/s3-storage/src/main/kotlin/ru/touchin/s3/storage/services/S3FileStorageServiceImpl.kt index f30dc84..26da731 100644 --- a/s3-storage/src/main/kotlin/ru/touchin/s3/storage/services/S3FileStorageServiceImpl.kt +++ b/s3-storage/src/main/kotlin/ru/touchin/s3/storage/services/S3FileStorageServiceImpl.kt @@ -2,12 +2,14 @@ package ru.touchin.s3.storage.services import org.springframework.stereotype.Service import ru.touchin.s3.storage.properties.S3Properties +import ru.touchin.s3.storage.services.dto.DeleteData import ru.touchin.s3.storage.services.dto.GetUrl import ru.touchin.s3.storage.services.dto.UploadBytes import ru.touchin.s3.storage.services.dto.UploadData import ru.touchin.s3.storage.services.dto.UploadFile import software.amazon.awssdk.core.sync.RequestBody import software.amazon.awssdk.services.s3.S3Client +import software.amazon.awssdk.services.s3.model.DeleteObjectRequest import software.amazon.awssdk.services.s3.model.GetObjectRequest import software.amazon.awssdk.services.s3.model.PutObjectRequest import software.amazon.awssdk.services.s3.presigner.S3Presigner @@ -19,7 +21,7 @@ import java.net.URL class S3FileStorageServiceImpl( private val s3Properties: S3Properties, private val s3Client: S3Client, - private val s3Presigner: S3Presigner + private val s3Presigner: S3Presigner, ) : FileStorageService { private val folder = normalizeDirectoryPath(s3Properties.folder) @@ -39,6 +41,15 @@ class S3FileStorageServiceImpl( s3Client.putObject(putObjectRequest, requestBody) } + override fun delete(deleteData: DeleteData) { + val deleteObjectRequest = DeleteObjectRequest.builder() + .bucket(s3Properties.bucket) + .key(keyOf(deleteData.id)) + .build() + + s3Client.deleteObject(deleteObjectRequest) + } + override fun getUrl(getUrl: GetUrl): URL? { val getObjectRequest = GetObjectRequest.builder() .bucket(s3Properties.bucket) @@ -68,7 +79,9 @@ class S3FileStorageServiceImpl( } companion object { + private const val DEFAULT_CONTENT_TYPE = "application/octet-stream" + } } diff --git a/s3-storage/src/main/kotlin/ru/touchin/s3/storage/services/dto/DeleteData.kt b/s3-storage/src/main/kotlin/ru/touchin/s3/storage/services/dto/DeleteData.kt new file mode 100644 index 0000000..d50b565 --- /dev/null +++ b/s3-storage/src/main/kotlin/ru/touchin/s3/storage/services/dto/DeleteData.kt @@ -0,0 +1,5 @@ +package ru.touchin.s3.storage.services.dto + +data class DeleteData( + val id: String, +)