From ee04b72db119c1659018e157752cc2e6ba831138 Mon Sep 17 00:00:00 2001 From: Deluan Date: Wed, 24 Feb 2016 20:21:51 -0500 Subject: [PATCH] Implemented request validation in a filter --- controllers/get_license.go | 1 - controllers/get_music_folders.go | 2 -- controllers/ping.go | 1 - controllers/validation.go | 2 +- routers/router.go | 14 +++++++------- tests/test_helper.go | 2 +- 6 files changed, 9 insertions(+), 13 deletions(-) diff --git a/controllers/get_license.go b/controllers/get_license.go index a998dad4..142212f7 100644 --- a/controllers/get_license.go +++ b/controllers/get_license.go @@ -9,7 +9,6 @@ type GetLicenseController struct{ beego.Controller } // @router /rest/getLicense.view [get] func (this *GetLicenseController) Get() { - validate(this) response := responses.NewXML(&responses.License{Valid: true}) this.Ctx.Output.Body(response) } diff --git a/controllers/get_music_folders.go b/controllers/get_music_folders.go index 610a4fb3..c7076da3 100644 --- a/controllers/get_music_folders.go +++ b/controllers/get_music_folders.go @@ -10,8 +10,6 @@ type GetMusicFoldersController struct{ beego.Controller } // @router /rest/getMusicFolders.view [get] func (this *GetMusicFoldersController) Get() { - validate(this) - repository := new(repositories.MediaFolderRepository) mediaFolderList, _ := repository.GetAll() folders := make([]responses.MusicFolder, len(mediaFolderList)) diff --git a/controllers/ping.go b/controllers/ping.go index a80b1b94..df2098ce 100644 --- a/controllers/ping.go +++ b/controllers/ping.go @@ -10,7 +10,6 @@ type PingController struct{ beego.Controller } // @router /rest/ping.view [get] func (this *PingController) Get() { - validate(this) response := responses.NewEmpty() xmlBody, _ := xml.Marshal(response) this.Ctx.Output.Body([]byte(xml.Header + string(xmlBody))) diff --git a/controllers/validation.go b/controllers/validation.go index a7bf3971..8e03e67e 100644 --- a/controllers/validation.go +++ b/controllers/validation.go @@ -10,7 +10,7 @@ type ControllerInterface interface { CustomAbort(status int, body string) } -func validate(controller ControllerInterface) { +func Validate(controller ControllerInterface) { if beego.AppConfig.String("disableValidation") != "true" { checkParameters(controller) authenticate(controller) diff --git a/routers/router.go b/routers/router.go index cc1c000a..f6e2406c 100644 --- a/routers/router.go +++ b/routers/router.go @@ -1,16 +1,10 @@ -// @APIVersion 1.0.0 -// @Title beego Test API -// @Description beego has a very cool tools to autogenerate documents for your API -// @Contact astaxie@gmail.com -// @TermsOfServiceUrl http://beego.me/ -// @License Apache 2.0 -// @LicenseUrl http://www.apache.org/licenses/LICENSE-2.0.html package routers import ( "github.com/deluan/gosonic/controllers" "github.com/astaxie/beego" +"github.com/astaxie/beego/context" ) func init() { @@ -19,4 +13,10 @@ func init() { &controllers.GetLicenseController{}, &controllers.GetMusicFoldersController{}, ) + + var ValidateRequest = func(ctx *context.Context) { + controllers.Validate(&beego.Controller{Ctx: ctx}) + } + + beego.InsertFilter("/rest/*", beego.BeforeRouter, ValidateRequest) } diff --git a/tests/test_helper.go b/tests/test_helper.go index cb5ec4bd..d1f76e9e 100644 --- a/tests/test_helper.go +++ b/tests/test_helper.go @@ -4,7 +4,7 @@ import ( "fmt" "github.com/astaxie/beego" "net/http/httptest" -"net/http" + "net/http" "path/filepath" "runtime" )