http/headers.bend checks
raw source on the hub · import 0x33fa1e8e9ce79cb0b4983b81c36ecdd3/http/headers.bend as Headers
2 imports
import Base import ./text.bend as T
Types
type Header source · line 6 · raw
Data
header fields in the order they came (RFC 9110 §5); a name may repeat, and names compare ignoring case
Header@name:String -> @value:String -> Header
Definitions
def Headers source · line 9 · raw
Type
def name_eq source · line 15 · raw
@a:String -> @b:String -> @ok:Bool -> Bool
headers' own compare: http1 calls T.same_ci with literals, which makes it the owner of what it reads; a name used for every header would then be shared
def keep source · line 24 · raw
@hit:Bool -> @v:String -> @found:Maybe<&2, String> -> Maybe<&2, String>
def get.go source · line 31 · raw
@hs:List<&2, Header> -> @+name:String -> @found:Maybe<&2, String> -> Maybe<&2, String>
def get source · line 39 · raw
@hs:List<&2, Header> -> @+name:String -> Maybe<&2, String>
the first value of a header
def all.add source · line 42 · raw
@hit:Bool -> @v:String -> @acc:List<&2, String> -> List<&2, String>
def all.go source · line 49 · raw
@hs:List<&2, Header> -> @+name:String -> @acc:List<&2, String> -> List<&2, String>
def all source · line 57 · raw
@hs:List<&2, Header> -> @+name:String -> List<&2, String>
every value of a header, in order
def drop.keep source · line 60 · raw
@hit:Bool -> @h:Header -> @acc:List<&2, Header> -> List<&2, Header>
def drop.go source · line 67 · raw
@hs:List<&2, Header> -> @+name:String -> @acc:List<&2, Header> -> List<&2, Header>
def remove source · line 75 · raw
@hs:List<&2, Header> -> @+name:String -> List<&2, Header>
every header but those named name
def add source · line 79 · raw
@hs:List<&2, Header> -> @name:String -> @value:String -> List<&2, Header>
one more header, after the others
def set source · line 83 · raw
@hs:List<&2, Header> -> @+name:String -> @value:String -> List<&2, Header>
the header set to one value, replacing any others