Coverage Summary for Class: CookieReceiver (kweb)

Class Method, % Branch, % Line, % Instruction, %
CookieReceiver 4.2% (1/24) 0% (0/10) 5.4% (2/37) 1.4% (7/503)
CookieReceiver$getString$1
Total 4.2% (1/24) 0% (0/10) 5.4% (2/37) 1.4% (7/503)


 package kweb
 
 import kotlinx.serialization.json.*
 import kotlinx.serialization.serializer
 import kweb.util.*
 import java.time.Duration
 
 @KWebDSL
 class CookieReceiver(val receiver: WebBrowser) {
     fun set(key: String, value: String, expires: Duration? = null, path: String? = null, domain: String? = null) {
         set(key, value.json, expires, path, domain)
     }
 
     fun set(key: String, value: Int, expires: Duration? = null, path: String? = null, domain: String? = null) {
         set(key, value.json, expires, path, domain)
     }
 
     fun set(key: String, value: Float, expires: Duration? = null, path: String? = null, domain: String? = null) {
         set(key, value.json, expires, path, domain)
     }
 
     fun set(key: String, value: Double, expires: Duration? = null, path: String? = null, domain: String? = null) {
         set(key, value.json, expires, path, domain)
     }
 
     fun set(key: String, value: Short, expires: Duration? = null, path: String? = null, domain: String? = null) {
         set(key, value.json, expires, path, domain)
     }
 
     fun set(key: String, value: Long, expires: Duration? = null, path: String? = null, domain: String? = null) {
         set(key, value.json, expires, path, domain)
     }
 
     fun set(key: String, value: Boolean, expires: Duration? = null, path: String? = null, domain: String? = null) {
         set(key, value.json, expires, path, domain)
     }
 
     fun set(key: String, value: Char, expires: Duration? = null, path: String? = null, domain: String? = null) {
         set(key, JsonPrimitive(value.toString()), expires, path, domain)
     }
 
     fun set(key: String, value: Byte, expires: Duration? = null, path: String? = null, domain: String? = null) {
         set(key, value.json, expires, path, domain)
     }
 
     fun set(key: String, value: JsonElement, expires: Duration? = null, path: String? = null, domain: String? = null) {
         val keyArg = JsonPrimitive(key)
         val expiresArg = if (expires != null) JsonPrimitive(expires.seconds.toString()) else JsonNull
         val pathArg = if (path != null) JsonPrimitive(path) else JsonNull
         val domainArg = if (domain != null) JsonPrimitive(domain) else JsonNull
 
         // Calls kweb_bootstrap.js setItem function
         //setItem: function (sKey, sValue, vEnd, sPath, sDomain, bSecure)
         //TODO this setJson function didn't have an argument for bSecure, so I decided to just explicitly pass a JsonNull,
         //Maybe we should add a parameter to the kotlin function for bSecure?
         //language=JavaScript
         receiver.callJsFunction("docCookies.setItem({},{},{},{},{},{});", keyArg, value, expiresArg, pathArg, domainArg, JsonNull)
 
     }
 
     suspend inline fun <reified V : Any> get(name: String): V? {
         val result = getString(name)
         val serializer = serializer<V>()
         return when(result) {
             null -> null
             else -> Json.decodeFromString(serializer, result)
         }
     }
 
     suspend fun getString(name: String): String? {
         val result = Json.decodeFromJsonElement<String>(receiver.callJsFunctionWithResult("return docCookies.getItem({});", JsonPrimitive(name)))
         return if (result == "__COOKIE_NOT_FOUND_TOKEN__") {
             null
         } else {
             result
         }
     }
 
     fun remove(name: String) {
         //language=JavaScript
         receiver.callJsFunction("docCookies.removeItem({});", JsonPrimitive(name))
     }
 }