src/cache.bend checks
raw source on the hub · import emerging-ezhttp@0.8.0.0/src/cache.bend as Cache
ezhttp/src/cache: Cache-Control and a small freshness check (RFC 9111). This is not a shared cache. Expires is recorded; max-age overrides it for freshness. IMF-fixdate arithmetic is not evaluated.
2 imports
import Base import ./http.bend as Http
Types
type Cc source · line 8 · raw
Data
the directives this module records
Cc@no_store:Bool -> @no_cache:Bool -> @public:Bool -> @private:Bool -> @max_age:String -> @expires:String -> Cc
Definitions
def cache.empty source · line 19 · raw
Cc
no directives
def cache.store source · line 23 · raw
@c:Cc -> Cc
set no-store
def cache.revalidate source · line 29 · raw
@c:Cc -> Cc
set no-cache
def cache.pub source · line 35 · raw
@c:Cc -> Cc
set public
def cache.priv source · line 41 · raw
@c:Cc -> Cc
set private
def cache.age source · line 47 · raw
@c:Cc -> @age:String -> Cc
set max-age text
def cache.expires source · line 53 · raw
@c:Cc -> @when:String -> Cc
set the Expires header text
def cache.one.private source · line 59 · raw
@c:Cc -> @_name:String -> @_value:String -> @hit:Bool -> Cc
private, or leave the directive unrecognized
def cache.one.public source · line 67 · raw
@c:Cc -> @+name:String -> @value:String -> @hit:Bool -> Cc
public
def cache.one.age_ok source · line 75 · raw
@c:Cc -> @+raw:String -> @m:Maybe<&2, Nat> -> Cc
max-age, kept only when the argument is digits (delta-seconds)
def cache.one.age source · line 83 · raw
@c:Cc -> @+name:String -> @+value:String -> @hit:Bool -> Cc
max-age
def cache.one.cache source · line 91 · raw
@c:Cc -> @+name:String -> @+value:String -> @hit:Bool -> Cc
no-cache
def cache.one.store source · line 99 · raw
@c:Cc -> @+name:String -> @+value:String -> @hit:Bool -> Cc
no-store
def cache.one.flag source · line 107 · raw
@c:Cc -> @+name:String -> Cc
a directive with no = argument
def cache.one.dispatch source · line 111 · raw
@c:Cc -> @+piece:String -> @cut:0xf1c957a470368870a6d1d62a8c0cbe32/src/http.Cut -> Cc
flag or name=value
def cache.one source · line 120 · raw
@c:Cc -> @+piece:String -> Cc
one directive text
def cache.fold source · line 124 · raw
@ps:List<&2, String> -> @c:Cc -> Cc
walk directives. The list shrinks.
def cache.parse source · line 132 · raw
@value:String -> Cc
Cache-Control field value (RFC 9111 §5.2)
def cache.note source · line 136 · raw
@value:String -> @expires:String -> Cc
record an Expires header beside Cache-Control (RFC 9111 §5.3)
def cache.max_age source · line 140 · raw
@c:Cc -> Bool
true when max-age is present, so it overrides Expires (RFC 9111 §4.2.1)
def cache.fresh.go source · line 146 · raw
@age:Nat -> @m:Maybe<&2, Nat> -> Bool
freshness from max-age. no-store and no-cache are not fresh.
def cache.fresh.cache source · line 154 · raw
@age:Nat -> @max_age:String -> @no_cache:Bool -> Bool
no-cache must revalidate
def cache.fresh.store source · line 162 · raw
@age:Nat -> @no_cache:Bool -> @max_age:String -> @no_store:Bool -> Bool
no-store is not reused
def cache.fresh source · line 171 · raw
@c:Cc -> @age:Nat -> Bool
age seconds against the directives. max-age=0 is stale (RFC 9111 §4.2.1).