Coverage Summary for Class: WebViewParamsDeserializer (cloud.mindbox.mobile_sdk.inapp.data.dto.deserializers)
| Class |
Method, %
|
Branch, %
|
Line, %
|
Instruction, %
|
| WebViewParamsDeserializer |
100%
(4/4)
|
87.5%
(14/16)
|
93.3%
(14/15)
|
95.3%
(82/86)
|
| WebViewParamsDeserializer$Companion |
|
| Total |
100%
(4/4)
|
87.5%
(14/16)
|
93.3%
(14/15)
|
95.3%
(82/86)
|
package cloud.mindbox.mobile_sdk.inapp.data.dto.deserializers
import com.google.gson.Gson
import com.google.gson.JsonDeserializationContext
import com.google.gson.JsonDeserializer
import com.google.gson.JsonElement
import java.lang.reflect.Type
internal class WebViewParamsDeserializer : JsonDeserializer<Map<String, String>?> {
override fun deserialize(
json: JsonElement,
typeOfT: Type,
context: JsonDeserializationContext
): Map<String, String>? {
if (json.isJsonNull) return null
if (!json.isJsonObject) return emptyMap()
return json.asJsonObject.entrySet().mapNotNull { (key, value) ->
value.toParamString()?.let { key to it }
}.toMap()
}
private fun JsonElement.toParamString(): String? {
if (isJsonNull) return null
return when {
isJsonPrimitive -> when {
asJsonPrimitive.isString -> asString
asJsonPrimitive.isNumber -> asNumber.toString()
asJsonPrimitive.isBoolean -> asBoolean.toString()
else -> asString
}
else -> GSON.toJson(this)
}
}
private companion object {
private val GSON = Gson()
}
}