Cookie.kt
- package com.hexagonkt.http.model
- import java.time.Instant
- /**
- * TODO .
- *
- * @property name
- * @property value
- * @property maxAge '-1' is the same as empty
- * @property secure
- * @property path '/' is the same as empty
- * @property httpOnly
- * @property domain
- * @property sameSite
- * @property expires
- */
- data class Cookie(
- val name: String,
- val value: String = "",
- val maxAge: Long = -1,
- val secure: Boolean = false,
- val path: String = "/",
- val httpOnly: Boolean = false,
- val domain: String? = null,
- val sameSite: CookieSameSite? = null,
- val expires: Instant? = null,
- ) {
- val deleted: Boolean by lazy { value == "" && maxAge <= 0L }
- init {
- require(name.isNotBlank()) { "Cookie name can not be blank: $name" }
- }
- fun delete(): Cookie =
- copy(value = "", maxAge = 0)
- }