def cookie.av.put

bend-kit-http@0.38.2.0 · http.bend:2230

import bend-kit-http@0.38.2.0/http.bend as Http
import Base
import bend-kit-time@0.3.0.0/time.bend as Time

2230# An Expires or Max-Age that does not parse leaves the earlier one. A leading dot of Domain is dropped.
2231def cookie.av.put(k: Av, a: Cav, +v: String) -> Cav:
2232  match k a:
2233    case AvExpires{} Cav{e, m, d, p, s, h, ss}:
2234      Cav{Maybe.or(&2, Time.Instant, cookie.date(v), e), m, d, p, s, h, ss}
2235    case AvMaxAge{} Cav{e, m, d, p, s, h, ss}:
2236      Cav{e, Maybe.or(&2, U32, cookie.max_age(v), m), d, p, s, h, ss}
2237    case AvDomain{} Cav{e, m, d, p, s, h, ss}:
2238      Cav{e, m, String.to_lower(Bool.pick(String, String.starts_with(v, "."), String.drop(v, 1n), v)), p, s, h, ss}
2239    case AvPath{} Cav{e, m, d, p, s, h, ss}:
2240      Cav{e, m, d, Some{v}, s, h, ss}
2241    case AvSecure{} Cav{e, m, d, p, s, h, ss}:
2242      Cav{e, m, d, p, True{}, h, ss}
2243    case AvHttpOnly{} Cav{e, m, d, p, s, h, ss}:
2244      Cav{e, m, d, p, s, True{}, ss}
2245    case AvSameSite{} Cav{e, m, d, p, s, h, ss}:
2246      Cav{e, m, d, p, s, h, cookie.same_site(v)}
2247    case AvOther{} Cav{e, m, d, p, s, h, ss}:
2248      Cav{e, m, d, p, s, h, ss}

Uses (15)

Used by (1)