File size: 809 Bytes
1f10f31 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | 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
}
|