http.bend fails
raw source on the hub · import 0x2f326102284e109617025c8abc5cc38a/http.bend as Http
1 import
import Base
Types
type Req source · line 7 · raw
Data
Req@method:String -> @path:String -> @headers:Map<&2, String> -> @body:String -> Req
type Res source · line 10 · raw
Data
Res@status:U32 -> @headers:Map<&2, String> -> @body:String -> Res
type Fields source · line 13 · raw
Data
FieldsBadFields
FieldsOk@m:Map<&2, String> -> Fields
Definitions
def empty source · line 17 · raw
Map<&2, String>
def sanitize.cons source · line 20 · raw
@ch:Char -> @rest:String -> @drop:Bool -> String
def sanitize source · line 27 · raw
@s:String -> String
def drop_cr.if source · line 34 · raw
@+s:String -> @cr:Bool -> String
def drop_cr source · line 41 · raw
@+s:String -> String
def take_sp.go source · line 44 · raw
@s:String -> @+acc:String -> Pair(String, String)
def take_sp source · line 51 · raw
@s:String -> Pair(String, String)
def start_line.ver source · line 54 · raw
@m:String -> @pv:Pair(String, String) -> Pair(String, Pair(String, String))
def start_line.rest source · line 58 · raw
@mr:Pair(String, String) -> Pair(String, Pair(String, String))
def start_line source · line 62 · raw
@s:String -> Pair(String, Pair(String, String))
def split_at_blank.go source · line 65 · raw
@s:String -> @e:Bool -> @w:U32 -> @acc:String -> Pair(String, String)
def split_at_blank source · line 77 · raw
@s:String -> Pair(String, String)
def split_colon.go source · line 80 · raw
@s:String -> @+acc:String -> Pair(String, String)
def split_colon source · line 87 · raw
@s:String -> Pair(String, String)
def has_header.of source · line 90 · raw
@r:Pair(Map<&2, String>, Bool) -> Bool
def has_header source · line 94 · raw
@+h:Map<&2, String> -> @k:String -> Bool
def header.of source · line 97 · raw
@r:Pair(Map<&2, String>, String) -> String
def header source · line 101 · raw
@+h:Map<&2, String> -> @k:String -> String
def folded source · line 104 · raw
@+line:String -> Bool
def tracked source · line 107 · raw
@+k:String -> Bool
def fields_put.dup source · line 110 · raw
@m:Map<&2, String> -> @k:String -> @v:String -> @bad:Bool -> Fields
def fields_put.key source · line 117 · raw
@+m:Map<&2, String> -> @+k:String -> @v:String -> Fields
def fields_put.kv source · line 120 · raw
@m:Map<&2, String> -> @kv:Pair(String, String) -> Fields
def fields_put.fold source · line 124 · raw
@m:Map<&2, String> -> @line:String -> @fold:Bool -> Fields
def fields_put.empty source · line 131 · raw
@m:Map<&2, String> -> @+line:String -> @e:Bool -> Fields
def fields_put.ok source · line 138 · raw
@m:Map<&2, String> -> @+line:String -> Fields
def fields_put source · line 141 · raw
@acc:Fields -> @line:String -> Fields
def parse.headers.done source · line 148 · raw
@acc:Fields -> Maybe<&2, Map<&2, String>>
def parse.headers source · line 155 · raw
@xs:List<&2, String> -> @acc:Fields -> Maybe<&2, Map<&2, String>>
def parse_u32.digit source · line 162 · raw
@+c:U32 -> Bool
def parse_u32.add source · line 165 · raw
@acc:U32 -> @c:U32 -> U32
def parse_u32.done source · line 168 · raw
@acc:U32 -> @bad:Bool -> Maybe<&2, U32>
def parse_u32.go source · line 175 · raw
@s:String -> @acc:U32 -> @bad:Bool -> Maybe<&2, U32>
def parse_u32 source · line 182 · raw
@s:String -> Maybe<&2, U32>
def parse.take source · line 191 · raw
@rest:String -> @n:Maybe<&2, U32> -> Maybe<&2, String>
def parse.body.cl source · line 198 · raw
@+h:Map<&2, String> -> @rest:String -> @hascl:Bool -> Maybe<&2, String>
def parse.body.te source · line 205 · raw
@+h:Map<&2, String> -> @rest:String -> @te:Bool -> Maybe<&2, String>
def parse.body source · line 212 · raw
@+h:Map<&2, String> -> @rest:String -> Maybe<&2, String>
def parse.finish source · line 215 · raw
@method:String -> @path:String -> @h:Map<&2, String> -> @body:Maybe<&2, String> -> Maybe<&2, Req>
def parse.host source · line 222 · raw
@method:String -> @path:String -> @+h:Map<&2, String> -> @rest:String -> @has:Bool -> Maybe<&2, Req>
def parse.fields source · line 229 · raw
@method:String -> @path:String -> @rest:String -> @fs:Maybe<&2, Map<&2, String>> -> Maybe<&2, Req>
def target_ok source · line 236 · raw
@+p:String -> Bool
def parse.target source · line 239 · raw
@method:String -> @+path:String -> @headers:List<&2, String> -> @rest:String -> @ok:Bool -> Maybe<&2, Req>
def parse.ver source · line 246 · raw
@method:String -> @+path:String -> @v:String -> @headers:List<&2, String> -> @rest:String -> @ok:Bool -> Maybe<&2, Req>
def parse.empty_method source · line 253 · raw
@method:String -> @path:String -> @+v:String -> @headers:List<&2, String> -> @rest:String -> @empty:Bool -> Maybe<&2, Req>
def parse.start3 source · line 260 · raw
@mpv:Pair(String, Pair(String, String)) -> @headers:List<&2, String> -> @rest:String -> Maybe<&2, Req>
def parse.lines source · line 264 · raw
@xs:List<&2, String> -> @rest:String -> Maybe<&2, Req>
def parse.head source · line 271 · raw
@head:String -> @rest:String -> Maybe<&2, Req>
def parse.of source · line 274 · raw
@hb:Pair(String, String) -> Maybe<&2, Req>
def parse source · line 278 · raw
@raw:String -> Maybe<&2, Req>
def parse.res.cl source · line 281 · raw
@+h:Map<&2, String> -> @rest:String -> @hascl:Bool -> Maybe<&2, String>
def parse.res.te source · line 288 · raw
@+h:Map<&2, String> -> @rest:String -> @te:Bool -> Maybe<&2, String>
def parse.res.body source · line 295 · raw
@+h:Map<&2, String> -> @rest:String -> Maybe<&2, String>
def parse.res.finish source · line 298 · raw
@status:U32 -> @h:Map<&2, String> -> @body:Maybe<&2, String> -> Maybe<&2, Res>
def parse.res.fields source · line 305 · raw
@status:U32 -> @rest:String -> @fs:Maybe<&2, Map<&2, String>> -> Maybe<&2, Res>
def parse.res.num source · line 312 · raw
@code:Maybe<&2, U32> -> @headers:List<&2, String> -> @rest:String -> Maybe<&2, Res>
def parse.res.ver source · line 319 · raw
@ver:String -> @code:String -> @headers:List<&2, String> -> @rest:String -> @ok:Bool -> Maybe<&2, Res>
def parse.res.start3 source · line 326 · raw
@mpv:Pair(String, Pair(String, String)) -> @headers:List<&2, String> -> @rest:String -> Maybe<&2, Res>
def parse.res.lines source · line 330 · raw
@xs:List<&2, String> -> @rest:String -> Maybe<&2, Res>
def parse.res.head source · line 337 · raw
@head:String -> @rest:String -> Maybe<&2, Res>
def parse.res.of source · line 340 · raw
@hb:Pair(String, String) -> Maybe<&2, Res>
def parse_res source · line 344 · raw
@raw:String -> Maybe<&2, Res>
def res_body.res source · line 347 · raw
@res:Res -> String
def res_body source · line 351 · raw
@m:Maybe<&2, Res> -> String
def got_body.req source · line 358 · raw
@req:Req -> String
def got_body source · line 362 · raw
@m:Maybe<&2, Req> -> String
def body.of source · line 369 · raw
@hb:Pair(String, String) -> String
def body source · line 373 · raw
@s:String -> String
def headers_block.go source · line 376 · raw
@xs:List<&2, Sigma<&2, &2, String, _ => String>> -> @acc:String -> String
def headers_block source · line 383 · raw
@h:Map<&2, String> -> String
def response source · line 386 · raw
@status:U32 -> @headers:Map<&2, String> -> @body:String -> String
def nat_u32 source · line 389 · raw
@n:Nat -> U32
def encode source · line 396 · raw
@r:Res -> String
def request source · line 400 · raw
@method:String -> @path:String -> @headers:Map<&2, String> -> @body:String -> String
def encode_req source · line 403 · raw
@method:String -> @path:String -> @host:String -> @+body:String -> String
def fetch_tail source · line 407 · raw
@head:String -> @m:Pair(Socket, Result<&1, &1, Pair(U32, String), String>) -> IO(Maybe<&2, Res>)
ponytail: two recvs; loop when bodies exceed 16KiB
def fetch_head source · line 414 · raw
@m:Pair(Socket, Result<&1, &1, Pair(U32, String), String>) -> IO(Maybe<&2, Res>)
def fetch_sent source · line 421 · raw
@m:Pair(Socket, Result<&1, &1, Pair(U32, String), Unit>) -> IO(Maybe<&2, Res>)
def fetch source · line 428 · raw
@method:String -> @ip:String -> @port:U32 -> @host:String -> @path:String -> @body:String -> IO(Maybe<&2, Res>)
def get_body.res source · line 434 · raw
@res:Res -> String
def get_body source · line 438 · raw
@m:Maybe<&2, Res> -> String
def get source · line 445 · raw
@ip:String -> @port:U32 -> @host:String -> @path:String -> IO(String)
def sent_fin source · line 450 · raw
@m:Pair(Socket, Result<&1, &1, Pair(U32, String), Unit>) -> IO(Unit)
def reply_send source · line 454 · raw
@s:Socket -> @res:Res -> IO(Unit)
Templates
template reply_handle source · line 459 · raw
@-h:(@_:Req -> IO(Res)) -> @s:Socket -> @req:Req -> IO(Unit)
template reply_parsed source · line 464 · raw
@-h:(@_:Req -> IO(Res)) -> @s:Socket -> @m:Maybe<&2, Req> -> IO(Unit)
template reply_ok source · line 471 · raw
@-h:(@_:Req -> IO(Res)) -> @s:Socket -> @raw:String -> IO(Unit)
template reply source · line 474 · raw
@-h:(@_:Req -> IO(Res)) -> @m:Pair(Socket, Result<&1, &1, Pair(U32, String), String>) -> IO(Unit)
template talk source · line 482 · raw
@-h:(@_:Req -> IO(Res)) -> @s:Socket -> IO(Unit)
template conn source · line 487 · raw
@-h:(@_:Req -> IO(Res)) -> @m:Pair(Listener, Result<&1, &1, Pair(U32, String), Socket>) -> IO(Listener)
template serve source · line 501 · raw
@-h:(@_:Req -> IO(Res)) -> @+port:U32 -> IO(Unit)
Unsafe
unsafe loop source · line 495 · raw
@-h:(@_:Req -> IO(Res)) -> @l:Listener -> IO(Unit)