package oasmiddleware import ( "encoding/json" "io" "net/http" "github.com/getkin/kin-openapi/openapi3" "github.com/getkin/kin-openapi/openapi3filter" ) // ref: https://github.com/getkin/kin-openapi/blob/994d4f01c1e8dd613805668a7c10b568547f7789/openapi3filter/req_resp_decoder.go#L1031-L1047 // JsonBodyDecoder is meant to be used with openapi3filter.RegisterBodyDecoder // to register a decoder for a custom vendor type like "application/konnect.foo+json" func JsonBodyDecoder(body io.Reader, _ http.Header, _ *openapi3.SchemaRef, _ openapi3filter.EncodingFn) (any, error) { var value any dec := json.NewDecoder(body) dec.UseNumber() if err := dec.Decode(&value); err != nil { return nil, &openapi3filter.ParseError{Kind: openapi3filter.KindInvalidFormat, Cause: err} } return value, nil }