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) } }