bilibili-backup/app/interface/main/app-intl/http/view.go

158 lines
3.9 KiB
Go
Raw Normal View History

2019-04-22 10:59:20 +08:00
package http
import (
"strconv"
"time"
"go-common/app/interface/main/app-intl/model"
"go-common/app/interface/main/app-intl/model/view"
"go-common/library/ecode"
bm "go-common/library/net/http/blademaster"
"go-common/library/net/metadata"
)
const (
_viewPath = "/x/intl/view"
_viewPagePath = "/x/intl/view/page"
)
var (
// _dislike is.
_dislike = []*view.Dislike{
{
ID: 5,
Name: "标题党/封面党",
},
{
ID: 6,
Name: "内容质量差",
},
{
ID: 7,
Name: "内容/封面令人不适",
},
{
ID: 8,
Name: "营销广告",
},
}
)
// viewIndex view handler
func viewIndex(c *bm.Context) {
var (
mid, aid, movieID int64
err error
)
params := c.Request.Form
header := c.Request.Header
// get params
aidStr := params.Get("aid")
movieidStr := params.Get("movie_id")
mobiApp := params.Get("mobi_app")
device := params.Get("device")
ak := params.Get("access_key")
buildStr := params.Get("build")
from := params.Get("from")
trackid := params.Get("trackid")
network := params.Get("network")
adExtra := params.Get("ad_extra")
locale := params.Get("locale")
// check params
if aidStr == "" && movieidStr == "" {
c.JSON(nil, ecode.RequestErr)
return
}
if aidStr != "" && aidStr != "0" {
if aid, err = strconv.ParseInt(aidStr, 10, 64); err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
} else if movieidStr != "" && movieidStr != "0" {
if movieID, err = strconv.ParseInt(movieidStr, 10, 64); err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
}
if aid < 1 && movieID < 1 {
c.JSON(nil, ecode.RequestErr)
return
}
build, err := strconv.Atoi(buildStr)
if err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
plat := model.Plat(mobiApp, device)
buvid := header.Get("Buvid")
disid := header.Get("Display-ID")
cdnIP := header.Get("X-Cache-Server-Addr")
if midInter, ok := c.Get("mid"); ok {
mid = midInter.(int64)
}
autoplay, _ := strconv.Atoi(params.Get("autoplay"))
now := time.Now()
// view
ip := metadata.String(c, metadata.RemoteIP)
viewSvc.ViewInfoc(mid, int(plat), trackid, aidStr, ip, _viewPath, buildStr, buvid, disid, from, now, err, autoplay)
data, err := viewSvc.View(c, mid, aid, movieID, plat, build, ak, mobiApp, device, buvid, cdnIP, network, adExtra, from, now, locale)
if err != nil {
c.JSON(nil, err)
return
}
data.Dislikes = _dislike
c.JSON(data, nil)
viewSvc.RelateInfoc(mid, aid, int(plat), trackid, buildStr, buvid, disid, ip, _viewPath, data.ReturnCode, data.UserFeature, from, data.Relates, now, data.IsRec)
}
// viewPage view page handler.
func viewPage(c *bm.Context) {
var (
mid, aid int64
build int
err error
)
params := c.Request.Form
header := c.Request.Header
// get params
aidStr := params.Get("aid")
mobiApp := params.Get("mobi_app")
device := params.Get("device")
ak := params.Get("access_key")
buildStr := params.Get("build")
from := params.Get("from")
trackid := params.Get("trackid")
locale := params.Get("locale")
// check params
if aid, err = strconv.ParseInt(aidStr, 10, 64); err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
if aid < 1 {
c.JSON(nil, ecode.RequestErr)
return
}
if build, err = strconv.Atoi(buildStr); err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
plat := model.Plat(mobiApp, device)
buvid := header.Get("Buvid")
disid := header.Get("Display-ID")
cdnIP := header.Get("X-Cache-Server-Addr")
if midInter, ok := c.Get("mid"); ok {
mid = midInter.(int64)
}
autoplay, _ := strconv.Atoi(params.Get("autoplay"))
ip := metadata.String(c, metadata.RemoteIP)
now := time.Now()
// view page
viewSvc.ViewInfoc(mid, int(plat), trackid, aidStr, ip, _viewPagePath, buildStr, buvid, disid, from, now, err, autoplay)
data, err := viewSvc.ViewPage(c, mid, aid, 0, plat, build, ak, mobiApp, device, cdnIP, false, now, locale)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(data, nil)
}