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,63 @@
package(default_visibility = ["//visibility:public"])
load(
"@io_bazel_rules_go//go:def.bzl",
"go_test",
"go_library",
)
go_test(
name = "go_default_test",
srcs = ["http_test.go"],
embed = [":go_default_library"],
rundir = ".",
tags = ["automanaged"],
deps = [
"//app/service/main/archive/conf:go_default_library",
"//app/service/main/archive/service:go_default_library",
"//library/net/http/blademaster:go_default_library",
"//vendor/github.com/smartystreets/goconvey/convey:go_default_library",
],
)
go_library(
name = "go_default_library",
srcs = [
"archive.go",
"http.go",
"local.go",
"region.go",
"shot.go",
"stat.go",
"upper.go",
"video.go",
],
importpath = "go-common/app/service/main/archive/server/http",
tags = ["automanaged"],
visibility = ["//visibility:public"],
deps = [
"//app/service/main/archive/api:go_default_library",
"//app/service/main/archive/conf:go_default_library",
"//app/service/main/archive/model/archive:go_default_library",
"//app/service/main/archive/service: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/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,95 @@
package http
import (
"strconv"
"go-common/app/service/main/archive/model/archive"
"go-common/library/ecode"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
"go-common/library/xstr"
)
// arcInfo write the archive data.
func arcInfo(c *bm.Context) {
var (
err error
aid int64
)
params := c.Request.Form
aidStr := params.Get("aid")
// check params
aid, err = strconv.ParseInt(aidStr, 10, 64)
if err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
c.JSON(arcSvc.Archive3(c, aid))
}
// archives write the archives data.
func archives(c *bm.Context) {
params := c.Request.Form
aidsStr := params.Get("aids")
// check params
aids, err := xstr.SplitInts(aidsStr)
if err != nil {
log.Error("query aids(%s) split error(%v)", aidsStr, err)
c.JSON(nil, ecode.RequestErr)
return
}
if params.Get("appkey") == "fb06a25c6338edbc" && len(aids) > 50 {
c.JSON(nil, ecode.RequestErr)
return
}
if len(aids) > 50 {
log.Error("Too many Args aids(%d) caller(%s)", len(aids), params.Get("appkey"))
}
c.JSON(arcSvc.Archives3(c, aids))
}
// archivesWithPlayer write the archives data.
func archivesWithPlayer(c *bm.Context) {
params := c.Request.Form
aidsStr := params.Get("aids")
qnStr := params.Get("qn")
pt := params.Get("platform")
ip := params.Get("ip")
fnver, _ := strconv.Atoi(params.Get("fnver"))
fnval, _ := strconv.Atoi(params.Get("fnval"))
forceHost, _ := strconv.Atoi(params.Get("force_host"))
session := params.Get("session")
containsPGC, _ := strconv.Atoi(params.Get("contains_pgc"))
build, _ := strconv.Atoi(params.Get("build"))
// check params
aids, err := xstr.SplitInts(aidsStr)
if err != nil {
log.Error("query aids(%s) split error(%v)", aidsStr, err)
c.JSON(nil, ecode.RequestErr)
return
}
if len(aids) > 50 {
c.JSON(nil, ecode.RequestErr)
return
}
qn, _ := strconv.Atoi(qnStr)
c.JSON(arcSvc.ArchivesWithPlayer(c, &archive.ArgPlayer{
Aids: aids,
Qn: qn,
Platform: pt,
Build: build,
RealIP: ip,
Fnval: fnval,
Fnver: fnver,
Session: session,
ForceHost: forceHost,
}, containsPGC == 1))
}
func typelist(c *bm.Context) {
c.JSON(arcSvc.AllTypes(c), nil)
}
func maxAID(c *bm.Context) {
c.JSON(arcSvc.MaxAID(c))
}

View File

@@ -0,0 +1,80 @@
package http
import (
"go-common/app/service/main/archive/conf"
"go-common/app/service/main/archive/service"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
"go-common/library/net/http/blademaster/middleware/verify"
)
var (
idfSvc *verify.Verify
arcSvc *service.Service
)
// Init init http router.
func Init(c *conf.Config, s *service.Service) {
arcSvc = s
idfSvc = verify.New(nil)
// init internal router
en := bm.DefaultServer(c.BM.Inner)
innerRouter(en)
// init internal server
if err := en.Start(); err != nil {
log.Error("xhttp.Serve error(%v)", err)
panic(err)
}
// init external router
enlocal := bm.DefaultServer(c.BM.Local)
localRouter(enlocal)
// init external server
if err := enlocal.Start(); err != nil {
log.Error("xhttp.Serve error(%v)", err)
panic(err)
}
}
// innerRouter init inner router.
func innerRouter(e *bm.Engine) {
e.Ping(ping)
e.Register(register)
archive := e.Group("/x/internal/v2/archive", bm.CORS())
{
archive.GET("", idfSvc.Verify, arcInfo)
archive.GET("/view", idfSvc.Verify, arcView)
archive.GET("/views", idfSvc.Verify, arcViews)
archive.GET("/page", idfSvc.Verify, arcPage)
archive.GET("/video", idfSvc.Verify, video)
archive.GET("/archives", idfSvc.Verify, archives)
archive.GET("/archives/playurl", idfSvc.Verify, archivesWithPlayer)
archive.GET("/typelist", idfSvc.Verify, typelist)
archive.GET("/description", idfSvc.Verify, description)
archive.GET("/maxAid", idfSvc.Verify, maxAID)
regionGp := archive.Group("/region")
{
regionGp.GET("", idfSvc.Verify, regionArcs)
}
videoshotGp := archive.Group("/videoshot")
{
videoshotGp.GET("", idfSvc.Verify, videoshot)
}
statGp := archive.Group("/stat")
{
statGp.GET("", idfSvc.Verify, arcStat)
statGp.GET("/stats", idfSvc.Verify, arcStats)
}
upGp := archive.Group("/up")
{
upGp.GET("/count/batch", idfSvc.Verify, uppersCount)
upGp.GET("/count", idfSvc.Verify, upperCount)
upGp.GET("/passed", idfSvc.Verify, upperPassed)
upGp.GET("/cache", idfSvc.Verify, upperCache)
}
}
}
// localRouter init local router.
func localRouter(e *bm.Engine) {
e.GET("/archive-service/rank/init", addRegionArc)
}

View File

@@ -0,0 +1,123 @@
package http
import (
"context"
"encoding/json"
"flag"
"net/url"
"path/filepath"
"testing"
"go-common/app/service/main/archive/conf"
"go-common/app/service/main/archive/service"
ghttp "go-common/library/net/http/blademaster"
. "github.com/smartystreets/goconvey/convey"
)
var (
s *service.Service
client *ghttp.Client
)
func init() {
dir, _ := filepath.Abs("../cmd/archive-service-test.toml")
flag.Set("conf", dir)
conf.Init()
s = service.New(conf.Conf)
Init(conf.Conf, s)
client = ghttp.NewClient(conf.Conf.PlayerClient)
}
func Test_Archive(t *testing.T) {
Convey("/x/internal/v2/archive", t, func() {
p := url.Values{}
p.Set("aid", "10098813")
var res struct {
Code int `json:"code"`
Data json.RawMessage `json:"data"`
}
err := client.Get(context.TODO(), "http://0.0.0.0:6081/x/internal/v2/archive", "", p, &res)
So(err, ShouldBeNil)
So(res.Code, ShouldBeZeroValue)
Printf("code(%d) data(%s)\n", res.Code, res.Data)
})
}
func Test_ArchiveView(t *testing.T) {
Convey("/x/internal/v2/archive/view", t, func() {
p := url.Values{}
p.Set("aid", "10098813")
var res struct {
Code int `json:"code"`
Data json.RawMessage `json:"data"`
}
err := client.Get(context.TODO(), "http://0.0.0.0:6081/x/internal/v2/archive/view", "", p, &res)
So(err, ShouldBeNil)
So(res.Code, ShouldBeZeroValue)
Printf("code(%d) data(%s)\n", res.Code, res.Data)
})
}
func Test_ArchiveViews(t *testing.T) {
Convey("/x/internal/v2/archive/views", t, func() {
p := url.Values{}
p.Set("aids", "10098813,10098825,10098813")
var res struct {
Code int `json:"code"`
Data json.RawMessage `json:"data"`
}
err := client.Get(context.TODO(), "http://0.0.0.0:6081/x/internal/v2/archive/views", "", p, &res)
So(err, ShouldBeNil)
So(res.Code, ShouldBeZeroValue)
Printf("code(%d) data(%s)\n", res.Code, res.Data)
})
}
func Test_RegionArcs(t *testing.T) {
Convey("/x/internal/v2/archive/region", t, func() {
p := url.Values{}
p.Set("rid", "182")
p.Set("ps", "20")
p.Set("pn", "1")
var res struct {
Code int `json:"code"`
Data json.RawMessage `json:"data"`
}
err := client.Get(context.TODO(), "http://0.0.0.0:6081/x/internal/v2/archive/region", "", p, &res)
So(err, ShouldBeNil)
So(res.Code, ShouldBeZeroValue)
Printf("code(%d) data(%s)\n", res.Code, res.Data)
})
}
func Test_ShareAdd(t *testing.T) {
Convey("/x/internal/v2/archive/share/add", t, func() {
p := url.Values{}
p.Set("aid", "5463554")
p.Set("mid", "1684013")
var res struct {
Code int `json:"code"`
Data json.RawMessage `json:"data"`
}
err := client.Post(context.TODO(), "http://0.0.0.0:6081/x/internal/v2/archive/share/add", "", p, &res)
So(err, ShouldBeNil)
So(res.Code, ShouldBeZeroValue)
Printf("code(%d) data(%s)\n", res.Code, res.Data)
})
}
func Test_UpCount(t *testing.T) {
Convey("/x/internal/v2/archive/up/count", t, func() {
p := url.Values{}
p.Set("mid", "27515232")
var res struct {
Code int `json:"code"`
Data json.RawMessage `json:"data"`
}
err := client.Get(context.TODO(), "http://0.0.0.0:6081/x/internal/v2/archive/up/count", "", p, &res)
So(err, ShouldBeNil)
So(res.Code, ShouldBeZeroValue)
Printf("code(%d) data(%s)\n", res.Code, res.Data)
})
}

View File

@@ -0,0 +1,20 @@
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) {
if err := arcSvc.Ping(c); err != nil {
log.Error("archive service ping error(%v)", err)
c.AbortWithStatus(http.StatusServiceUnavailable)
}
}
func register(c *bm.Context) {
c.JSON(nil, nil)
}

View File

@@ -0,0 +1,75 @@
package http
import (
"strconv"
"go-common/app/service/main/archive/api"
"go-common/library/ecode"
bm "go-common/library/net/http/blademaster"
)
// regionArcs.
func regionArcs(c *bm.Context) {
params := c.Request.Form
ridStr := params.Get("rid")
tpStr := params.Get("type")
pnStr := params.Get("pn")
psStr := params.Get("ps")
// check params
rid, err := strconv.ParseInt(ridStr, 10, 64)
if err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
var tp int64
if tpStr != "" {
if tp, err = strconv.ParseInt(tpStr, 10, 64); err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
}
pn, err := strconv.Atoi(pnStr)
if err != nil || pn < 1 {
pn = 1
}
ps, err := strconv.Atoi(psStr)
if err != nil || ps < 1 || ps > 100 {
ps = 20
}
// service
var (
as []*api.Arc
count int
)
if tp == 0 {
as, count, err = arcSvc.RegionArcs3(c, int16(rid), pn, ps)
} else {
as, count, err = arcSvc.RegionOriginArcs3(c, int16(rid), pn, ps)
}
if err != nil {
c.JSON(nil, err)
return
}
var res struct {
Archives []*api.Arc `json:"archives"`
Page struct {
Count int `json:"count"`
Num int `json:"num"`
Size int `json:"size"`
} `json:"page"`
}
res.Archives = as
res.Page.Num = pn
res.Page.Size = ps
res.Page.Count = count
c.JSON(res, nil)
}
// addRegionArc.
func addRegionArc(c *bm.Context) {
params := c.Request.Form
ridStr := params.Get("rid")
// check params
rid, _ := strconv.ParseInt(ridStr, 10, 64)
c.JSON(nil, arcSvc.AddRegionArcs(c, int16(rid)))
}

View File

@@ -0,0 +1,27 @@
package http
import (
"strconv"
"go-common/library/ecode"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
)
func videoshot(c *bm.Context) {
params := c.Request.Form
cidStr := params.Get("cid")
aidStr := params.Get("aid")
// check params
cid, err := strconv.ParseInt(cidStr, 10, 64)
if err != nil || cid == 0 {
log.Warn("query (cid) must be number and > 0 but (%s) error(%v)", cidStr, err)
c.JSON(nil, ecode.RequestErr)
return
}
aid, err := strconv.ParseInt(aidStr, 10, 64)
if err != nil || aid == 0 {
log.Warn("videoshot aid(%s) error", aidStr)
}
c.JSON(arcSvc.Videoshot(c, aid, cid))
}

View File

@@ -0,0 +1,37 @@
package http
import (
"strconv"
"go-common/library/ecode"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
"go-common/library/xstr"
)
// arcStat get archive stat.
func arcStat(c *bm.Context) {
params := c.Request.Form
aidStr := params.Get("aid")
// check params
aid, err := strconv.ParseInt(aidStr, 10, 64)
if err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
c.JSON(arcSvc.Stat3(c, aid))
}
// arcStats get archives stat.
func arcStats(c *bm.Context) {
params := c.Request.Form
aidsStr := params.Get("aids")
// check params
aids, err := xstr.SplitInts(aidsStr)
if err != nil {
log.Error("query aids(%s) split error(%v)", aidsStr, err)
c.JSON(nil, ecode.RequestErr)
return
}
c.JSON(arcSvc.Stats3(c, aids))
}

View File

@@ -0,0 +1,102 @@
package http
import (
"strconv"
"context"
"go-common/library/ecode"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
"go-common/library/xstr"
)
func upperPassed(c *bm.Context) {
params := c.Request.Form
midStr := params.Get("mid")
pnStr := params.Get("pn")
psStr := params.Get("ps")
// check params
mid, err := strconv.ParseInt(midStr, 10, 64)
if err != nil {
log.Error("strconv.ParseInt(%s) error(%v)", midStr, err)
c.JSON(nil, ecode.RequestErr)
return
}
// deal
pn, err := strconv.Atoi(pnStr)
if err != nil || pn < 1 {
pn = 1
}
ps, err := strconv.Atoi(psStr)
if err != nil || ps < 1 || ps > 100 {
ps = 20
}
as, err := arcSvc.UpperPassed3(c, mid, pn, ps)
if err != nil {
if ec := ecode.Cause(err); ec != ecode.NothingFound {
log.Error("arcSvc.UpperPassed(%d) error(%d)", mid, err)
}
c.JSON(nil, err)
return
}
c.JSON(as, err)
}
// upperCount write the count of archives of Up.
func upperCount(c *bm.Context) {
params := c.Request.Form
midStr := params.Get("mid")
// check params
mid, err := strconv.ParseInt(midStr, 10, 64)
if err != nil {
log.Error("strconv.ParseInt(%s) error(%v)", midStr, err)
c.JSON(nil, ecode.RequestErr)
return
}
count, err := arcSvc.UpperCount(c, mid)
if err != nil {
c.JSON(nil, err)
log.Error("arcSvc.UpperCount(%d) error(%d)", mid, err)
return
}
var res struct {
Count int `json:"count"`
}
res.Count = count
c.JSON(res, nil)
}
// uppersCount uppers count
func uppersCount(c *bm.Context) {
params := c.Request.Form
midsStr := params.Get("mids")
// check params
mids, err := xstr.SplitInts(midsStr)
if err != nil {
log.Error("query mids(%s) split error(%v)", midsStr, err)
c.JSON(nil, ecode.RequestErr)
return
}
if len(mids) > 20 {
log.Error("query mids(%s) too long", midsStr)
c.JSON(nil, ecode.RequestErr)
return
}
c.JSON(arcSvc.UppersCount(c, mids))
}
// upperCache delete user cache.
func upperCache(c *bm.Context) {
params := c.Request.Form
midStr := params.Get("mid")
action := params.Get("modifiedAttr")
// check params
mid, err := strconv.ParseInt(midStr, 10, 64)
if err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
if action == "updateUname" || action == "updateFace" || action == "updateByAdmin" {
c.JSON(nil, arcSvc.UpperCache(context.TODO(), mid, action))
}
}

View File

@@ -0,0 +1,87 @@
package http
import (
"strconv"
"go-common/library/ecode"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
"go-common/library/xstr"
)
// arcView archive with page info.
func arcView(c *bm.Context) {
params := c.Request.Form
// check params
aidStr := params.Get("aid")
aid, err := strconv.ParseInt(aidStr, 10, 64)
if err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
c.JSON(arcSvc.View3(c, aid))
}
// arcViews archives with page info by aids
func arcViews(c *bm.Context) {
params := c.Request.Form
aidsStr := params.Get("aids")
// check params
aids, err := xstr.SplitInts(aidsStr)
if err != nil {
log.Error("query aids(%s) split error(%v)", aidsStr, err)
c.JSON(nil, ecode.RequestErr)
return
}
if len(aids) > 20 {
log.Error("query aids(%s) too long, appkey(%s)", aidsStr, params.Get("appkey"))
c.JSON(nil, ecode.RequestErr)
return
}
c.JSON(arcSvc.Views3(c, aids))
}
// arcPage get pages by aid
func arcPage(c *bm.Context) {
params := c.Request.Form
// check params
aidStr := params.Get("aid")
aid, err := strconv.ParseInt(aidStr, 10, 64)
if err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
c.JSON(arcSvc.Page3(c, aid))
}
// video get video by aid & cid.
func video(c *bm.Context) {
params := c.Request.Form
// check params
aidStr := params.Get("aid")
aid, err := strconv.ParseInt(aidStr, 10, 64)
if err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
cidStr := params.Get("cid")
cid, err := strconv.ParseInt(cidStr, 10, 64)
if err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
c.JSON(arcSvc.Video3(c, aid, cid))
}
// description get description by aid & cid.
func description(c *bm.Context) {
params := c.Request.Form
// check params
aidStr := params.Get("aid")
aid, err := strconv.ParseInt(aidStr, 10, 64)
if err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
c.JSON(arcSvc.Description(c, aid))
}