Skip to content

Commit 6f32b41

Browse files
authored
Merge pull request #24 from icerockdev/force-set-content-type
Force set object content type
2 parents 7da90d4 + 826adb0 commit 6f32b41

File tree

7 files changed

+54
-6
lines changed

7 files changed

+54
-6
lines changed

.env

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,3 +11,4 @@ GIF_TEST_OBJECT=100.gif
1111
PDF_TEST_OBJECT=100.pdf
1212
ZIP_TEST_OBJECT=100.zip
1313
BIN_TEST_OBJECT=100.bin
14+
SVG_TEST_OBJECT=100.svg

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ repositories {
1010
}
1111

1212
// Append dependency
13-
implementation("com.icerockdev:storage-service:0.9.0")
13+
implementation("com.icerockdev:storage-service:0.10.0")
1414
````
1515

1616
## Library usage

storage-service/build.gradle.kts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ apply(plugin = "java")
1717
apply(plugin = "kotlin")
1818

1919
group = "com.icerockdev"
20-
version = "0.9.0"
20+
version = "0.10.0"
2121

2222
val sourcesJar by tasks.registering(Jar::class) {
2323
archiveClassifier.set("sources")
@@ -78,7 +78,7 @@ publishing {
7878
developers {
7979
developer {
8080
id.set("YokiToki")
81-
name.set("Stanislav")
81+
name.set("Stanislav Karakovskii")
8282
email.set("skarakovski@icerockdev.com")
8383
}
8484

storage-service/src/main/kotlin/com/icerockdev/service/storage/s3/S3StorageImpl.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -222,7 +222,7 @@ class S3StorageImpl(private val client: S3Client, private val preSigner: S3Presi
222222
.key(key)
223223
.acl(ObjectCannedACL.PUBLIC_READ)
224224
.contentEncoding("UTF-8")
225-
.contentType(MimeTypeDetector.detect(file.inputStream).toString())
225+
.contentType(file.contentType ?: MimeTypeDetector.detect(file.inputStream).toString())
226226
.metadata(metadata ?: emptyMap())
227227
.contentLength(file.size)
228228
.build()

storage-service/src/main/kotlin/com/icerockdev/service/storage/s3/dto/FileObjectDto.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,6 @@ import java.io.BufferedInputStream
44

55
data class FileObjectDto(
66
val inputStream: BufferedInputStream,
7-
val size: Long
7+
val size: Long,
8+
val contentType: String? = null,
89
)

storage-service/src/test/kotlin/S3StorageTest.kt

Lines changed: 41 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -277,6 +277,44 @@ class S3StorageTest {
277277
}
278278
}
279279

280+
@Test
281+
fun testForceFileSizeAndType() {
282+
// init storage
283+
if (!storage.bucketExist(bucketName)) {
284+
storage.createBucket(bucketName)
285+
}
286+
287+
val (svgFileName, svgStream) = getFile(FileType.SVG)
288+
val mimeType = "image/svg+xml"
289+
val fileSize = svgStream.available().toLong()
290+
291+
// Check wrong cases
292+
assertFalse(storage.objectExists(bucketName, svgFileName))
293+
294+
// Put object to storage
295+
assertTrue(
296+
storage.put(
297+
bucketName, svgFileName, FileObjectDto(
298+
inputStream = svgStream.buffered(),
299+
size = fileSize,
300+
contentType = mimeType
301+
)
302+
)
303+
)
304+
305+
// Check object exist
306+
assertTrue(storage.objectExists(bucketName, svgFileName))
307+
308+
val svgObject = storage.get(bucketName, svgFileName)
309+
310+
assertEquals(mimeType, svgObject?.response()?.contentType())
311+
assertEquals(fileSize, svgObject?.response()?.contentLength())
312+
313+
assertTrue {
314+
storage.deleteBucketWithObjects(bucketName)
315+
}
316+
}
317+
280318
@Test
281319
fun testMetadata() {
282320
// init storage
@@ -565,6 +603,7 @@ class S3StorageTest {
565603
FileType.PDF -> dotenv["PDF_TEST_OBJECT"] ?: throw S3StorageException("PDF File not found")
566604
FileType.ZIP -> dotenv["ZIP_TEST_OBJECT"] ?: throw S3StorageException("ZIP File not found")
567605
FileType.BIN -> dotenv["BIN_TEST_OBJECT"] ?: throw S3StorageException("BIN File not found")
606+
FileType.SVG -> dotenv["SVG_TEST_OBJECT"] ?: throw S3StorageException("SVG File not found")
568607
}
569608

570609
return key to (classLoader.getResourceAsStream(fileName) ?: throw S3StorageException("File not readable"))
@@ -576,7 +615,8 @@ class S3StorageTest {
576615
PNG,
577616
PDF,
578617
ZIP,
579-
BIN;
618+
BIN,
619+
SVG;
580620
}
581621

582622
@Throws(IOException::class)
Lines changed: 6 additions & 0 deletions
Loading

0 commit comments

Comments
 (0)