0 | module HTTP.API.Server.Header
2 | import HTTP.API.Server.Interface
7 | (ps : List HeaderPart)
8 | -> {auto all : All Decode (HeaderTypes ps)}
10 | -> Either RequestErr (HList $
HeaderTypes ps)
11 | decodeHeaders [] r = Right []
12 | decodeHeaders (H n t s::hs) @{_::_} r =
13 | case lookupHeader n r.headers of
14 | Nothing => Left (requestErrMsg "Missing HTTP header: \{n}" s)
15 | Just bs => Prelude.do
16 | v <- mapFst (decodeErr s) (decodeAs t bs)
17 | vs <- decodeHeaders hs r
21 | Serve ReqHeaders where
22 | Constraint h = All Decode (HeaderTypes h.headers)
23 | InTypes h = HeaderTypes h.headers
26 | canHandle _ r = True
27 | fromRequest h r = injectEither $
decodeHeaders h.headers r
28 | adjResponse _ [] req = pure