Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .env
Original file line number Diff line number Diff line change
Expand Up @@ -11,3 +11,4 @@ GIF_TEST_OBJECT=100.gif
PDF_TEST_OBJECT=100.pdf
ZIP_TEST_OBJECT=100.zip
BIN_TEST_OBJECT=100.bin
SVG_TEST_OBJECT=100.svg
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ repositories {
}

// Append dependency
implementation("com.icerockdev:storage-service:0.9.0")
implementation("com.icerockdev:storage-service:0.10.0")
````

## Library usage
Expand Down
4 changes: 2 additions & 2 deletions storage-service/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ apply(plugin = "java")
apply(plugin = "kotlin")

group = "com.icerockdev"
version = "0.9.0"
version = "0.10.0"

val sourcesJar by tasks.registering(Jar::class) {
archiveClassifier.set("sources")
Expand Down Expand Up @@ -78,7 +78,7 @@ publishing {
developers {
developer {
id.set("YokiToki")
name.set("Stanislav")
name.set("Stanislav Karakovskii")
email.set("skarakovski@icerockdev.com")
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -222,7 +222,7 @@ class S3StorageImpl(private val client: S3Client, private val preSigner: S3Presi
.key(key)
.acl(ObjectCannedACL.PUBLIC_READ)
.contentEncoding("UTF-8")
.contentType(MimeTypeDetector.detect(file.inputStream).toString())
.contentType(file.contentType ?: MimeTypeDetector.detect(file.inputStream).toString())
.metadata(metadata ?: emptyMap())
.contentLength(file.size)
.build()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,6 @@ import java.io.BufferedInputStream

data class FileObjectDto(
val inputStream: BufferedInputStream,
val size: Long
val size: Long,
val contentType: String? = null,
)
42 changes: 41 additions & 1 deletion storage-service/src/test/kotlin/S3StorageTest.kt
Original file line number Diff line number Diff line change
Expand Up @@ -277,6 +277,44 @@ class S3StorageTest {
}
}

@Test
fun testForceFileSizeAndType() {
// init storage
if (!storage.bucketExist(bucketName)) {
storage.createBucket(bucketName)
}

val (svgFileName, svgStream) = getFile(FileType.SVG)
val mimeType = "image/svg+xml"
val fileSize = svgStream.available().toLong()

// Check wrong cases
assertFalse(storage.objectExists(bucketName, svgFileName))

// Put object to storage
assertTrue(
storage.put(
bucketName, svgFileName, FileObjectDto(
inputStream = svgStream.buffered(),
size = fileSize,
contentType = mimeType
)
)
)

// Check object exist
assertTrue(storage.objectExists(bucketName, svgFileName))

val svgObject = storage.get(bucketName, svgFileName)

assertEquals(mimeType, svgObject?.response()?.contentType())
assertEquals(fileSize, svgObject?.response()?.contentLength())

assertTrue {
storage.deleteBucketWithObjects(bucketName)
}
}

@Test
fun testMetadata() {
// init storage
Expand Down Expand Up @@ -565,6 +603,7 @@ class S3StorageTest {
FileType.PDF -> dotenv["PDF_TEST_OBJECT"] ?: throw S3StorageException("PDF File not found")
FileType.ZIP -> dotenv["ZIP_TEST_OBJECT"] ?: throw S3StorageException("ZIP File not found")
FileType.BIN -> dotenv["BIN_TEST_OBJECT"] ?: throw S3StorageException("BIN File not found")
FileType.SVG -> dotenv["SVG_TEST_OBJECT"] ?: throw S3StorageException("SVG File not found")
}

return key to (classLoader.getResourceAsStream(fileName) ?: throw S3StorageException("File not readable"))
Expand All @@ -576,7 +615,8 @@ class S3StorageTest {
PNG,
PDF,
ZIP,
BIN;
BIN,
SVG;
}

@Throws(IOException::class)
Expand Down
6 changes: 6 additions & 0 deletions storage-service/src/test/resources/100.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.