~/bend-docscommunity

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

type Sized source · line 77 · raw

Data

a body and its length, counted in one read

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}