aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAllan Wang <me@allanwang.ca>2019-09-08 01:58:10 -0700
committerGitHub <noreply@github.com>2019-09-08 01:58:10 -0700
commitf8b477b976cf858e1fff5dbb8f9de26ef3de1cd4 (patch)
tree9814e7f3f6ad1fe1261a51d0f0f0a4cfc7a2cede
parent81c1a249b847121f9552b4b309dbe8c730de1c14 (diff)
parented9dfdd76d90d1f9a4fd52d5f90ad790f671a776 (diff)
downloadfrost-f8b477b976cf858e1fff5dbb8f9de26ef3de1cd4.tar.gz
frost-f8b477b976cf858e1fff5dbb8f9de26ef3de1cd4.tar.bz2
frost-f8b477b976cf858e1fff5dbb8f9de26ef3de1cd4.zip
Merge pull request #1534 from AllanWang/image-extension
Add image extension checker
-rw-r--r--app/src/main/kotlin/com/pitchedapps/frost/activities/ImageActivity.kt19
-rw-r--r--app/src/main/kotlin/com/pitchedapps/frost/utils/L.kt7
2 files changed, 24 insertions, 2 deletions
diff --git a/app/src/main/kotlin/com/pitchedapps/frost/activities/ImageActivity.kt b/app/src/main/kotlin/com/pitchedapps/frost/activities/ImageActivity.kt
index 2e92c814..09620a54 100644
--- a/app/src/main/kotlin/com/pitchedapps/frost/activities/ImageActivity.kt
+++ b/app/src/main/kotlin/com/pitchedapps/frost/activities/ImageActivity.kt
@@ -112,6 +112,8 @@ class ImageActivity : KauBaseActivity() {
private lateinit var dragHelper: ViewDragHelper
+ private var imgExtension: String = ".jpg"
+
companion object {
/**
* Cache folder to store images
@@ -120,7 +122,6 @@ class ImageActivity : KauBaseActivity() {
private const val IMAGE_FOLDER = "images"
private const val TIME_FORMAT = "yyyyMMdd_HHmmss"
private const val IMG_TAG = "Frost"
- private const val IMG_EXTENSION = ".png"
const val PURGE_TIME: Long = 10 * 60 * 1000 // 10 min block
private val L = KauLoggerExtension("Image", com.pitchedapps.frost.utils.L)
@@ -295,6 +296,18 @@ class ImageActivity : KauBaseActivity() {
override fun clampViewPositionVertical(child: View, top: Int, dy: Int): Int = top
}
+ private fun getImageExtension(type: String?): String? {
+ if (type?.startsWith("image/") != true) {
+ return null
+ }
+ return when (type.substring(6)) {
+ "jpeg" -> ".jpg"
+ "png" -> ".png"
+ "gif" -> ".gif"
+ else -> null
+ }
+ }
+
@Throws(IOException::class)
private fun createPublicMediaFile(): File {
val timeStamp = SimpleDateFormat(TIME_FORMAT, Locale.getDefault()).format(Date())
@@ -303,7 +316,7 @@ class ImageActivity : KauBaseActivity() {
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES)
val frostDir = File(storageDir, IMG_TAG)
if (!frostDir.exists()) frostDir.mkdirs()
- return File.createTempFile(imageFileName, IMG_EXTENSION, frostDir)
+ return File.createTempFile(imageFileName, imgExtension, frostDir)
}
/**
@@ -353,6 +366,8 @@ class ImageActivity : KauBaseActivity() {
throw IOException("Unsuccessful response for image: ${response.peekBody(128).string()}")
}
+ imgExtension = getImageExtension(response.header("Content-Type")) ?: ".jpg"
+
val body = response.body() ?: throw IOException("Failed to retrieve image body")
file.copyFromInputStream(body.byteStream())
diff --git a/app/src/main/kotlin/com/pitchedapps/frost/utils/L.kt b/app/src/main/kotlin/com/pitchedapps/frost/utils/L.kt
index dd8cf594..e2fac291 100644
--- a/app/src/main/kotlin/com/pitchedapps/frost/utils/L.kt
+++ b/app/src/main/kotlin/com/pitchedapps/frost/utils/L.kt
@@ -18,6 +18,7 @@ package com.pitchedapps.frost.utils
import android.util.Log
import ca.allanwang.kau.logging.KauLogger
+import ca.allanwang.kau.logging.KauLoggerExtension
import com.bugsnag.android.Bugsnag
import com.pitchedapps.frost.BuildConfig
@@ -78,3 +79,9 @@ object L : KauLogger("Frost", {
}
}
}
+
+fun KauLoggerExtension.test(message: () -> Any?) {
+ if (BuildConfig.DEBUG) {
+ d { "Test1234 ${message()}" }
+ }
+} \ No newline at end of file