transformers

package
v1.0.7 Latest Latest
Warning

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

Go to latest
Published: Mar 14, 2024 License: MIT Imports: 24 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var TransformerMgrDefault = &TransformerFactory{}

Functions

func ContextWithTransformerMgr

func ContextWithTransformerMgr(ctx context.Context, mgr TransformerMgr) context.Context

func EachParameter

func EachParameter(ctx context.Context, tpe typesx.Type, each func(p *Parameter) bool)

func EachRequestParameter

func EachRequestParameter(ctx context.Context, tpe typesx.Type, each func(rp *RequestParameter)) error

func GroupedParametersSetFromContext

func GroupedParametersSetFromContext(ctx context.Context) *sync.Map

func MIMEHeader

func MIMEHeader(headers ...textproto.MIMEHeader) textproto.MIMEHeader

func MustNewFileHeader

func MustNewFileHeader(fieldName string, filename string, r io.Reader) *multipart.FileHeader

func NewFileHeader

func NewFileHeader(fieldName string, filename string, r io.Reader) (*multipart.FileHeader, error)

func NewValidator

func NewValidator(
	ctx context.Context,
	fieldType typex.Type,
	tags map[string]Tag,
	omitempty bool,
	transformer Transformer,
) (validator.Validator, error)

func ParamsFromMap

func ParamsFromMap(m map[string]string) httprouter.Params

func ParseTags

func ParseTags(tag string) map[string]Tag

func WithGroupedParametersSet

func WithGroupedParametersSet(ctx context.Context, m *sync.Map) context.Context

Types

type CanInterface

type CanInterface interface {
	Interface() interface{}
}

type CanNextReader

type CanNextReader interface {
	NextReader() io.Reader
}

type CanNextWriter

type CanNextWriter interface {
	NextWriter() io.Writer
}

type CanString

type CanString interface {
	String() string
}

type CommonTransformOption

type CommonTransformOption struct {
	// when enable
	// should ignore value when value is empty
	Omitempty bool
	Explode   bool
}

type FileHeaderReader

type FileHeaderReader struct {
	// contains filtered or unexported fields
}

func (*FileHeaderReader) Interface

func (f *FileHeaderReader) Interface() interface{}

func (*FileHeaderReader) Read

func (f *FileHeaderReader) Read(p []byte) (int, error)

type FlattenParams

type FlattenParams struct {
	Parameters []RequestParameter
}

func (*FlattenParams) CollectParams

func (params *FlattenParams) CollectParams(ctx context.Context, typ typesx.Type) error

func (FlattenParams) NewValidator

func (FlattenParams) NewValidator(ctx context.Context, typ typesx.Type) (validator.Validator, error)

func (FlattenParams) String

func (FlattenParams) String() string

func (*FlattenParams) Validate

func (params *FlattenParams) Validate(v interface{}) error

type FormPartWriter

type FormPartWriter struct {
	// contains filtered or unexported fields
}

func NewFormPartWriter

func NewFormPartWriter(createPartWriter func(header textproto.MIMEHeader) (io.Writer, error)) *FormPartWriter

func (*FormPartWriter) Header

func (w *FormPartWriter) Header() http.Header

func (*FormPartWriter) NextWriter

func (w *FormPartWriter) NextWriter() io.Writer

func (*FormPartWriter) Write

func (w *FormPartWriter) Write(p []byte) (n int, err error)

type GroupedParameters

type GroupedParameters = map[string][]Parameter

func CollectGroupedParameters

func CollectGroupedParameters(ctx context.Context, tpe typesx.Type) GroupedParameters

type HeaderWriter

type HeaderWriter interface {
	httpx.WithHeader
	io.Writer
}

func WriterWithHeader

func WriterWithHeader(w io.Writer, header http.Header) HeaderWriter

type MayValidator

type MayValidator interface {
	NewValidator(ctx context.Context, typ typex.Type) (validator.Validator, error)
}

type Parameter

type Parameter struct {
	In    string
	Name  string
	Field typesx.StructField
	Type  typesx.Type
	Tags  map[string]Tag
	Loc   []int
}

func (*Parameter) FieldValue

func (p *Parameter) FieldValue(structReflectValue reflect.Value) reflect.Value

type ParameterValue

type ParameterValue struct {
	Parameter
	Value reflect.Value
}

type PathWalker

type PathWalker struct {
	// contains filtered or unexported fields
}

func (*PathWalker) Enter

func (pw *PathWalker) Enter(i interface{})

func (*PathWalker) Exit

func (pw *PathWalker) Exit()

func (*PathWalker) Paths

func (pw *PathWalker) Paths() []interface{}

func (*PathWalker) String

func (pw *PathWalker) String() string

type PathnamePattern

type PathnamePattern struct {
	// contains filtered or unexported fields
}

func NewPathnamePattern

func NewPathnamePattern(p string) *PathnamePattern

func (*PathnamePattern) Parse

func (pattern *PathnamePattern) Parse(pathname string) (params httprouter.Params, err error)

func (*PathnamePattern) String

func (pattern *PathnamePattern) String() string

func (*PathnamePattern) Stringify

func (pattern *PathnamePattern) Stringify(params httprouter.Params) string

type RequestParameter

type RequestParameter struct {
	Parameter

	TransformerOption TransformerOption
	Transformer       Transformer

	Validator validator.Validator
}

type StringBuilders

type StringBuilders struct {
	// contains filtered or unexported fields
}

func NewStringBuilders

func NewStringBuilders() *StringBuilders

func (*StringBuilders) NextWriter

func (v *StringBuilders) NextWriter() io.Writer

func (*StringBuilders) SetN

func (v *StringBuilders) SetN(n int)

func (*StringBuilders) StringSlice

func (v *StringBuilders) StringSlice() []string

func (*StringBuilders) Write

func (v *StringBuilders) Write(p []byte) (n int, err error)

type StringReader

type StringReader struct {
	// contains filtered or unexported fields
}

func NewStringReader

func NewStringReader(v string) *StringReader

func (*StringReader) Interface

func (r *StringReader) Interface() interface{}

func (*StringReader) Read

func (r *StringReader) Read(p []byte) (n int, err error)

func (*StringReader) String

func (r *StringReader) String() string

type StringReaders

type StringReaders struct {
	// contains filtered or unexported fields
}

func NewFileHeaderReaders

func NewFileHeaderReaders(fileHeaders []*multipart.FileHeader) *StringReaders

func NewStringReaders

func NewStringReaders(values []string) *StringReaders

func (*StringReaders) Interface

func (v *StringReaders) Interface() interface{}

func (*StringReaders) Len

func (v *StringReaders) Len() int

func (*StringReaders) NextReader

func (v *StringReaders) NextReader() io.Reader

func (*StringReaders) Read

func (v *StringReaders) Read(p []byte) (n int, err error)

type Tag

type Tag string

func (Tag) HasFlag

func (t Tag) HasFlag(flag string) bool

func (Tag) Name

func (t Tag) Name() string

type Transformer

type Transformer interface {
	// name or alias of transformer
	// prefer using some keyword about content-type
	// first must validate content-type
	Names() []string
	// create transformer new transformer instance by type
	// in this step will to check transformer is valid for type
	New(context.Context, typesx.Type) (Transformer, error)

	// EncodeTo
	// if w implement interface { Header() http.Header }
	// Content-Type will be set
	EncodeTo(ctx context.Context, w io.Writer, v interface{}) (err error)

	// DecodeFrom
	DecodeFrom(ctx context.Context, r io.Reader, v interface{}, headers ...textproto.MIMEHeader) error
}

func NewTransformer

func NewTransformer(ctx context.Context, tpe typesx.Type, opt TransformerOption) (Transformer, error)

type TransformerAndOption

type TransformerAndOption struct {
	Transformer
	Option TransformerOption
}

type TransformerFactory

type TransformerFactory struct {
	// contains filtered or unexported fields
}

func (*TransformerFactory) NewTransformer

func (c *TransformerFactory) NewTransformer(ctx context.Context, typ typesx.Type, opt TransformerOption) (
	Transformer,
	error,
)

func (*TransformerFactory) Register

func (c *TransformerFactory) Register(transformers ...Transformer)

type TransformerHTMLText

type TransformerHTMLText struct {
}

func (TransformerHTMLText) DecodeFrom

func (TransformerHTMLText) DecodeFrom(
	ctx context.Context,
	r io.Reader,
	v interface{},
	headers ...textproto.MIMEHeader,
) error

func (*TransformerHTMLText) EncodeTo

func (t *TransformerHTMLText) EncodeTo(ctx context.Context, w io.Writer, v interface{}) error

func (TransformerHTMLText) NamedByTag

func (TransformerHTMLText) NamedByTag() string

func (TransformerHTMLText) Names

func (TransformerHTMLText) Names() []string

func (TransformerHTMLText) New

func (*TransformerHTMLText) String

func (t *TransformerHTMLText) String() string

type TransformerJSON

type TransformerJSON struct {
}

func (TransformerJSON) DecodeFrom

func (TransformerJSON) DecodeFrom(
	ctx context.Context,
	r io.Reader,
	v interface{},
	headers ...textproto.MIMEHeader,
) error

func (*TransformerJSON) EncodeTo

func (transformer *TransformerJSON) EncodeTo(ctx context.Context, w io.Writer, v interface{}) error

func (TransformerJSON) NamedByTag

func (TransformerJSON) NamedByTag() string

func (TransformerJSON) Names

func (TransformerJSON) Names() []string

func (TransformerJSON) New

func (*TransformerJSON) String

func (transformer *TransformerJSON) String() string

type TransformerMgr

type TransformerMgr interface {
	NewTransformer(context.Context, typesx.Type, TransformerOption) (Transformer, error)
}

func TransformerMgrFromContext

func TransformerMgrFromContext(ctx context.Context) TransformerMgr

type TransformerMultipart

type TransformerMultipart struct {
	*FlattenParams
}

TransformerMultipart for multipart/form-data

func (*TransformerMultipart) DecodeFrom

func (transformer *TransformerMultipart) DecodeFrom(
	ctx context.Context,
	r io.Reader,
	v interface{},
	headers ...textproto.MIMEHeader,
) error

func (*TransformerMultipart) EncodeTo

func (transformer *TransformerMultipart) EncodeTo(ctx context.Context, w io.Writer, v interface{}) error

func (TransformerMultipart) NamedByTag

func (TransformerMultipart) NamedByTag() string

func (TransformerMultipart) Names

func (TransformerMultipart) Names() []string

func (TransformerMultipart) New

func (*TransformerMultipart) String

func (transformer *TransformerMultipart) String() string

type TransformerOctetStream

type TransformerOctetStream struct {
}

func (TransformerOctetStream) DecodeFrom

func (TransformerOctetStream) DecodeFrom(
	ctx context.Context,
	r io.Reader,
	v interface{},
	headers ...textproto.MIMEHeader,
) error

func (*TransformerOctetStream) EncodeTo

func (t *TransformerOctetStream) EncodeTo(ctx context.Context, w io.Writer, v interface{}) error

func (TransformerOctetStream) Names

func (TransformerOctetStream) Names() []string

func (TransformerOctetStream) New

func (*TransformerOctetStream) String

func (t *TransformerOctetStream) String() string

type TransformerOption

type TransformerOption struct {
	Name string
	MIME string
	CommonTransformOption
}

func (TransformerOption) String

func (op TransformerOption) String() string

type TransformerPlainText

type TransformerPlainText struct {
}

func (*TransformerPlainText) DecodeFrom

func (t *TransformerPlainText) DecodeFrom(
	ctx context.Context,
	r io.Reader,
	v interface{},
	headers ...textproto.MIMEHeader,
) error

func (*TransformerPlainText) EncodeTo

func (t *TransformerPlainText) EncodeTo(ctx context.Context, w io.Writer, v interface{}) error

func (TransformerPlainText) Names

func (TransformerPlainText) Names() []string

func (TransformerPlainText) New

func (*TransformerPlainText) String

func (t *TransformerPlainText) String() string

type TransformerSuper

type TransformerSuper struct {
	CommonTransformOption
	// contains filtered or unexported fields
}

func NewTransformerSuper

func NewTransformerSuper(transformer Transformer, opt *CommonTransformOption) *TransformerSuper

func (*TransformerSuper) DecodeFrom

func (t *TransformerSuper) DecodeFrom(ctx context.Context, r io.Reader, v interface{}) error

func (*TransformerSuper) EncodeTo

func (t *TransformerSuper) EncodeTo(ctx context.Context, w io.Writer, v interface{}) error

type TransformerURLEncoded

type TransformerURLEncoded struct {
	*FlattenParams
}

TransformerURLEncoded for application/x-www-form-urlencoded

var s = struct {
	Username string `name:"username"`
	Nickname string `name:"username,omitempty"`
	Tags []string `name:"tag"`
}{
	Username: "name",
	Tags: []string{"1","2"},
}

will transform to

username=name&tag=1&tag=2

func (*TransformerURLEncoded) DecodeFrom

func (transformer *TransformerURLEncoded) DecodeFrom(
	ctx context.Context,
	r io.Reader,
	v interface{},
	headers ...textproto.MIMEHeader,
) error

func (*TransformerURLEncoded) EncodeTo

func (transformer *TransformerURLEncoded) EncodeTo(ctx context.Context, w io.Writer, v interface{}) error

func (TransformerURLEncoded) NamedByTag

func (TransformerURLEncoded) NamedByTag() string

func (TransformerURLEncoded) Names

func (TransformerURLEncoded) Names() []string

func (TransformerURLEncoded) New

type WithNamedByTag

type WithNamedByTag interface {
	NamedByTag() string
}

type XMLTransformer

type XMLTransformer struct {
}

func (XMLTransformer) DecodeFrom

func (XMLTransformer) DecodeFrom(
	ctx context.Context,
	r io.Reader,
	v interface{},
	headers ...textproto.MIMEHeader,
) error

func (*XMLTransformer) EncodeTo

func (t *XMLTransformer) EncodeTo(ctx context.Context, w io.Writer, v interface{}) error

func (XMLTransformer) NamedByTag

func (XMLTransformer) NamedByTag() string

func (XMLTransformer) Names

func (XMLTransformer) Names() []string

func (XMLTransformer) New

func (*XMLTransformer) String

func (t *XMLTransformer) String() string

Jump to

Keyboard shortcuts

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