Files
go-common/app/interface/main/app-show/http/http.go
2019-04-22 18:49:16 +08:00

140 lines
3.5 KiB
Go

package http
import (
"net/http"
"go-common/app/interface/main/app-show/conf"
"go-common/app/interface/main/app-show/service/banner"
"go-common/app/interface/main/app-show/service/daily"
pingSvr "go-common/app/interface/main/app-show/service/ping"
"go-common/app/interface/main/app-show/service/rank"
"go-common/app/interface/main/app-show/service/region"
"go-common/app/interface/main/app-show/service/show"
"go-common/library/ecode"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
"go-common/library/net/http/blademaster/middleware/auth"
"go-common/library/net/http/blademaster/render"
)
var (
// depend service
authSvc *auth.Auth
// self service
bannerSvc *banner.Service
regionSvc *region.Service
showSvc *show.Service
pingSvc *pingSvr.Service
rankSvc *rank.Service
dailySvc *daily.Service
)
func Init(c *conf.Config) {
initService(c)
// init external router
engineOut := bm.DefaultServer(c.BM.Outer)
outerRouter(engineOut)
// init Outer server
if err := engineOut.Start(); err != nil {
log.Error("engineOut.Start() error(%v) | config(%v)", err, c)
panic(err)
}
}
// initService init services.
func initService(c *conf.Config) {
authSvc = auth.New(nil)
bannerSvc = banner.New(c)
regionSvc = region.New(c)
showSvc = show.New(c)
pingSvc = pingSvr.New(c)
rankSvc = rank.New(c)
dailySvc = daily.New(c)
}
// outerRouter init outer router api path.
func outerRouter(e *bm.Engine) {
e.Ping(ping)
bnnr := e.Group("/x/v2/banner", authSvc.GuestMobile)
{
bnnr.GET("", banners)
}
region := e.Group("/x/v2/region", authSvc.GuestMobile)
{
region.GET("", regions)
region.GET("/list", regionsList)
region.GET("/index", regionsIndex)
region.GET("/show", regionShow)
region.GET("/show/dynamic", regionShowDynamic)
region.GET("/show/child", regionChildShow)
region.GET("/show/child/list", regionChildListShow)
region.GET("/dynamic", regionDynamic)
region.GET("/dynamic/list", regionDynamicList)
region.GET("/dynamic/child", regionDynamicChild)
region.GET("/dynamic/child/list", regionDynamicChildList)
}
rank := e.Group("/x/v2/rank", authSvc.GuestMobile)
{
rank.GET("", rankAll)
rank.GET("/region", rankRegion)
}
show := e.Group("/x/v2/show", authSvc.GuestMobile)
{
show.GET("", shows)
show.GET("/region", showsRegion)
show.GET("/index", showsIndex)
show.GET("/widget", showWidget)
show.GET("/temp", showTemps)
show.GET("/change", showChange)
show.GET("/change/live", showLiveChange)
show.GET("/change/region", showRegionChange)
show.GET("/change/bangumi", showBangumiChange)
show.GET("/change/dislike", showDislike)
show.GET("/change/article", showArticleChange)
show.GET("/popular", popular)
show.GET("/popular/index", popular2)
}
daily := e.Group("/x/v2/daily", authSvc.GuestMobile)
{
daily.GET("/list", dailyID)
}
column := e.Group("/x/v2/column", authSvc.GuestMobile)
{
column.GET("", columnList)
}
cg := e.Group("/x/v2/category", authSvc.GuestMobile)
{
cg.GET("", category)
}
}
//returnJSON return json no message
func returnJSON(c *bm.Context, data interface{}, err error) {
code := http.StatusOK
c.Error = err
bcode := ecode.Cause(err)
c.Render(code, render.JSON{
Code: bcode.Code(),
Message: "",
Data: data,
})
}
//returnDataJSON return json no message
func returnDataJSON(c *bm.Context, data map[string]interface{}, ttl int, err error) {
code := http.StatusOK
if ttl < 1 {
ttl = 1
}
if err != nil {
c.JSON(nil, err)
} else {
if data != nil {
data["code"] = 0
data["message"] = ""
data["ttl"] = ttl
}
c.Render(code, render.MapJSON(data))
}
}