diff --git a/api/get_indexes.go b/api/get_indexes.go new file mode 100644 index 00000000..28a7b5a1 --- /dev/null +++ b/api/get_indexes.go @@ -0,0 +1,23 @@ +package api + +import ( + "github.com/astaxie/beego" + "github.com/deluan/gosonic/repositories" + "github.com/deluan/gosonic/utils" + "github.com/karlkfi/inject" +) + +type GetIndexesController struct { + beego.Controller + repo repositories.ArtistIndex +} + +func (c *GetIndexesController) Prepare() { + inject.ExtractAssignable(utils.Graph, &c.repo) +} + +func (c *GetIndexesController) Get() { + if c.repo == nil { + c.CustomAbort(500, "INJECTION NOT WORKING") + } +} diff --git a/api/get_indexes_test.go b/api/get_indexes_test.go new file mode 100644 index 00000000..11cb2388 --- /dev/null +++ b/api/get_indexes_test.go @@ -0,0 +1,20 @@ +package api_test + +import ( + "testing" + + . "github.com/smartystreets/goconvey/convey" + "github.com/deluan/gosonic/tests" +) + +func TestGetIndexes(t *testing.T) { + tests.Init(t, false) + + _, w := Get(AddParams("/rest/getIndexes.view"), "TestGetIndexes") + + Convey("Subject: GetIndexes Endpoint", t, func() { + Convey("Status code should be 200", func() { + So(w.Code, ShouldEqual, 200) + }) + }) +} diff --git a/conf/inject_definitions.go b/conf/inject_definitions.go new file mode 100644 index 00000000..014cc9f1 --- /dev/null +++ b/conf/inject_definitions.go @@ -0,0 +1,15 @@ +package conf + +import ( + "github.com/deluan/gosonic/repositories" + "github.com/deluan/gosonic/utils" + "github.com/karlkfi/inject" +) + +var ( + indexRepository repositories.ArtistIndex +) + +func init () { + utils.Graph.Define(&indexRepository, inject.NewProvider(repositories.NewArtistIndexRepository)) +} diff --git a/conf/router.go b/conf/router.go index 65cad19a..98eb5e97 100644 --- a/conf/router.go +++ b/conf/router.go @@ -19,6 +19,7 @@ func mapEndpoints() { beego.NSRouter("/ping.view", &api.PingController{}, "*:Get"), beego.NSRouter("/getLicense.view", &api.GetLicenseController{}, "*:Get"), beego.NSRouter("/getMusicFolders.view", &api.GetMusicFoldersController{}, "*:Get"), + beego.NSRouter("/getIndexes.view", &api.GetIndexesController{}, "*:Get"), ) beego.AddNamespace(ns) diff --git a/utils/graph.go b/utils/graph.go new file mode 100644 index 00000000..0f1c08ae --- /dev/null +++ b/utils/graph.go @@ -0,0 +1,9 @@ +package utils + +import "github.com/karlkfi/inject" + +var Graph inject.Graph + +func init() { + Graph = inject.NewGraph() +}