All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.javalin.cookie.CookieStore.kt Maven / Gradle / Ivy

The newest version!
package io.javalin.cookie

import io.javalin.json.JavalinJson
import java.util.*
import javax.servlet.http.Cookie

class CookieStore(cookie: String?) {

    companion object {
        const val COOKIE_NAME = "javalin-cookie-store"
    }

    private val cookieMap = deserialize(cookie)

    fun serializeToCookie() = Cookie(COOKIE_NAME, serialize(cookieMap))

    @Suppress("UNCHECKED_CAST")
    operator fun  get(key: String) = cookieMap[key] as T

    operator fun set(key: String, value: Any) = cookieMap.put(key, value)

    fun clear() = cookieMap.clear()

    @Suppress("UNCHECKED_CAST")
    private fun deserialize(cookie: String?) = if (!cookie.isNullOrEmpty()) {
        JavalinJson.fromJson(String(Base64.getDecoder().decode(cookie)), Map::class.java) as MutableMap
    } else mutableMapOf()

    private fun serialize(map: MutableMap) = Base64.getEncoder().encodeToString(JavalinJson.toJson(map).toByteArray())
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy