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,45 @@
package(default_visibility = ["//visibility:public"])
load(
"@io_bazel_rules_go//go:def.bzl",
"go_library",
)
go_library(
name = "go_default_library",
srcs = [
"channel.go",
"http.go",
"local.go",
],
importpath = "go-common/app/interface/main/app-channel/http",
tags = ["automanaged"],
visibility = ["//visibility:public"],
deps = [
"//app/interface/main/app-channel/conf:go_default_library",
"//app/interface/main/app-channel/model:go_default_library",
"//app/interface/main/app-channel/model/channel:go_default_library",
"//app/interface/main/app-channel/service/channel: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/proxy:go_default_library",
"//library/net/http/blademaster/middleware/verify:go_default_library",
"//library/net/metadata: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,337 @@
package http
import (
"strconv"
"time"
"go-common/app/interface/main/app-channel/model"
"go-common/app/interface/main/app-channel/model/channel"
"go-common/library/ecode"
bm "go-common/library/net/http/blademaster"
"go-common/library/net/metadata"
)
const (
_headerBuvid = "Buvid"
)
func index(c *bm.Context) {
var (
params = c.Request.Form
mid int64
cidInt int64
header = c.Request.Header
)
mobiApp := params.Get("mobi_app")
device := params.Get("device")
buildStr := params.Get("build")
idxStr := params.Get("idx")
pullStr := params.Get("pull")
loginEventStr := params.Get("login_event")
cidStr := params.Get("channel_id")
displayIDStr := params.Get("display_id")
cname := params.Get("channel_name")
qn, _ := strconv.Atoi(params.Get("qn"))
fnver, _ := strconv.Atoi(params.Get("fnver"))
fnval, _ := strconv.Atoi(params.Get("fnval"))
build, err := strconv.Atoi(buildStr)
if err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
displayID, err := strconv.Atoi(displayIDStr)
if err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
plat := model.Plat(mobiApp, device)
buvid := header.Get(_headerBuvid)
// disid := header.Get(_headerDisplayID)
pull, err := strconv.ParseBool(pullStr)
if err != nil {
pull = true
}
loginEvent, err := strconv.Atoi(loginEventStr)
if err != nil {
loginEvent = 0
}
idx, err := strconv.ParseInt(idxStr, 10, 64)
if err != nil || idx < 0 {
idx = 0
}
if cidInt, _ = strconv.ParseInt(cidStr, 10, 64); cidInt == 0 && cname == "" {
c.JSON(nil, ecode.RequestErr)
return
}
now := time.Now()
if midInter, ok := c.Get("mid"); ok {
mid = midInter.(int64)
}
data, err := channelSvc.Index(c, mid, cidInt, idx, plat, mobiApp, device, buvid, cname, build, loginEvent, displayID, qn, fnver, fnval, pull, now)
c.JSON(data, err)
}
func index2(c *bm.Context) {
var (
params = c.Request.Form
mid int64
cidInt int64
header = c.Request.Header
)
mobiApp := params.Get("mobi_app")
device := params.Get("device")
buildStr := params.Get("build")
idxStr := params.Get("idx")
pullStr := params.Get("pull")
loginEventStr := params.Get("login_event")
cidStr := params.Get("channel_id")
displayIDStr := params.Get("display_id")
cname := params.Get("channel_name")
qn, _ := strconv.Atoi(params.Get("qn"))
fnver, _ := strconv.Atoi(params.Get("fnver"))
fnval, _ := strconv.Atoi(params.Get("fnval"))
build, err := strconv.Atoi(buildStr)
if err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
displayID, err := strconv.Atoi(displayIDStr)
if err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
plat := model.Plat(mobiApp, device)
buvid := header.Get(_headerBuvid)
// disid := header.Get(_headerDisplayID)
pull, err := strconv.ParseBool(pullStr)
if err != nil {
pull = true
}
loginEvent, err := strconv.Atoi(loginEventStr)
if err != nil {
loginEvent = 0
}
idx, err := strconv.ParseInt(idxStr, 10, 64)
if err != nil || idx < 0 {
idx = 0
}
if cidInt, _ = strconv.ParseInt(cidStr, 10, 64); cidInt == 0 && cname == "" {
c.JSON(nil, ecode.RequestErr)
return
}
now := time.Now()
if midInter, ok := c.Get("mid"); ok {
mid = midInter.(int64)
}
data, err := channelSvc.Index2(c, mid, cidInt, idx, plat, mobiApp, device, buvid, cname, metadata.String(c, metadata.RemoteIP), build, loginEvent, displayID, qn, fnver, fnval, pull, now)
c.JSON(data, err)
}
func tab(c *bm.Context) {
var (
params = c.Request.Form
mid int64
cidInt int64
)
cidStr := params.Get("channel_id")
cname := params.Get("channel_name")
if midInter, ok := c.Get("mid"); ok {
mid = midInter.(int64)
}
if cidInt, _ = strconv.ParseInt(cidStr, 10, 64); cidInt == 0 && cname == "" {
c.JSON(nil, ecode.RequestErr)
return
}
mobiApp := params.Get("mobi_app")
device := params.Get("device")
plat := model.Plat(mobiApp, device)
c.JSON(channelSvc.Tab(c, cidInt, mid, cname, plat))
}
func subscribeAdd(c *bm.Context) {
var (
params = c.Request.Form
mid int64
cidInt int64
err error
fromInt int
now = time.Now()
)
mobiApp := params.Get("mobi_app")
device := params.Get("device")
buildStr := params.Get("build")
cidStr := params.Get("channel_id")
fromStr := params.Get("from")
build, err := strconv.Atoi(buildStr)
if err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
if midInter, ok := c.Get("mid"); ok {
mid = midInter.(int64)
}
if cidInt, err = strconv.ParseInt(cidStr, 10, 64); err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
fromInt, _ = strconv.Atoi(fromStr)
c.JSON(nil, channelSvc.SubscribeAdd(c, mid, cidInt, now))
channelSvc.OperationInfoc(mobiApp, device, "add", build, fromInt, cidInt, mid, now)
}
func subscribeCancel(c *bm.Context) {
var (
params = c.Request.Form
mid int64
cidInt int64
err error
fromInt int
now = time.Now()
)
mobiApp := params.Get("mobi_app")
device := params.Get("device")
buildStr := params.Get("build")
cidStr := params.Get("channel_id")
fromStr := params.Get("from")
build, err := strconv.Atoi(buildStr)
if err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
if midInter, ok := c.Get("mid"); ok {
mid = midInter.(int64)
}
if cidInt, err = strconv.ParseInt(cidStr, 10, 64); err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
fromInt, _ = strconv.Atoi(fromStr)
c.JSON(nil, channelSvc.SubscribeCancel(c, mid, cidInt, now))
channelSvc.OperationInfoc(mobiApp, device, "cannel", build, fromInt, cidInt, mid, now)
}
func subscribeUpdate(c *bm.Context) {
var (
params = c.Request.Form
mid int64
)
cidStr := params.Get("channel_ids")
if cidStr == "" {
c.JSON(nil, ecode.RequestErr)
return
}
if midInter, ok := c.Get("mid"); ok {
mid = midInter.(int64)
}
c.JSON(nil, channelSvc.SubscribeUpdate(c, mid, cidStr))
}
func list(c *bm.Context) {
param := &channel.Param{}
if err := c.Bind(param); err != nil {
return
}
if midInter, ok := c.Get("mid"); ok {
param.MID = midInter.(int64)
}
plat := model.Plat(param.MobiApp, param.Device)
limit := 18 //频道聚合页需要展示最多18个我的订阅
c.JSON(channelSvc.List(c, param.MID, plat, param.Build, limit, param.Ver, param.MobiApp, param.Device, param.Lang))
}
func subscribe(c *bm.Context) {
param := &channel.Param{}
if err := c.Bind(param); err != nil {
return
}
if midInter, ok := c.Get("mid"); ok {
param.MID = midInter.(int64)
}
c.JSON(channelSvc.Subscribe(c, param.MID, 0))
}
func discover(c *bm.Context) {
param := &channel.Param{}
if err := c.Bind(param); err != nil {
return
}
if midInter, ok := c.Get("mid"); ok {
param.MID = midInter.(int64)
}
plat := model.Plat(param.MobiApp, param.Device)
c.JSON(channelSvc.Discover(c, param.ID, param.MID, plat))
}
func category(c *bm.Context) {
param := &channel.Param{}
if err := c.Bind(param); err != nil {
return
}
plat := model.Plat(param.MobiApp, param.Device)
c.JSON(channelSvc.Category(c, plat))
}
func square(c *bm.Context) {
param := &channel.ParamSquare{}
if err := c.Bind(param); err != nil {
return
}
if midInter, ok := c.Get("mid"); ok {
param.MID = midInter.(int64)
}
buvid := c.Request.Header.Get(_headerBuvid)
plat := model.Plat(param.MobiApp, param.Device)
c.JSON(channelSvc.Square(c, param.MID, plat, param.Build, param.LoginEvent, param.MobiApp, param.Device, param.Lang, buvid))
}
func mysub(c *bm.Context) {
param := &channel.Param{}
if err := c.Bind(param); err != nil {
return
}
if midInter, ok := c.Get("mid"); ok {
param.MID = midInter.(int64)
}
c.JSON(channelSvc.Mysub(c, param.MID, 0))
}
func tablist(c *bm.Context) {
var (
params = c.Request.Form
mid int64
)
mobiApp := params.Get("mobi_app")
device := params.Get("device")
buildStr := params.Get("build")
cidStr := params.Get("channel_id")
displayIDStr := params.Get("display_id")
cname := params.Get("channel_name")
fromStr := params.Get("display_id")
build, err := strconv.Atoi(buildStr)
if err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
displayID, err := strconv.Atoi(displayIDStr)
if err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
plat := model.Plat(mobiApp, device)
cidInt, _ := strconv.ParseInt(cidStr, 10, 64)
if cidInt == 0 && cname == "" {
c.JSON(nil, ecode.RequestErr)
return
}
fromInt, err := strconv.Atoi(fromStr)
if err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
now := time.Now()
if midInter, ok := c.Get("mid"); ok {
mid = midInter.(int64)
}
data, err := channelSvc.TabList(c, cidInt, mid, cname, mobiApp, displayID, build, fromInt, plat, now)
c.JSON(data, err)
}

View File

@@ -0,0 +1,62 @@
package http
import (
"go-common/app/interface/main/app-channel/conf"
channelSvr "go-common/app/interface/main/app-channel/service/channel"
"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/proxy"
"go-common/library/net/http/blademaster/middleware/verify"
)
var (
// depend service
channelSvc *channelSvr.Service
verifySvc *verify.Verify
authSvc *auth.Auth
)
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) {
channelSvc = channelSvr.New(c)
verifySvc = verify.New(nil)
authSvc = auth.New(nil)
}
// outerRouter init outer router api path.
func outerRouter(e *bm.Engine) {
e.Ping(ping)
proxyHandler := proxy.NewZoneProxy("sh004", "http://sh001-app.bilibili.com")
cl := e.Group("/x/channel", verifySvc.Verify)
{
feed := cl.Group("/feed", authSvc.GuestMobile)
{
feed.GET("", index)
feed.GET("/index", proxyHandler, index2)
feed.GET("/tab", tab)
feed.GET("/tab/list", tablist)
}
cl.POST("/add", authSvc.UserMobile, subscribeAdd)
cl.POST("/cancel", authSvc.UserMobile, subscribeCancel)
cl.POST("/update", authSvc.UserMobile, subscribeUpdate)
cl.GET("/list", authSvc.GuestMobile, list)
cl.GET("/subscribe", authSvc.UserMobile, subscribe)
cl.GET("/discover", authSvc.GuestMobile, discover)
cl.GET("/category", authSvc.GuestMobile, category)
cl.GET("/square", authSvc.GuestMobile, square)
cl.GET("/mysub", authSvc.UserMobile, mysub)
}
}

View File

@@ -0,0 +1,17 @@
package http
import (
"net/http"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
)
// ping check server ok.
func ping(c *bm.Context) {
var err error
if err = channelSvc.Ping(c); err != nil {
log.Error("app-channel service ping error(%v)", err)
c.AbortWithStatus(http.StatusServiceUnavailable)
}
}