Create & Init Project...

This commit is contained in:
2019-04-22 18:49:16 +08:00
commit fc4fa37393
25440 changed files with 4054998 additions and 0 deletions

View File

@@ -0,0 +1,50 @@
package(default_visibility = ["//visibility:public"])
load(
"@io_bazel_rules_go//go:def.bzl",
"go_library",
)
go_library(
name = "go_default_library",
srcs = [
"http.go",
"job.go",
"local.go",
"notice.go",
"res.go",
],
importpath = "go-common/app/interface/main/web-show/http",
tags = ["automanaged"],
visibility = ["//visibility:public"],
deps = [
"//app/interface/main/web-show/conf:go_default_library",
"//app/interface/main/web-show/model/operation:go_default_library",
"//app/interface/main/web-show/model/resource:go_default_library",
"//app/interface/main/web-show/service/job:go_default_library",
"//app/interface/main/web-show/service/operation:go_default_library",
"//app/interface/main/web-show/service/resource:go_default_library",
"//library/ecode:go_default_library",
"//library/log:go_default_library",
"//library/net/http/blademaster:go_default_library",
"//library/net/http/blademaster/middleware/auth:go_default_library",
"//library/net/http/blademaster/middleware/cache:go_default_library",
"//library/net/http/blademaster/middleware/cache/store:go_default_library",
"//library/net/http/blademaster/middleware/verify:go_default_library",
"//library/xstr:go_default_library",
],
)
filegroup(
name = "package-srcs",
srcs = glob(["**"]),
tags = ["automanaged"],
visibility = ["//visibility:private"],
)
filegroup(
name = "all-srcs",
srcs = [":package-srcs"],
tags = ["automanaged"],
visibility = ["//visibility:public"],
)

View File

@@ -0,0 +1,91 @@
package http
import (
"go-common/app/interface/main/web-show/conf"
"go-common/app/interface/main/web-show/service/job"
"go-common/app/interface/main/web-show/service/operation"
res "go-common/app/interface/main/web-show/service/resource"
"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 (
jobSvc *job.Service
opSvc *operation.Service
vfySvr *verify.Verify
authSvr *auth.Auth
resSvc *res.Service
// cache components
cacheSvr *cache.Cache
deg *cache.Degrader
)
// Init int http service
func Init(c *conf.Config) {
initService(c)
// init external router
cacheSvr = cache.New(store.NewMemcache(c.DegradeConfig.Memcache))
deg = cache.NewDegrader(c.DegradeConfig.Expire)
engineOut := bm.DefaultServer(c.BM.Outer)
outerRouter(engineOut)
// init Outer serve
if err := engineOut.Start(); err != nil {
log.Error("engineOut.Start error(%v)", err)
panic(err)
}
engineLocal := bm.DefaultServer(c.BM.Local)
localRouter(engineLocal)
// init Outlocaler serve
if err := engineLocal.Start(); err != nil {
log.Error("engineLocal.Start error(%v)", err)
panic(err)
}
}
// initService init service
func initService(c *conf.Config) {
authSvr = auth.New(c.Auth)
vfySvr = verify.New(c.Verify)
jobSvc = job.New(c)
opSvc = operation.New(c)
resSvc = res.New(c)
}
//CloseService close all service
func CloseService() {
jobSvc.Close()
opSvc.Close()
}
// outerRouter init outer router api path.
func outerRouter(e *bm.Engine) {
// init api
e.Ping(ping)
group := e.Group("/x/web-show", bm.CORS())
{
group.GET("/join", join)
group.GET("/notice", notice)
group.GET("/promote", promote)
group.GET("/res/loc", authSvr.Guest, cacheSvr.Cache(deg.Args("id", "pf"), nil), resource)
group.GET("/res/locs", authSvr.Guest, cacheSvr.Cache(deg.Args("ids", "pf"), nil), resources)
group.GET("/ad/video", authSvr.Guest, advideo)
group.GET("/archive/relation", relation)
group.GET("/urls", vfySvr.Verify, urlMonitor)
}
e.GET("/x/ad/video", authSvr.Guest, advideo)
}
// innerRouter init local router api path.
func localRouter(e *bm.Engine) {
group := e.Group("/x/web-show", bm.CORS())
{
group.GET("/monitor/ping", ping)
group.GET("/version", version)
group.GET("/gray", grayRate)
}
}

View File

@@ -0,0 +1,10 @@
package http
import (
bm "go-common/library/net/http/blademaster"
)
// join
func join(c *bm.Context) {
c.JSON(jobSvc.Jobs(c), nil)
}

View File

@@ -0,0 +1,46 @@
package http
import (
"net/http"
"strconv"
"go-common/app/interface/main/web-show/conf"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
"go-common/library/xstr"
)
// ping check server ok.
func ping(c *bm.Context) {
if jobSvc.Ping(c) != nil || resSvc.Ping(c) != nil || opSvc.Ping(c) != nil {
log.Error("web-show service ping error")
c.AbortWithStatus(http.StatusServiceUnavailable)
}
}
// version check server version.
func version(c *bm.Context) {
c.JSON(map[string]interface{}{
"version": conf.Conf.Version,
}, nil)
}
func grayRate(c *bm.Context) {
params := c.Request.Form
rateStr := params.Get("rate")
whiteStr := params.Get("white")
swtStr := params.Get("swt")
if rateStr == "" && whiteStr == "" {
res := map[string]interface{}{}
res["rate"], res["white"], res["swt"] = resSvc.GrayRate(c)
c.JSON(res, nil)
return
}
rate, _ := strconv.ParseInt(rateStr, 10, 64)
if rate < 0 || rate > 100 {
rate = 0
}
swt, _ := strconv.ParseBool(swtStr)
white, _ := xstr.SplitInts(whiteStr)
resSvc.SetGrayRate(c, swt, rate, white)
}

View File

@@ -0,0 +1,25 @@
package http
import (
opmdl "go-common/app/interface/main/web-show/model/operation"
bm "go-common/library/net/http/blademaster"
)
// notice
func notice(c *bm.Context) {
arg := new(opmdl.ArgOp)
if err := c.Bind(arg); err != nil {
return
}
notice := opSvc.Notice(c, arg)
c.JSON(notice, nil)
}
// promote
func promote(c *bm.Context) {
arg := new(opmdl.ArgPromote)
if err := c.Bind(arg); err != nil {
return
}
c.JSON(opSvc.Promote(c, arg))
}

View File

@@ -0,0 +1,101 @@
package http
import (
"strconv"
rsmdl "go-common/app/interface/main/web-show/model/resource"
"go-common/library/ecode"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
)
const (
_headerBuvid = "Buvid"
_buvid = "buvid3"
)
func resources(c *bm.Context) {
arg := new(rsmdl.ArgRess)
if err := c.Bind(arg); err != nil {
return
}
arg.Mid, arg.Sid, arg.Buvid = device(c)
data, count, err := resSvc.Resources(c, arg)
if err != nil {
log.Error("resSvc.Resource error(%v)", err)
c.JSON(nil, ecode.Degrade)
return
}
c.JSONMap(map[string]interface{}{
"count": count,
"data": data,
}, nil)
}
func resource(c *bm.Context) {
arg := new(rsmdl.ArgRes)
if err := c.Bind(arg); err != nil {
return
}
arg.Mid, arg.Sid, arg.Buvid = device(c)
data, count, err := resSvc.Resource(c, arg)
if err != nil {
log.Error("resSvc.Resource error(%v)", err)
c.JSON(nil, ecode.Degrade)
return
}
c.JSONMap(map[string]interface{}{
"count": count,
"data": data,
}, nil)
}
func relation(c *bm.Context) {
arg := new(rsmdl.ArgAid)
if err := c.Bind(arg); err != nil {
return
}
arg.Mid, arg.Sid, arg.Buvid = device(c)
c.JSON(resSvc.Relation(c, arg))
}
func advideo(c *bm.Context) {
arg := new(rsmdl.ArgAid)
if err := c.Bind(arg); err != nil {
return
}
midTemp, ok := c.Get("mid")
if !ok {
log.Info("mid not exist")
arg.Mid = 0
} else {
arg.Mid = midTemp.(int64)
}
c.JSON(resSvc.VideoAd(c, arg), nil)
}
func urlMonitor(c *bm.Context) {
params := c.Request.Form
pfStr := params.Get("pf")
pf, _ := strconv.Atoi(pfStr)
c.JSON(resSvc.URLMonitor(c, pf), nil)
}
func device(c *bm.Context) (mid int64, sid, buvid string) {
midTemp, ok := c.Get("mid")
buvid = c.Request.Header.Get(_headerBuvid)
if buvid == "" {
cookie, _ := c.Request.Cookie(_buvid)
if cookie != nil {
buvid = cookie.Value
}
}
if !ok {
if sidCookie, err := c.Request.Cookie("sid"); err == nil {
sid = sidCookie.Value
}
} else {
mid = midTemp.(int64)
}
return
}