2016-03-29 14:27:14 -08:00
|
|
|
package init
|
2016-02-23 14:41:35 -09:00
|
|
|
|
|
|
|
|
import (
|
2016-02-25 12:31:06 -09:00
|
|
|
"github.com/deluan/gosonic/api"
|
2016-02-23 14:41:35 -09:00
|
|
|
|
|
|
|
|
"github.com/astaxie/beego"
|
2016-02-25 08:35:21 -09:00
|
|
|
"github.com/astaxie/beego/context"
|
2016-03-24 16:00:35 -08:00
|
|
|
"github.com/astaxie/beego/plugins/cors"
|
2016-02-25 12:31:06 -09:00
|
|
|
"github.com/deluan/gosonic/controllers"
|
2016-02-23 14:41:35 -09:00
|
|
|
)
|
|
|
|
|
|
|
|
|
|
func init() {
|
2016-02-27 15:08:04 -09:00
|
|
|
mapEndpoints()
|
|
|
|
|
mapControllers()
|
2016-03-24 16:00:35 -08:00
|
|
|
initFilters()
|
2016-02-27 15:08:04 -09:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func mapEndpoints() {
|
2016-02-25 12:31:06 -09:00
|
|
|
ns := beego.NewNamespace("/rest",
|
2016-03-09 06:22:10 -09:00
|
|
|
beego.NSRouter("/ping.view", &api.SystemController{}, "*:Ping"),
|
|
|
|
|
beego.NSRouter("/getLicense.view", &api.SystemController{}, "*:GetLicense"),
|
|
|
|
|
|
2016-03-24 10:44:21 -08:00
|
|
|
beego.NSRouter("/getMusicFolders.view", &api.BrowsingController{}, "*:GetMusicFolders"),
|
2016-03-09 06:22:10 -09:00
|
|
|
beego.NSRouter("/getIndexes.view", &api.BrowsingController{}, "*:GetIndexes"),
|
2016-03-24 10:44:21 -08:00
|
|
|
beego.NSRouter("/getMusicDirectory.view", &api.BrowsingController{}, "*:GetMusicDirectory"),
|
2016-03-24 20:04:22 -08:00
|
|
|
beego.NSRouter("/getSong.view", &api.BrowsingController{}, "*:GetSong"),
|
2016-03-27 16:35:10 -08:00
|
|
|
beego.NSRouter("/getArtists.view", &api.BrowsingController{}, "*:GetArtists"),
|
2016-03-27 17:27:45 -08:00
|
|
|
beego.NSRouter("/getArtist.view", &api.BrowsingController{}, "*:GetArtist"),
|
2016-03-28 05:16:03 -08:00
|
|
|
beego.NSRouter("/getAlbum.view", &api.BrowsingController{}, "*:GetAlbum"),
|
2016-03-09 06:22:10 -09:00
|
|
|
|
2016-03-10 20:37:07 -09:00
|
|
|
beego.NSRouter("/search2.view", &api.SearchingController{}, "*:Search2"),
|
2016-03-28 06:01:43 -08:00
|
|
|
beego.NSRouter("/search3.view", &api.SearchingController{}, "*:Search3"),
|
2016-03-10 20:37:07 -09:00
|
|
|
|
2016-03-24 10:44:21 -08:00
|
|
|
beego.NSRouter("/getCoverArt.view", &api.MediaRetrievalController{}, "*:GetCoverArt"),
|
2016-03-21 16:31:28 -08:00
|
|
|
beego.NSRouter("/getAvatar.view", &api.MediaRetrievalController{}, "*:GetAvatar"),
|
2016-03-04 09:12:56 -09:00
|
|
|
beego.NSRouter("/stream.view", &api.StreamController{}, "*:Stream"),
|
|
|
|
|
beego.NSRouter("/download.view", &api.StreamController{}, "*:Download"),
|
2016-03-09 06:22:10 -09:00
|
|
|
|
2016-03-11 16:49:01 -09:00
|
|
|
beego.NSRouter("/scrobble.view", &api.MediaAnnotationController{}, "*:Scrobble"),
|
2016-03-23 13:46:54 -08:00
|
|
|
beego.NSRouter("/star.view", &api.MediaAnnotationController{}, "*:Star"),
|
|
|
|
|
beego.NSRouter("/unstar.view", &api.MediaAnnotationController{}, "*:Unstar"),
|
2016-03-23 15:37:48 -08:00
|
|
|
beego.NSRouter("/setRating.view", &api.MediaAnnotationController{}, "*:SetRating"),
|
2016-03-11 16:49:01 -09:00
|
|
|
|
2016-03-14 07:35:48 -08:00
|
|
|
beego.NSRouter("/getAlbumList.view", &api.AlbumListController{}, "*:GetAlbumList"),
|
2016-03-27 19:04:05 -08:00
|
|
|
beego.NSRouter("/getAlbumList2.view", &api.AlbumListController{}, "*:GetAlbumList2"),
|
2016-03-14 07:35:48 -08:00
|
|
|
beego.NSRouter("/getStarred.view", &api.AlbumListController{}, "*:GetStarred"),
|
2016-03-28 05:46:16 -08:00
|
|
|
beego.NSRouter("/getStarred2.view", &api.AlbumListController{}, "*:GetStarred2"),
|
2016-03-17 05:34:32 -08:00
|
|
|
beego.NSRouter("/getNowPlaying.view", &api.AlbumListController{}, "*:GetNowPlaying"),
|
2016-03-28 20:01:27 -08:00
|
|
|
beego.NSRouter("/getRandomSongs.view", &api.AlbumListController{}, "*:GetRandomSongs"),
|
2016-03-09 06:22:10 -09:00
|
|
|
|
2016-03-24 10:44:21 -08:00
|
|
|
beego.NSRouter("/getPlaylists.view", &api.PlaylistsController{}, "*:GetPlaylists"),
|
|
|
|
|
beego.NSRouter("/getPlaylist.view", &api.PlaylistsController{}, "*:GetPlaylist"),
|
|
|
|
|
beego.NSRouter("/createPlaylist.view", &api.PlaylistsController{}, "*:CreatePlaylist"),
|
|
|
|
|
beego.NSRouter("/updatePlaylist.view", &api.PlaylistsController{}, "*:UpdatePlaylist"),
|
|
|
|
|
beego.NSRouter("/deletePlaylist.view", &api.PlaylistsController{}, "*:DeletePlaylist"),
|
2016-03-09 06:22:10 -09:00
|
|
|
|
|
|
|
|
beego.NSRouter("/getUser.view", &api.UsersController{}, "*:GetUser"),
|
2016-02-24 07:29:26 -09:00
|
|
|
)
|
2016-02-25 12:31:06 -09:00
|
|
|
beego.AddNamespace(ns)
|
|
|
|
|
|
2016-02-27 15:08:04 -09:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func mapControllers() {
|
2016-02-25 12:31:06 -09:00
|
|
|
beego.Router("/", &controllers.MainController{})
|
2016-02-25 21:32:31 -09:00
|
|
|
beego.Router("/sync", &controllers.SyncController{})
|
2016-02-24 16:21:51 -09:00
|
|
|
|
2016-02-27 15:08:04 -09:00
|
|
|
beego.ErrorController(&controllers.MainController{})
|
|
|
|
|
}
|
|
|
|
|
|
2016-03-24 16:00:35 -08:00
|
|
|
func initFilters() {
|
2016-02-24 16:21:51 -09:00
|
|
|
var ValidateRequest = func(ctx *context.Context) {
|
2016-03-15 13:06:23 -08:00
|
|
|
c := api.BaseAPIController{}
|
2016-03-02 09:04:55 -09:00
|
|
|
c.Ctx = ctx
|
2016-03-17 05:34:32 -08:00
|
|
|
c.Data = make(map[interface{}]interface{})
|
2016-03-02 09:04:55 -09:00
|
|
|
api.Validate(c)
|
2016-02-24 16:21:51 -09:00
|
|
|
}
|
2016-03-24 16:00:35 -08:00
|
|
|
beego.InsertFilter("/rest/*", beego.BeforeRouter, cors.Allow(&cors.Options{
|
|
|
|
|
AllowOrigins: []string{"*"},
|
|
|
|
|
AllowMethods: []string{"GET", "POST", "PUT", "DELETE", "OPTIONS"},
|
|
|
|
|
AllowHeaders: []string{"Origin", "Authorization", "Access-Control-Allow-Origin"},
|
|
|
|
|
ExposeHeaders: []string{"Content-Length", "Access-Control-Allow-Origin"},
|
|
|
|
|
AllowCredentials: true,
|
|
|
|
|
}))
|
2016-02-24 16:21:51 -09:00
|
|
|
|
|
|
|
|
beego.InsertFilter("/rest/*", beego.BeforeRouter, ValidateRequest)
|
2016-03-02 09:18:39 -09:00
|
|
|
}
|