decoderx

package
v1.0.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 2, 2022 License: Apache-2.0 Imports: 19 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// ParseErrorIgnoreConversionErrors will ignore any errors caused by strconv.Parse* and use the
	// raw form field value, which is a string, when such a parse error occurs.
	//
	// If the JSON Schema defines `{"ratio": {"type": "number"}}` but `ratio=foobar` then field
	// `ratio` will be handled as a string. If the destination struct is a `json.RawMessage`, then
	// the output will be `{"ratio": "foobar"}`.
	ParseErrorIgnoreConversionErrors parseErrorStrategy = iota + 1

	// ParseErrorUseEmptyValueOnConversionErrors will ignore any parse errors caused by strconv.Parse* and use the
	// default value of the type to be casted, e.g. float64(0), string("").
	//
	// If the JSON Schema defines `{"ratio": {"type": "number"}}` but `ratio=foobar` then field
	// `ratio` will receive the default value for the primitive type (here `0.0` for `number`).
	// If the destination struct is a `json.RawMessage`, then the output will be `{"ratio": 0.0}`.
	ParseErrorUseEmptyValueOnConversionErrors

	// ParseErrorReturnOnConversionErrors will abort and return with an error if strconv.Parse* returns
	// an error.
	//
	// If the JSON Schema defines `{"ratio": {"type": "number"}}` but `ratio=foobar` the parser aborts
	// and returns an error, here: `strconv.ParseFloat: parsing "foobar"`.
	ParseErrorReturnOnConversionErrors
)

Variables

This section is empty.

Functions

This section is empty.

Types

type HTTP

type HTTP struct{}

HTTP decodes json and form-data from HTTP Request Bodies.

func NewHTTP

func NewHTTP() *HTTP

NewHTTP creates a new HTTP decoder.

func (*HTTP) Decode

func (t *HTTP) Decode(r *http.Request, destination interface{}, opts ...HTTPDecoderOption) error

Decode takes a HTTP Request Body and decodes it into destination.

type HTTPDecoderOption

type HTTPDecoderOption func(*httpDecoderOptions)

HTTPDecoderOption configures the HTTP decoder.

func HTTPDecoderAllowedMethods

func HTTPDecoderAllowedMethods(method ...string) HTTPDecoderOption

HTTPDecoderAllowedMethods sets the allowed HTTP methods. Defaults are POST, PUT, PATCH.

func HTTPDecoderJSONFollowsFormFormat

func HTTPDecoderJSONFollowsFormFormat() HTTPDecoderOption

HTTPDecoderJSONFollowsFormFormat if set tells the decoder that JSON follows the same conventions as the form decoder, meaning `{"foo.bar": "..."}` is translated to `{"foo": {"bar": "..."}}`.

func HTTPDecoderSetIgnoreParseErrorsStrategy

func HTTPDecoderSetIgnoreParseErrorsStrategy(strategy parseErrorStrategy) HTTPDecoderOption

HTTPDecoderSetIgnoreParseErrorsStrategy sets a strategy for dealing with strconv.Parse* errors:

- decoderx.ParseErrorIgnoreConversionErrors will ignore any parse errors caused by strconv.Parse* and use the raw form field value, which is a string, when such a parse error occurs. (default) - decoderx.ParseErrorUseEmptyValueOnConversionErrors will ignore any parse errors caused by strconv.Parse* and use the default value of the type to be casted, e.g. float64(0), string(""). - decoderx.ParseErrorReturnOnConversionErrors will abort and return with an error if strconv.Parse* returns an error.

func HTTPDecoderSetMaxCircularReferenceDepth

func HTTPDecoderSetMaxCircularReferenceDepth(depth uint8) HTTPDecoderOption

HTTPDecoderSetMaxCircularReferenceDepth sets the maximum recursive reference resolution depth.

func HTTPDecoderSetValidatePayloads

func HTTPDecoderSetValidatePayloads(validate bool) HTTPDecoderOption

HTTPDecoderSetValidatePayloads sets if payloads should be validated or not.

func HTTPDecoderUseQueryAndBody

func HTTPDecoderUseQueryAndBody() HTTPDecoderOption

HTTPDecoderUseQueryAndBody will check both the HTTP body and the HTTP query params when decoding. Only relevant for non-GET operations.

func HTTPFormDecoder

func HTTPFormDecoder() HTTPDecoderOption

HTTPFormDecoder configures the HTTP decoder to only accept form-data (application/x-www-form-urlencoded, multipart/form-data)

func HTTPJSONDecoder

func HTTPJSONDecoder() HTTPDecoderOption

HTTPJSONDecoder configures the HTTP decoder to only accept form-data (application/json).

func HTTPJSONSchemaCompiler

func HTTPJSONSchemaCompiler(ref string, compiler *jsonschema.Compiler) HTTPDecoderOption

HTTPJSONSchemaCompiler sets a JSON schema to be used for validation and type assertion of incoming requests.

func HTTPKeepRequestBody

func HTTPKeepRequestBody(keep bool) HTTPDecoderOption

HTTPKeepRequestBody configures the HTTP decoder to allow other HTTP request body readers to read the body as well by keeping the data in memory.

func HTTPRawJSONSchemaCompiler

func HTTPRawJSONSchemaCompiler(raw []byte) (HTTPDecoderOption, error)

HTTPRawJSONSchemaCompiler uses a JSON Schema Compiler with the provided JSON Schema in raw byte form.

func MustHTTPRawJSONSchemaCompiler

func MustHTTPRawJSONSchemaCompiler(raw []byte) HTTPDecoderOption

MustHTTPRawJSONSchemaCompiler uses HTTPRawJSONSchemaCompiler and panics on error.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL