1
0
mirror of https://github.com/astaxie/beego.git synced 2024-06-24 12:14:13 +00:00
Beego/param/methodparams.go

58 lines
1.3 KiB
Go
Raw Normal View History

2017-04-21 12:26:41 +00:00
package param
//Keeps param information to be auto passed to controller methods
type MethodParam struct {
name string
parser paramParser
location paramLocation
required bool
2017-04-22 22:33:50 +00:00
defValue string
2017-04-21 12:26:41 +00:00
}
type paramLocation byte
const (
param paramLocation = iota
body
header
)
type MethodParamOption func(*MethodParam)
func Bool(name string, opts ...MethodParamOption) *MethodParam {
return newParam(name, boolParser{}, opts)
}
func String(name string, opts ...MethodParamOption) *MethodParam {
return newParam(name, stringParser{}, opts)
}
func Int(name string, opts ...MethodParamOption) *MethodParam {
return newParam(name, intParser{}, opts)
}
2017-04-22 22:33:50 +00:00
func Float(name string, opts ...MethodParamOption) *MethodParam {
return newParam(name, floatParser{}, opts)
}
func Time(name string, opts ...MethodParamOption) *MethodParam {
return newParam(name, timeParser{}, opts)
}
func Json(name string, opts ...MethodParamOption) *MethodParam {
return newParam(name, jsonParser{}, opts)
}
2017-04-23 18:37:09 +00:00
func AsSlice(param *MethodParam) *MethodParam {
param.parser = sliceParser(param.parser)
return param
}
2017-04-21 12:26:41 +00:00
func newParam(name string, parser paramParser, opts []MethodParamOption) (param *MethodParam) {
param = &MethodParam{name: name, parser: parser}
for _, option := range opts {
option(param)
}
return
}