Added delete method to s3 service (#62)

This commit is contained in:
Denis Kazantsev 2022-01-20 18:28:11 +03:00 committed by GitHub
parent 144671a392
commit 9bf9ae2695
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 21 additions and 1 deletions

View File

@ -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?
}

View File

@ -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"
}
}

View File

@ -0,0 +1,5 @@
package ru.touchin.s3.storage.services.dto
data class DeleteData(
val id: String,
)