GoGronkh/gserver/main.go
Andreas Mieke 62c2481bd3 Adding admin interface
Also changing year in copyright and fixing search
2016-02-14 01:26:46 +01:00

121 lines
3.4 KiB
Go

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)
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)
admin := router.Group("/admin")
admin.GET("/", GetAdminIndex)
admin.GET("/lets-play", GetAdminLetsPlay)
admin.GET("/lets-play/:id", GetAdminLetsPlay)
admin.POST("/lets-play/:id", PostAdminLetsPlay)
admin.GET("/lets-test", GetAdminLetsTest)
admin.GET("/lets-test/:id", GetAdminLetsTest)
admin.POST("/lets-test/:id", PostAdminLetsTest)
admin.GET("/episode", GetAdminEpisode)
admin.GET("/episode/:id", GetAdminEpisode)
admin.POST("/episode/:id", PostAdminEpisode)
admin.GET("/sprecher", GetAdminAuthor)
admin.GET("/sprecher/:id", GetAdminAuthor)
admin.POST("/sprecher/:id", PostAdminAuthor)
// API
api := router.Group("/api")
api.GET("/version", func(c *gin.Context) {
var current int = 3
var deprecated []int = []int{}
var deleted []int = []int{2, 1, 0,}
c.JSON(http.StatusOK, gin.H{"current": current, "deprecated": deprecated, "deleted": deleted})
})
// API Version: v3
v3 := api.Group("/v3")
{
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)
}
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)
}
}