mirror of
https://github.com/astaxie/beego.git
synced 2024-11-22 12:30:54 +00:00
golint fixes
This commit is contained in:
parent
cfb2f68dd6
commit
1b8f05cef1
@ -8,6 +8,7 @@ import (
|
||||
"github.com/astaxie/beego/logs"
|
||||
)
|
||||
|
||||
// ConvertParams converts http method params to values that will be passed to the method controller as arguments
|
||||
func ConvertParams(methodParams []*MethodParam, methodType reflect.Type, ctx *beecontext.Context) (result []reflect.Value) {
|
||||
result = make([]reflect.Value, 0, len(methodParams))
|
||||
for i := 0; i < len(methodParams); i++ {
|
||||
@ -55,15 +56,14 @@ func getParamValue(param *MethodParam, ctx *beecontext.Context) string {
|
||||
func parseValue(param *MethodParam, paramValue string, paramType reflect.Type) (result reflect.Value, err error) {
|
||||
if paramValue == "" {
|
||||
return reflect.Zero(paramType), nil
|
||||
} else {
|
||||
parser := getParser(param, paramType)
|
||||
value, err := parser.parse(paramValue, paramType)
|
||||
if err != nil {
|
||||
return result, err
|
||||
}
|
||||
|
||||
return safeConvert(reflect.ValueOf(value), paramType)
|
||||
}
|
||||
parser := getParser(param, paramType)
|
||||
value, err := parser.parse(paramValue, paramType)
|
||||
if err != nil {
|
||||
return result, err
|
||||
}
|
||||
|
||||
return safeConvert(reflect.ValueOf(value), paramType)
|
||||
}
|
||||
|
||||
func safeConvert(value reflect.Value, t reflect.Type) (result reflect.Value, err error) {
|
||||
|
@ -5,7 +5,7 @@ import (
|
||||
"strings"
|
||||
)
|
||||
|
||||
//Keeps param information to be auto passed to controller methods
|
||||
//MethodParam keeps param information to be auto passed to controller methods
|
||||
type MethodParam struct {
|
||||
name string
|
||||
location paramLocation
|
||||
@ -22,6 +22,7 @@ const (
|
||||
header
|
||||
)
|
||||
|
||||
//New creates a new MethodParam with name and specific options
|
||||
func New(name string, opts ...MethodParamOption) *MethodParam {
|
||||
return newParam(name, nil, opts)
|
||||
}
|
||||
@ -34,6 +35,7 @@ func newParam(name string, parser paramParser, opts []MethodParamOption) (param
|
||||
return
|
||||
}
|
||||
|
||||
//Make creates an array of MethodParmas or an empty array
|
||||
func Make(list ...*MethodParam) []*MethodParam {
|
||||
if len(list) > 0 {
|
||||
return list
|
||||
|
@ -4,24 +4,30 @@ import (
|
||||
"fmt"
|
||||
)
|
||||
|
||||
// MethodParamOption defines a func which apply options on a MethodParam
|
||||
type MethodParamOption func(*MethodParam)
|
||||
|
||||
// IsRequired indicates that this param is required and can not be ommited from the http request
|
||||
var IsRequired MethodParamOption = func(p *MethodParam) {
|
||||
p.required = true
|
||||
}
|
||||
|
||||
// InHeader indicates that this param is passed via an http header
|
||||
var InHeader MethodParamOption = func(p *MethodParam) {
|
||||
p.location = header
|
||||
}
|
||||
|
||||
// InPath indicates that this param is part of the URL path
|
||||
var InPath MethodParamOption = func(p *MethodParam) {
|
||||
p.location = path
|
||||
}
|
||||
|
||||
// InBody indicates that this param is passed as an http request body
|
||||
var InBody MethodParamOption = func(p *MethodParam) {
|
||||
p.location = body
|
||||
}
|
||||
|
||||
// Default provides a default value for the http param
|
||||
func Default(defValue interface{}) MethodParamOption {
|
||||
return func(p *MethodParam) {
|
||||
if defValue != nil {
|
||||
|
@ -6,6 +6,7 @@ import (
|
||||
beecontext "github.com/astaxie/beego/context"
|
||||
)
|
||||
|
||||
// Renderer defines an http response renderer
|
||||
type Renderer interface {
|
||||
Render(ctx *beecontext.Context)
|
||||
}
|
||||
@ -16,12 +17,14 @@ func (f rendererFunc) Render(ctx *beecontext.Context) {
|
||||
f(ctx)
|
||||
}
|
||||
|
||||
// StatusCode sets the http response status code
|
||||
type StatusCode int
|
||||
|
||||
func (s StatusCode) Error() string {
|
||||
return strconv.Itoa(int(s))
|
||||
}
|
||||
|
||||
// Render sets the http status code
|
||||
func (s StatusCode) Render(ctx *beecontext.Context) {
|
||||
ctx.Output.SetStatus(int(s))
|
||||
}
|
||||
|
@ -4,7 +4,8 @@ import (
|
||||
beecontext "github.com/astaxie/beego/context"
|
||||
)
|
||||
|
||||
func Json(value interface{}, encoding ...bool) Renderer {
|
||||
// JSON renders value to the response as JSON
|
||||
func JSON(value interface{}, encoding ...bool) Renderer {
|
||||
return rendererFunc(func(ctx *beecontext.Context) {
|
||||
var (
|
||||
hasIndent = true
|
||||
@ -28,12 +29,14 @@ func errorRenderer(err error) Renderer {
|
||||
})
|
||||
}
|
||||
|
||||
func Redirect(localurl string) statusCodeWithRender {
|
||||
// Redirect renders http 302 with a URL
|
||||
func Redirect(localurl string) Renderer {
|
||||
return statusCodeWithRender{302, func(ctx *beecontext.Context) {
|
||||
ctx.Redirect(302, localurl)
|
||||
}}
|
||||
}
|
||||
|
||||
// RenderMethodResult renders the return value of a controller method to the output
|
||||
func RenderMethodResult(result interface{}, ctx *beecontext.Context) {
|
||||
if result != nil {
|
||||
renderer, ok := result.(Renderer)
|
||||
@ -42,7 +45,7 @@ func RenderMethodResult(result interface{}, ctx *beecontext.Context) {
|
||||
if ok {
|
||||
renderer = errorRenderer(err)
|
||||
} else {
|
||||
renderer = Json(result)
|
||||
renderer = JSON(result)
|
||||
}
|
||||
}
|
||||
renderer.Render(ctx)
|
||||
|
@ -813,7 +813,7 @@ func (p *ControllerRegister) ServeHTTP(rw http.ResponseWriter, r *http.Request)
|
||||
default:
|
||||
if !execController.HandlerFunc(runMethod) {
|
||||
method := vc.MethodByName(runMethod)
|
||||
var in []reflect.Value = param.ConvertParams(methodParams, method.Type(), context)
|
||||
in := param.ConvertParams(methodParams, method.Type(), context)
|
||||
out := method.Call(in)
|
||||
|
||||
//For backward compatibility we only handle response if we had incoming methodParams
|
||||
|
Loading…
Reference in New Issue
Block a user