Added delete method to s3 service (#62)
This commit is contained in:
parent
144671a392
commit
9bf9ae2695
|
|
@ -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?
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,5 @@
|
|||
package ru.touchin.s3.storage.services.dto
|
||||
|
||||
data class DeleteData(
|
||||
val id: String,
|
||||
)
|
||||
Loading…
Reference in New Issue