1
0
mirror of https://github.com/astaxie/beego.git synced 2024-11-22 17:40:55 +00:00

golint fixes

This commit is contained in:
Eyal Post 2017-04-30 19:28:26 +03:00
parent cfb2f68dd6
commit 1b8f05cef1
6 changed files with 27 additions and 13 deletions

View File

@ -8,6 +8,7 @@ import (
"github.com/astaxie/beego/logs" "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) { func ConvertParams(methodParams []*MethodParam, methodType reflect.Type, ctx *beecontext.Context) (result []reflect.Value) {
result = make([]reflect.Value, 0, len(methodParams)) result = make([]reflect.Value, 0, len(methodParams))
for i := 0; i < len(methodParams); i++ { 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) { func parseValue(param *MethodParam, paramValue string, paramType reflect.Type) (result reflect.Value, err error) {
if paramValue == "" { if paramValue == "" {
return reflect.Zero(paramType), nil 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) { func safeConvert(value reflect.Value, t reflect.Type) (result reflect.Value, err error) {

View File

@ -5,7 +5,7 @@ import (
"strings" "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 { type MethodParam struct {
name string name string
location paramLocation location paramLocation
@ -22,6 +22,7 @@ const (
header header
) )
//New creates a new MethodParam with name and specific options
func New(name string, opts ...MethodParamOption) *MethodParam { func New(name string, opts ...MethodParamOption) *MethodParam {
return newParam(name, nil, opts) return newParam(name, nil, opts)
} }
@ -34,6 +35,7 @@ func newParam(name string, parser paramParser, opts []MethodParamOption) (param
return return
} }
//Make creates an array of MethodParmas or an empty array
func Make(list ...*MethodParam) []*MethodParam { func Make(list ...*MethodParam) []*MethodParam {
if len(list) > 0 { if len(list) > 0 {
return list return list

View File

@ -4,24 +4,30 @@ import (
"fmt" "fmt"
) )
// MethodParamOption defines a func which apply options on a MethodParam
type MethodParamOption func(*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) { var IsRequired MethodParamOption = func(p *MethodParam) {
p.required = true p.required = true
} }
// InHeader indicates that this param is passed via an http header
var InHeader MethodParamOption = func(p *MethodParam) { var InHeader MethodParamOption = func(p *MethodParam) {
p.location = header p.location = header
} }
// InPath indicates that this param is part of the URL path
var InPath MethodParamOption = func(p *MethodParam) { var InPath MethodParamOption = func(p *MethodParam) {
p.location = path p.location = path
} }
// InBody indicates that this param is passed as an http request body
var InBody MethodParamOption = func(p *MethodParam) { var InBody MethodParamOption = func(p *MethodParam) {
p.location = body p.location = body
} }
// Default provides a default value for the http param
func Default(defValue interface{}) MethodParamOption { func Default(defValue interface{}) MethodParamOption {
return func(p *MethodParam) { return func(p *MethodParam) {
if defValue != nil { if defValue != nil {

View File

@ -6,6 +6,7 @@ import (
beecontext "github.com/astaxie/beego/context" beecontext "github.com/astaxie/beego/context"
) )
// Renderer defines an http response renderer
type Renderer interface { type Renderer interface {
Render(ctx *beecontext.Context) Render(ctx *beecontext.Context)
} }
@ -16,12 +17,14 @@ func (f rendererFunc) Render(ctx *beecontext.Context) {
f(ctx) f(ctx)
} }
// StatusCode sets the http response status code
type StatusCode int type StatusCode int
func (s StatusCode) Error() string { func (s StatusCode) Error() string {
return strconv.Itoa(int(s)) return strconv.Itoa(int(s))
} }
// Render sets the http status code
func (s StatusCode) Render(ctx *beecontext.Context) { func (s StatusCode) Render(ctx *beecontext.Context) {
ctx.Output.SetStatus(int(s)) ctx.Output.SetStatus(int(s))
} }

View File

@ -4,7 +4,8 @@ import (
beecontext "github.com/astaxie/beego/context" 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) { return rendererFunc(func(ctx *beecontext.Context) {
var ( var (
hasIndent = true 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) { return statusCodeWithRender{302, func(ctx *beecontext.Context) {
ctx.Redirect(302, localurl) ctx.Redirect(302, localurl)
}} }}
} }
// RenderMethodResult renders the return value of a controller method to the output
func RenderMethodResult(result interface{}, ctx *beecontext.Context) { func RenderMethodResult(result interface{}, ctx *beecontext.Context) {
if result != nil { if result != nil {
renderer, ok := result.(Renderer) renderer, ok := result.(Renderer)
@ -42,7 +45,7 @@ func RenderMethodResult(result interface{}, ctx *beecontext.Context) {
if ok { if ok {
renderer = errorRenderer(err) renderer = errorRenderer(err)
} else { } else {
renderer = Json(result) renderer = JSON(result)
} }
} }
renderer.Render(ctx) renderer.Render(ctx)

View File

@ -813,7 +813,7 @@ func (p *ControllerRegister) ServeHTTP(rw http.ResponseWriter, r *http.Request)
default: default:
if !execController.HandlerFunc(runMethod) { if !execController.HandlerFunc(runMethod) {
method := vc.MethodByName(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) out := method.Call(in)
//For backward compatibility we only handle response if we had incoming methodParams //For backward compatibility we only handle response if we had incoming methodParams