211 lines
6.7 KiB
Go
211 lines
6.7 KiB
Go
|
package http
|
||
|
|
||
|
import (
|
||
|
"net/http"
|
||
|
|
||
|
"go-common/app/interface/main/web/conf"
|
||
|
"go-common/app/interface/main/web/service"
|
||
|
"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/middleware/cache"
|
||
|
"go-common/library/net/http/blademaster/middleware/cache/store"
|
||
|
"go-common/library/net/http/blademaster/middleware/verify"
|
||
|
)
|
||
|
|
||
|
var (
|
||
|
webSvc *service.Service
|
||
|
authSvr *auth.Auth
|
||
|
vfySvr *verify.Verify
|
||
|
|
||
|
// cache components
|
||
|
cacheSvr *cache.Cache
|
||
|
deg *cache.Degrader
|
||
|
)
|
||
|
|
||
|
// Init init
|
||
|
func Init(c *conf.Config, s *service.Service) {
|
||
|
authSvr = auth.New(c.Auth)
|
||
|
vfySvr = verify.New(c.Verify)
|
||
|
webSvc = s
|
||
|
cacheSvr = cache.New(store.NewMemcache(c.DegradeConfig.Memcache))
|
||
|
deg = cache.NewDegrader(c.DegradeConfig.Expire)
|
||
|
// init outer router
|
||
|
engine := bm.NewServer(c.HTTPServer)
|
||
|
engine.Use(bm.Recovery(), bm.Logger(), bm.Trace(), bm.Mobile())
|
||
|
outerRouter(engine)
|
||
|
internalRouter(engine)
|
||
|
if err := engine.Start(); err != nil {
|
||
|
log.Error("engine.Start error(%v)", err)
|
||
|
panic(err)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func outerRouter(e *bm.Engine) {
|
||
|
e.Ping(ping)
|
||
|
e.GET("/x/web-interface/view", authSvr.Guest, view)
|
||
|
group := e.Group("/x/web-interface", bm.CSRF(), bm.CORS())
|
||
|
{
|
||
|
arcGroup := group.Group("/archive")
|
||
|
{
|
||
|
arcGroup.GET("/coins", authSvr.User, coins)
|
||
|
arcGroup.GET("/stat", archiveStat)
|
||
|
arcGroup.GET("/desc", description)
|
||
|
arcGroup.POST("/report", authSvr.User, arcReport)
|
||
|
arcGroup.POST("/appeal", authSvr.User, arcAppeal)
|
||
|
arcGroup.GET("/appeal/tags", appealTags)
|
||
|
arcGroup.GET("/author/recommend", authorRecommend)
|
||
|
arcGroup.GET("/related", relatedArcs)
|
||
|
arcGroup.POST("/like", authSvr.User, like)
|
||
|
arcGroup.POST("/like/triple", authSvr.User, likeTriple)
|
||
|
arcGroup.GET("/has/like", authSvr.User, hasLike)
|
||
|
arcGroup.GET("/ugc/pay", authSvr.User, arcUGCPay)
|
||
|
arcGroup.GET("/relation", authSvr.User, arcRelation)
|
||
|
}
|
||
|
dyGroup := group.Group("/dynamic")
|
||
|
{
|
||
|
dyGroup.GET("/region", dynamicRegion)
|
||
|
dyGroup.GET("/index", dynamicRegions)
|
||
|
dyGroup.GET("/tag", dynamicRegionTag)
|
||
|
dyGroup.GET("/total", dynamicRegionTotal)
|
||
|
}
|
||
|
rankGroup := group.Group("/ranking")
|
||
|
{
|
||
|
rankGroup.GET("", ranking)
|
||
|
rankGroup.GET("/index", rankingIndex)
|
||
|
rankGroup.GET("/region", rankingRegion)
|
||
|
rankGroup.GET("/recommend", rankingRecommend)
|
||
|
rankGroup.GET("/tag", rankingTag)
|
||
|
}
|
||
|
tagGroup := group.Group("/tag")
|
||
|
{
|
||
|
tagGroup.GET("/top", tagAids)
|
||
|
}
|
||
|
artGroup := group.Group("/article")
|
||
|
{
|
||
|
artGroup.GET("/list", authSvr.Guest, articleList)
|
||
|
artGroup.GET("/up/list", authSvr.Guest, articleUpList)
|
||
|
artGroup.GET("/categories", categories)
|
||
|
artGroup.GET("/newcount", newCount)
|
||
|
artGroup.GET("/early", upMoreArts)
|
||
|
}
|
||
|
coinGroup := group.Group("/coin")
|
||
|
{
|
||
|
coinGroup.POST("/add", authSvr.User, addCoin)
|
||
|
coinGroup.GET("/today/exp", authSvr.User, coinExp)
|
||
|
}
|
||
|
onlineGroup := group.Group("/online")
|
||
|
{
|
||
|
onlineGroup.GET("", onlineInfo)
|
||
|
onlineGroup.GET("/list", onlineList)
|
||
|
}
|
||
|
helpGroup := group.Group("/help")
|
||
|
{
|
||
|
helpGroup.GET("/list", cacheSvr.Cache(deg.Args("parentTypeId"), nil), helpList)
|
||
|
helpGroup.GET("/detail", cacheSvr.Cache(deg.Args("pn", "ps", "fId", "questionTypeId"), nil), helpDetail)
|
||
|
helpGroup.GET("/search", helpSearch)
|
||
|
}
|
||
|
viewGroup := group.Group("/view")
|
||
|
{
|
||
|
viewGroup.GET("/detail", authSvr.Guest, detail)
|
||
|
}
|
||
|
searchGroup := group.Group("/search")
|
||
|
{
|
||
|
searchGroup.GET("/all", authSvr.Guest, searchAll)
|
||
|
searchGroup.GET("/type", authSvr.Guest, searchByType)
|
||
|
searchGroup.GET("/recommend", authSvr.Guest, searchRec)
|
||
|
searchGroup.GET("/default", authSvr.Guest, searchDefault)
|
||
|
searchGroup.GET("/egg", searchEgg)
|
||
|
}
|
||
|
wxGroup := group.Group("/wx")
|
||
|
{
|
||
|
wxGroup.GET("/hot", wxHot)
|
||
|
wxGroup.GET("/search/all", authSvr.Guest, wxSearchAll)
|
||
|
}
|
||
|
bnjGroup := group.Group("/bnj2019")
|
||
|
{
|
||
|
bnjGroup.GET("", authSvr.Guest, bnj2019)
|
||
|
bnjGroup.GET("/timeline", authSvr.Guest, timeline)
|
||
|
}
|
||
|
group.GET("/region/custom", regionCustom)
|
||
|
group.GET("/attentions", authSvr.User, attentions)
|
||
|
group.GET("/card", authSvr.Guest, card)
|
||
|
group.GET("/nav", authSvr.Guest, nav)
|
||
|
group.GET("/newlist", newList)
|
||
|
group.POST("/feedback", authSvr.Guest, feedback)
|
||
|
group.GET("/zone", ipZone)
|
||
|
group.POST("/share/add", authSvr.Guest, addShare)
|
||
|
group.GET("/elec/show", authSvr.Guest, elecShow)
|
||
|
group.GET("/index/icon", indexIcon)
|
||
|
group.GET("/baidu/kv", kv)
|
||
|
group.GET("/cmtbox", cmtbox)
|
||
|
group.GET("/abserver", authSvr.Guest, abServer)
|
||
|
group.GET("/up/rec", authSvr.User, upRec)
|
||
|
group.GET("/broadcast/servers", broadServer)
|
||
|
}
|
||
|
e.GET("/x/coin/list", coinList)
|
||
|
}
|
||
|
|
||
|
func internalRouter(e *bm.Engine) {
|
||
|
group := e.Group("/x/internal/web-interface")
|
||
|
{
|
||
|
dyGroup := group.Group("/dynamic")
|
||
|
{
|
||
|
dyGroup.GET("/region", vfySvr.Verify, dynamicRegion)
|
||
|
dyGroup.GET("/index", vfySvr.Verify, dynamicRegions)
|
||
|
dyGroup.GET("/tag", vfySvr.Verify, dynamicRegionTag)
|
||
|
dyGroup.GET("/total", vfySvr.Verify, dynamicRegionTotal)
|
||
|
}
|
||
|
rankGroup := group.Group("/ranking")
|
||
|
{
|
||
|
rankGroup.GET("", vfySvr.Verify, ranking)
|
||
|
rankGroup.GET("/index", vfySvr.Verify, rankingIndex)
|
||
|
rankGroup.GET("/region", vfySvr.Verify, rankingRegion)
|
||
|
rankGroup.GET("/recommend", vfySvr.Verify, rankingRecommend)
|
||
|
rankGroup.GET("/tag", vfySvr.Verify, rankingTag)
|
||
|
}
|
||
|
tagGroup := group.Group("/tag")
|
||
|
{
|
||
|
tagGroup.GET("/top", vfySvr.Verify, tagAids)
|
||
|
tagGroup.GET("/detail", vfySvr.Verify, tagDetail)
|
||
|
}
|
||
|
helpGroup := group.Group("/help")
|
||
|
{
|
||
|
helpGroup.GET("/list", vfySvr.Verify, helpList)
|
||
|
helpGroup.GET("/detail", vfySvr.Verify, helpDetail)
|
||
|
helpGroup.GET("/search", vfySvr.Verify, helpSearch)
|
||
|
}
|
||
|
onlineGroup := group.Group("/online")
|
||
|
{
|
||
|
onlineGroup.GET("", vfySvr.Verify, onlineInfo)
|
||
|
onlineGroup.GET("/list", vfySvr.Verify, onlineList)
|
||
|
}
|
||
|
viewGroup := group.Group("/view")
|
||
|
{
|
||
|
viewGroup.GET("", vfySvr.Verify, authSvr.Guest, view)
|
||
|
viewGroup.GET("/detail", vfySvr.Verify, authSvr.Guest, detail)
|
||
|
}
|
||
|
searchGroup := group.Group("/search")
|
||
|
{
|
||
|
searchGroup.GET("/all", vfySvr.Verify, authSvr.Guest, searchAll)
|
||
|
searchGroup.GET("/type", vfySvr.Verify, authSvr.Guest, searchByType)
|
||
|
searchGroup.GET("/recommend", vfySvr.Verify, authSvr.Guest, searchRec)
|
||
|
}
|
||
|
group.GET("/newlist", vfySvr.Verify, newList)
|
||
|
group.GET("/zone", vfySvr.Verify, ipZone)
|
||
|
group.GET("/region/custom", vfySvr.Verify, regionCustom)
|
||
|
group.GET("/baidu/kv", vfySvr.Verify, kv)
|
||
|
group.GET("/cmtbox", vfySvr.Verify, cmtbox)
|
||
|
group.GET("/broadcast/servers", vfySvr.Verify, broadServer)
|
||
|
group.GET("/bnj2019", vfySvr.Verify, authSvr.Guest, bnj2019)
|
||
|
group.GET("/bnj2019/aids", vfySvr.Verify, bnj2019Aids)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func ping(c *bm.Context) {
|
||
|
if err := webSvc.Ping(c); err != nil {
|
||
|
log.Error("web-interface ping error")
|
||
|
c.AbortWithStatus(http.StatusServiceUnavailable)
|
||
|
}
|
||
|
}
|