http_json/http_json.bend checks
raw source on the hub · import 0x33fa1e8e9ce79cb0b4983b81c36ecdd3/http_json/http_json.bend as Http_json
7 imports
import Base import ../json/json.bend as J import ../utf8/utf8.bend as U import ../http/status.bend as S import ../http/headers.bend as H import ../http/request.bend as Req import ../http/response.bend as Res
Types
type DecodeError source · line 13 · raw
Data
why a body did not decode
UnsupportedContentTypeDecodeError
BodyTooLargeDecodeError
InvalidJson@error:0x33fa1e8e9ce79cb0b4983b81c36ecdd3/json/json.Error -> DecodeError
InvalidValue@error:0x33fa1e8e9ce79cb0b4983b81c36ecdd3/json/json.Access -> DecodeError
type Sized source · line 77 · raw
Data
a body and its length, counted in one read
Sized@n:U32 -> @body:List<&2, U32> -> Sized
Definitions
def limit source · line 20 · raw
U32
the largest body decode reads: 1 MiB
def lower.go source · line 23 · raw
@up:Bool -> @+x:U32 -> U32
def lower source · line 30 · raw
@+x:U32 -> U32
def media.go source · line 34 · raw
@s:String -> @acc:String -> String
the media type, lowercased, spaces dropped, reversed: it ends at ';'
def starts source · line 47 · raw
@s:String -> @p:String -> Bool
def same source · line 56 · raw
@a:String -> @b:String -> Bool
def is_json.of source · line 65 · raw
@+rev:String -> Bool
def is_json source · line 69 · raw
@m:Maybe<&2, String> -> Bool
application/json, or a type with the +json suffix (RFC 6839 §3.1)
def measure source · line 80 · raw
@bs:List<&2, U32> -> @+n:U32 -> @acc:List<&2, U32> -> Sized
def decode.value source · line 87 · raw
@-A:Data -> @r:Result<&2, &2, 0x33fa1e8e9ce79cb0b4983b81c36ecdd3/json/json.Access, A> -> Result<&2, &2, DecodeError, A>
def decode.json source · line 94 · raw
@-A:Data -> @f:(@_:0x33fa1e8e9ce79cb0b4983b81c36ecdd3/json/json.Json -> Result<&2, &2, 0x33fa1e8e9ce79cb0b4983b81c36ecdd3/json/json.Access, A>) -> @r:Result<&2, &2, 0x33fa1e8e9ce79cb0b4983b81c36ecdd3/json/json.Error, 0x33fa1e8e9ce79cb0b4983b81c36ecdd3/json/json.Json> -> Result<&2, &2, DecodeError, A>
def decode.fits source · line 101 · raw
@-A:Data -> @f:(@_:0x33fa1e8e9ce79cb0b4983b81c36ecdd3/json/json.Json -> Result<&2, &2, 0x33fa1e8e9ce79cb0b4983b81c36ecdd3/json/json.Access, A>) -> @ok:Bool -> @bs:List<&2, U32> -> Result<&2, &2, DecodeError, A>
def decode.sized source · line 108 · raw
@-A:Data -> @f:(@_:0x33fa1e8e9ce79cb0b4983b81c36ecdd3/json/json.Json -> Result<&2, &2, 0x33fa1e8e9ce79cb0b4983b81c36ecdd3/json/json.Access, A>) -> @s:Sized -> Result<&2, &2, DecodeError, A>
def decode.typed source · line 113 · raw
@-A:Data -> @f:(@_:0x33fa1e8e9ce79cb0b4983b81c36ecdd3/json/json.Json -> Result<&2, &2, 0x33fa1e8e9ce79cb0b4983b81c36ecdd3/json/json.Access, A>) -> @ok:Bool -> @bs:List<&2, U32> -> Result<&2, &2, DecodeError, A>
def decode source · line 121 · raw
@-A:Data -> @f:(@_:0x33fa1e8e9ce79cb0b4983b81c36ecdd3/json/json.Json -> Result<&2, &2, 0x33fa1e8e9ce79cb0b4983b81c36ecdd3/json/json.Access, A>) -> @r:0x33fa1e8e9ce79cb0b4983b81c36ecdd3/http/request.Request -> Result<&2, &2, DecodeError, A>
the body as your type: f reads the parsed JSON, e.g. with J.string_at
def response source · line 127 · raw
@s:0x33fa1e8e9ce79cb0b4983b81c36ecdd3/http/status.Status -> @j:0x33fa1e8e9ce79cb0b4983b81c36ecdd3/json/json.Json -> 0x33fa1e8e9ce79cb0b4983b81c36ecdd3/http/response.Response
a JSON answer
def error_body source · line 130 · raw
@msg:String -> 0x33fa1e8e9ce79cb0b4983b81c36ecdd3/json/json.Json
def error source · line 135 · raw
@e:DecodeError -> 0x33fa1e8e9ce79cb0b4983b81c36ecdd3/http/response.Response
the answer to a body that did not decode: 415, 413 or 400, with {"error": why}