mirror of
https://github.com/superseriousbusiness/gotosocial.git
synced 2024-12-28 01:56:30 +00:00
f518f649f8
* Add go-playground/form pkg * [feature] Add support for profile fields * Add field attributes test * Validate profile fields form * Add profile field validation tests * Add Field Attributes definition to swagger --------- Co-authored-by: tobi <31960611+tsmethurst@users.noreply.github.com>
50 lines
1.1 KiB
Go
50 lines
1.1 KiB
Go
package form
|
|
|
|
import (
|
|
"reflect"
|
|
"time"
|
|
)
|
|
|
|
const (
|
|
blank = ""
|
|
ignore = "-"
|
|
fieldNS = "Field Namespace:"
|
|
errorText = " ERROR:"
|
|
)
|
|
|
|
var (
|
|
timeType = reflect.TypeOf(time.Time{})
|
|
)
|
|
|
|
// Mode specifies which mode the form decoder is to run
|
|
type Mode uint8
|
|
|
|
const (
|
|
|
|
// ModeImplicit tries to parse values for all
|
|
// fields that do not have an ignore '-' tag
|
|
ModeImplicit Mode = iota
|
|
|
|
// ModeExplicit only parses values for field with a field tag
|
|
// and that tag is not the ignore '-' tag
|
|
ModeExplicit
|
|
)
|
|
|
|
// AnonymousMode specifies how data should be rolled up
|
|
// or separated from anonymous structs
|
|
type AnonymousMode uint8
|
|
|
|
const (
|
|
// AnonymousEmbed embeds anonymous data when encoding
|
|
// eg. type A struct { Field string }
|
|
// type B struct { A, Field string }
|
|
// encode results: url.Values{"Field":[]string{"B FieldVal", "A FieldVal"}}
|
|
AnonymousEmbed AnonymousMode = iota
|
|
|
|
// AnonymousSeparate does not embed anonymous data when encoding
|
|
// eg. type A struct { Field string }
|
|
// type B struct { A, Field string }
|
|
// encode results: url.Values{"Field":[]string{"B FieldVal"}, "A.Field":[]string{"A FieldVal"}}
|
|
AnonymousSeparate
|
|
)
|