2015-09-25 22:33:55 +00:00
|
|
|
package main
|
|
|
|
|
|
|
|
import (
|
|
|
|
"net/http"
|
|
|
|
"os"
|
|
|
|
"log"
|
|
|
|
"regexp"
|
|
|
|
|
|
|
|
. "git.1750studios.com/gronkhDE/gogronkh/gserver/utlis"
|
|
|
|
"git.1750studios.com/gronkhDE/gogronkh/gserver/apiv3"
|
|
|
|
|
|
|
|
"git.1750studios.com/gronkhDE/gogronkh/config"
|
|
|
|
"git.1750studios.com/gronkhDE/gogronkh/database"
|
|
|
|
|
|
|
|
"github.com/gin-gonic/gin"
|
|
|
|
)
|
|
|
|
|
|
|
|
var descRegEx *regexp.Regexp
|
|
|
|
|
|
|
|
func initRouter() *gin.Engine {
|
|
|
|
router := gin.Default()
|
|
|
|
|
|
|
|
router.Use(PiwikRequest())
|
|
|
|
|
|
|
|
router.Static("/assets", config.C.AssetsDirectory)
|
|
|
|
router.Static("/art", config.C.ImageDirectory)
|
|
|
|
router.LoadHTMLGlob(config.C.TemplatesDirectory + "*")
|
|
|
|
|
|
|
|
|
|
|
|
// Web UI
|
|
|
|
router.GET("/", GetIndex)
|
2016-02-28 20:46:18 +00:00
|
|
|
router.GET("/lets-play/:lslug/:eslug/", GetLEpisode)
|
|
|
|
router.GET("/lets-play/:lslug/", GetLEpisode)
|
|
|
|
router.GET("/lets-play/", GetLps)
|
|
|
|
router.GET("/testet/", GetLt)
|
|
|
|
router.GET("/testet/:tslug/", GetLt)
|
|
|
|
router.GET("/zeige/", GetAt)
|
|
|
|
router.GET("/zeige/:aslug/", GetAt)
|
|
|
|
router.GET("/zeige/:aslug/lets-play/", GetAtLps)
|
|
|
|
router.GET("/zeige/:aslug/testet/", GetAtLts)
|
|
|
|
router.GET("/zeige/:aslug/episoden/", GetAtEps)
|
2015-09-25 22:33:55 +00:00
|
|
|
|
2016-02-14 00:26:46 +00:00
|
|
|
admin := router.Group("/admin")
|
|
|
|
|
|
|
|
admin.GET("/", GetAdminIndex)
|
|
|
|
|
2016-02-28 20:46:18 +00:00
|
|
|
admin.GET("/lets-play/", GetAdminLetsPlay)
|
|
|
|
admin.GET("/lets-play/:id/", GetAdminLetsPlay)
|
|
|
|
admin.POST("/lets-play/:id/", PostAdminLetsPlay)
|
2016-02-14 00:26:46 +00:00
|
|
|
|
2016-02-28 20:46:18 +00:00
|
|
|
admin.GET("/lets-test/", GetAdminLetsTest)
|
|
|
|
admin.GET("/lets-test/:id/", GetAdminLetsTest)
|
|
|
|
admin.POST("/lets-test/:id/", PostAdminLetsTest)
|
2016-02-14 00:26:46 +00:00
|
|
|
|
2016-02-28 20:46:18 +00:00
|
|
|
admin.GET("/episode/", GetAdminEpisode)
|
|
|
|
admin.GET("/episode/:id/", GetAdminEpisode)
|
|
|
|
admin.POST("/episode/:id/", PostAdminEpisode)
|
2016-02-14 00:26:46 +00:00
|
|
|
|
2016-02-28 20:46:18 +00:00
|
|
|
admin.GET("/sprecher/", GetAdminAuthor)
|
|
|
|
admin.GET("/sprecher/:id/", GetAdminAuthor)
|
|
|
|
admin.POST("/sprecher/:id/", PostAdminAuthor)
|
2015-09-25 22:33:55 +00:00
|
|
|
|
|
|
|
// API
|
|
|
|
api := router.Group("/api")
|
|
|
|
|
2016-02-28 20:46:18 +00:00
|
|
|
api.GET("/version/", func(c *gin.Context) {
|
2015-09-25 22:33:55 +00:00
|
|
|
var current int = 3
|
2016-01-01 14:32:29 +00:00
|
|
|
var deprecated []int = []int{}
|
|
|
|
var deleted []int = []int{2, 1, 0,}
|
2015-09-25 22:33:55 +00:00
|
|
|
c.JSON(http.StatusOK, gin.H{"current": current, "deprecated": deprecated, "deleted": deleted})
|
|
|
|
})
|
|
|
|
|
|
|
|
// API Version: v3
|
|
|
|
v3 := api.Group("/v3")
|
|
|
|
{
|
2016-02-28 20:46:18 +00:00
|
|
|
v3.GET("/authors/", apiv3.GetAuthors)
|
|
|
|
v3.GET("/authors/:aid/", apiv3.GetAuthors)
|
|
|
|
v3.GET("/author/:aid/tests/", apiv3.GetAuthorTests)
|
|
|
|
v3.GET("/author/:aid/lets-plays/", apiv3.GetAuthorLps)
|
|
|
|
|
|
|
|
v3.GET("/tests/", apiv3.GetTests)
|
|
|
|
v3.GET("/tests/:tid/", apiv3.GetTests)
|
|
|
|
|
|
|
|
v3.GET("/lets-plays/", apiv3.GetLps)
|
|
|
|
v3.GET("/lets-plays/:lid/", apiv3.GetLps)
|
|
|
|
v3.GET("/lets-play/:lid/episodes/", apiv3.GetLpEpisodes)
|
|
|
|
v3.GET("/lets-play/:lid/episodes/:eid/", apiv3.GetLpEpisodes)
|
|
|
|
|
|
|
|
v3.GET("/recent/", apiv3.GetRecent)
|
|
|
|
v3.GET("/recent/:limit/", apiv3.GetRecent)
|
|
|
|
v3.GET("/search/:type/:query/", apiv3.GetSearch)
|
2015-09-25 22:33:55 +00:00
|
|
|
}
|
2016-02-14 00:26:46 +00:00
|
|
|
|
2015-09-25 22:33:55 +00:00
|
|
|
return router
|
|
|
|
}
|
|
|
|
|
|
|
|
func main() {
|
|
|
|
log.SetFlags(log.Lshortfile)
|
|
|
|
log.SetOutput(os.Stderr)
|
|
|
|
var err error
|
|
|
|
if os.Getenv("GIN_MODE") == "release" {
|
|
|
|
err = config.LoadConfig("/etc/gogronkh/gronkh.json")
|
|
|
|
} else {
|
|
|
|
err = config.LoadConfig("/home/andreas/.gronkh.json")
|
|
|
|
}
|
|
|
|
if err != nil {
|
|
|
|
log.Fatalf("FAT Config error: %+v", err)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
descRegEx = regexp.MustCompile("(?m)^\u00B7{5,}$")
|
|
|
|
err = database.InitDb(config.C.DatabaseConnection)
|
|
|
|
|
|
|
|
router := initRouter()
|
|
|
|
|
|
|
|
if config.C.UseSocket {
|
|
|
|
router.RunUnix(config.C.BindSocket)
|
|
|
|
} else {
|
|
|
|
router.Run(config.C.BindAddress)
|
|
|
|
}
|
|
|
|
}
|