Coverage Summary for Class: MindboxImageLoaderDefault (cloud.mindbox.mobile_sdk.pushes.handler.image)
| Class |
Method, %
|
Branch, %
|
Line, %
|
Instruction, %
|
| MindboxImageLoaderDefault |
33.3%
(1/3)
|
0%
(0/8)
|
5.6%
(1/18)
|
2.2%
(2/89)
|
| MindboxImageLoaderDefault$Companion |
|
| Total |
33.3%
(1/3)
|
0%
(0/8)
|
5.6%
(1/18)
|
2.2%
(2/89)
|
package cloud.mindbox.mobile_sdk.pushes.handler.image
import android.content.Context
import android.graphics.Bitmap
import android.graphics.BitmapFactory
import cloud.mindbox.mobile_sdk.logger.MindboxLoggerImpl
import cloud.mindbox.mobile_sdk.pushes.MindboxRemoteMessage
import cloud.mindbox.mobile_sdk.pushes.handler.MessageHandlingState
import java.net.URL
/**
* Default image loading implementation
*/
public fun MindboxImageLoader.Companion.default(): MindboxImageLoader = DefaultLoader
private val DefaultLoader: MindboxImageLoader = MindboxImageLoaderDefault()
internal class MindboxImageLoaderDefault : MindboxImageLoader {
companion object {
private const val IMAGE_CONNECTION_TIMEOUT = 30_000
}
override fun onLoadImage(
context: Context,
message: MindboxRemoteMessage,
state: MessageHandlingState,
): Bitmap? {
val imageUrl = message.imageUrl
val logMessage = buildString {
append("Image loading started, imageUrl=")
append(imageUrl)
if (imageUrl.isNullOrBlank()) {
append(" (Image upload is not required)")
}
}
MindboxLoggerImpl.d(this, logMessage)
if (imageUrl.isNullOrBlank()) return null
val connection = URL(imageUrl).openConnection().apply {
readTimeout = IMAGE_CONNECTION_TIMEOUT
connectTimeout = IMAGE_CONNECTION_TIMEOUT
}
val bitmap = BitmapFactory.decodeStream(connection.getInputStream())
MindboxLoggerImpl.d(this, "Image successfully decoded, bitmap=$bitmap")
return bitmap
}
override fun toString(): String {
return "DefaultLoader"
}
}