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,61 @@
package(default_visibility = ["//visibility:public"])
load(
"@io_bazel_rules_go//go:def.bzl",
"go_test",
"go_library",
)
go_test(
name = "go_default_test",
srcs = [
"adv_test.go",
"http_test.go",
],
embed = [":go_default_library"],
rundir = ".",
tags = ["automanaged"],
)
go_library(
name = "go_default_library",
srcs = [
"adv.go",
"assist.go",
"dm.go",
"filter.go",
"http.go",
"report.go",
"up.go",
],
importpath = "go-common/app/interface/main/dm/http",
tags = ["automanaged"],
visibility = ["//visibility:public"],
deps = [
"//app/interface/main/dm/conf:go_default_library",
"//app/interface/main/dm/model:go_default_library",
"//app/interface/main/dm/service:go_default_library",
"//app/interface/main/dm2/model: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/antispam:go_default_library",
"//library/net/http/blademaster/middleware/auth: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,116 @@
package http
import (
"strconv"
"go-common/app/interface/main/dm2/model"
"go-common/library/ecode"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
)
// buyAdv 购买高级弹幕
func buyAdv(c *bm.Context) {
p := c.Request.Form
mid, _ := c.Get("mid")
cid, err := strconv.ParseInt(p.Get("cid"), 10, 64)
if err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
mode := p.Get("mode")
if mode == "" || (mode != model.AdvSpeMode && mode != model.AdvMode) {
c.JSON(nil, ecode.RequestErr)
return
}
if err = dmSvc.BuyAdvance(c, mid.(int64), cid, mode); err != nil {
c.JSON(nil, err)
log.Error("dmSvc.BuyAdvance(mid:%v,cid:%d,mode:%s) error(%v)", mid, cid, mode, err)
return
}
res := map[string]interface{}{}
res["message"] = "已成功购买"
c.JSONMap(res, err)
}
// advState 高级弹幕状态
func advState(c *bm.Context) {
p := c.Request.Form
mid, _ := c.Get("mid")
cid, err := strconv.ParseInt(p.Get("cid"), 10, 64)
if err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
mode := p.Get("mode")
if mode == "" {
c.JSON(nil, ecode.RequestErr)
return
}
state, err := dmSvc.AdvanceState(c, mid.(int64), cid, mode)
if err != nil {
c.JSON(nil, err)
log.Error("dmSvc.AdvState(%v,%d,%s) error(%v)", mid, cid, mode, err)
return
}
c.JSON(state, err)
}
// advList 高级弹幕列表
func advList(c *bm.Context) {
mid, _ := c.Get("mid")
list, err := dmSvc.Advances(c, mid.(int64))
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(list, err)
}
// passAdv 通过高级弹幕
func passAdv(c *bm.Context) {
var (
err error
id int64
params = c.Request.Form
)
mid, _ := c.Get("mid")
if id, err = strconv.ParseInt(params.Get("id"), 10, 64); err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
err = dmSvc.PassAdvance(c, mid.(int64), id)
c.JSON(nil, err)
}
// denyAdv 拒绝高级弹幕
func denyAdv(c *bm.Context) {
var (
err error
id int64
params = c.Request.Form
)
mid, _ := c.Get("mid")
if id, err = strconv.ParseInt(params.Get("id"), 10, 64); err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
err = dmSvc.DenyAdvance(c, mid.(int64), id)
c.JSON(nil, err)
}
// cancelAdv 取消高级弹幕
func cancelAdv(c *bm.Context) {
var (
err error
id int64
params = c.Request.Form
)
mid, _ := c.Get("mid")
if id, err = strconv.ParseInt(params.Get("id"), 10, 64); err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
err = dmSvc.CancelAdvance(c, mid.(int64), id)
c.JSON(nil, err)
}

View File

@ -0,0 +1,132 @@
package http
import (
"crypto/md5"
"encoding/hex"
"fmt"
"net/url"
"strconv"
"testing"
"time"
)
func Test_advBuy(t *testing.T) {
params := url.Values{}
params.Set("cid", "3786607")
params.Set("mode", "sp")
s := _host + "/x/dm/adv/buy?" + params.Encode()
body, err := cpost(s)
if err != nil {
t.Errorf("url(%s) error(%s)", s, err)
t.FailNow()
}
if err = ccode(body); err != nil {
t.Fatal(err, string(body))
t.FailNow()
}
fmt.Println(string(body))
}
func Test_advStat(t *testing.T) {
params := url.Values{}
params.Set("cid", "3786607")
params.Set("mode", "sp")
s := _host + "/x/dm/adv/state?" + params.Encode()
body, err := cget(s)
if err != nil {
t.Errorf("url(%s) error(%s)", s, err)
t.FailNow()
}
if err = ccode(body); err != nil {
t.Fatal(err, string(body))
t.FailNow()
}
fmt.Println(string(body))
}
// Test_advPass list
func Test_advList(t *testing.T) {
params := url.Values{}
params.Set("mid", "27515260")
params.Set("appkey", "53e2fa226f5ad348")
params.Set("ts", strconv.FormatInt(time.Now().Unix(), 10))
mh := md5.Sum([]byte(params.Encode() + "3cf6bd1b0ff671021da5f424fea4b04a"))
params.Set("sign", hex.EncodeToString(mh[:]))
s := _innerHost + "/x/internal/dm/adv/list?" + params.Encode()
body, err := oget(s)
if err != nil {
t.Errorf("url(%s) error(%s)", s, err)
t.FailNow()
}
if err = ccode(body); err != nil {
t.Fatal(err, string(body))
t.FailNow()
}
fmt.Println(string(body))
}
// Test_advPass list
func Test_advPass(t *testing.T) {
params := url.Values{}
params.Set("mid", "13444")
params.Set("id", "8")
params.Set("appkey", "53e2fa226f5ad348")
params.Set("ts", strconv.FormatInt(time.Now().Unix(), 10))
mh := md5.Sum([]byte(params.Encode() + "3cf6bd1b0ff671021da5f424fea4b04a"))
params.Set("sign", hex.EncodeToString(mh[:]))
s := _innerHost + "/x/internal/dm/adv/pass?" + params.Encode()
body, err := opost(s)
if err != nil {
t.Errorf("url(%s) error(%s)", s, err)
t.FailNow()
}
if err = ccode(body); err != nil {
t.Fatal(err, string(body))
t.FailNow()
}
fmt.Println(string(body))
}
// Test_advDeny list
func Test_advDeny(t *testing.T) {
params := url.Values{}
params.Set("mid", "13444")
params.Set("id", "8")
params.Set("appkey", "53e2fa226f5ad348")
params.Set("ts", strconv.FormatInt(time.Now().Unix(), 10))
mh := md5.Sum([]byte(params.Encode() + "3cf6bd1b0ff671021da5f424fea4b04a"))
params.Set("sign", hex.EncodeToString(mh[:]))
s := _innerHost + "/x/internal/dm/adv/deny?" + params.Encode()
body, err := opost(s)
if err != nil {
t.Errorf("url(%s) error(%s)", s, err)
t.FailNow()
}
if err = ccode(body); err != nil {
t.Fatal(err, string(body))
t.FailNow()
}
fmt.Println(string(body))
}
// Test_advCancel list
func Test_advCancel(t *testing.T) {
params := url.Values{}
params.Set("mid", "13444")
params.Set("id", "8")
params.Set("appkey", "53e2fa226f5ad348")
params.Set("ts", strconv.FormatInt(time.Now().Unix(), 10))
mh := md5.Sum([]byte(params.Encode() + "3cf6bd1b0ff671021da5f424fea4b04a"))
params.Set("sign", hex.EncodeToString(mh[:]))
s := _innerHost + "/x/internal/dm/adv/cancel?" + params.Encode()
body, err := opost(s)
if err != nil {
t.Errorf("url(%s) error(%s)", s, err)
t.FailNow()
}
if err = ccode(body); err != nil {
t.Fatal(err, string(body))
t.FailNow()
}
fmt.Println(string(body))
}

View File

@ -0,0 +1,129 @@
package http
import (
"strconv"
"strings"
"go-common/library/ecode"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
"go-common/library/xstr"
)
// assistBanned 添加up主屏蔽
func assistBanned(c *bm.Context) {
var (
err error
cid int64
dmids []int64
params = c.Request.Form
)
mid, _ := c.Get("mid")
cid, err = strconv.ParseInt(params.Get("cid"), 10, 64)
if err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
if params.Get("dmids") == "" {
c.JSON(nil, ecode.RequestErr)
return
}
if dmids, err = xstr.SplitInts(params.Get("dmids")); err != nil {
log.Error("xstr.SplitInts(%s) error(%v)", params.Get("dmids"), err)
return
}
err = dmSvc.AssistBanned(c, mid.(int64), cid, dmids)
c.JSON(nil, err)
}
// assistBannedUpt 修改up主屏蔽状态
func assistBannedUpt(c *bm.Context) {
var (
err error
hash string
stat int
params = c.Request.Form
)
mid, _ := c.Get("mid")
if hash = params.Get("hash"); hash == "" {
c.JSON(nil, ecode.RequestErr)
return
}
if stat, err = strconv.Atoi(params.Get("stat")); err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
err = dmSvc.AssistUptBanned(c, mid.(int64), hash, int8(stat))
c.JSON(nil, err)
}
// assistDelete 协管删除弹幕
func assistDelete(c *bm.Context) {
var (
mid, _ = c.Get("mid")
params = c.Request.Form
)
cid, err := strconv.ParseInt(params.Get("cid"), 10, 64)
if err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
if params.Get("dmids") == "" {
c.JSON(nil, ecode.RequestErr)
return
}
dmids, err := xstr.SplitInts(params.Get("dmids"))
if err != nil || len(dmids) == 0 {
c.JSON(nil, ecode.RequestErr)
return
}
err = dmSvc.AssistDeleteDM(c, mid.(int64), cid, dmids)
c.JSON(nil, err)
}
// assistBannedUsers 获取UP主屏蔽的用户列表
func assistBannedUsers(c *bm.Context) {
var (
err error
aid int64
hashes []string
params = c.Request.Form
)
mid, _ := c.Get("mid")
aid, err = strconv.ParseInt(params.Get("aid"), 10, 64)
if err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
hashes, err = dmSvc.AssistBannedUsers(c, mid.(int64), aid)
if err != nil {
c.JSON(nil, err)
log.Error("dmSvc.AssistBannedUsers(%v,%d) error(%v)", mid, aid, err)
return
}
c.JSON(hashes, nil)
}
// AssistDelBanned2 批量撤销up主屏蔽
func AssistDelBanned2(c *bm.Context) {
var (
err error
aid int64
hashes []string
params = c.Request.Form
)
mid, _ := c.Get("mid")
aid, err = strconv.ParseInt(params.Get("aid"), 10, 64)
if err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
if params.Get("hashes") == "" {
c.JSON(nil, ecode.RequestErr)
return
}
hashes = strings.Split(params.Get("hashes"), ",")
err = dmSvc.AssistDelBanned2(c, mid.(int64), aid, hashes)
c.JSON(nil, err)
}

View File

@ -0,0 +1,163 @@
package http
import (
"strconv"
"go-common/library/ecode"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
"go-common/library/xstr"
)
// addPa 申请保护弹幕.
func addPa(c *bm.Context) {
var (
str string
err error
cid int64
dmids []int64
)
mid, _ := c.Get("mid")
params := c.Request.Form
str = params.Get("cid")
cid, err = strconv.ParseInt(str, 10, 64)
if err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
str = params.Get("dmids")
if dmids, err = xstr.SplitInts(str); err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
err = dmSvc.AddProtectApply(c, mid.(int64), cid, dmids)
c.JSON(nil, err)
}
// recall 弹幕撤回
func recall(c *bm.Context) {
var (
str string
msg string
err error
cid int64
dmid int64
)
mid, _ := c.Get("mid")
params := c.Request.Form
str = params.Get("cid")
cid, err = strconv.ParseInt(str, 10, 64)
if err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
dmid, err = strconv.ParseInt(params.Get("dmid"), 10, 64)
if err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
msg, err = dmSvc.Recall(c, mid.(int64), cid, dmid)
if err != nil {
c.JSON(nil, err)
log.Error("dmSvc.Recall(%v,%d,%d) error(%v)", mid, cid, dmid, err)
return
}
res := map[string]interface{}{}
if msg != "" {
res["message"] = msg
}
c.JSONMap(res, err)
}
// midHash 获取用户mid hash.
func midHash(c *bm.Context) {
var err error
mid, _ := c.Get("mid")
hash, err := dmSvc.MidHash(c, mid.(int64))
if err != nil {
c.JSON(nil, err)
log.Error("dmSvc.MidHash(%d) error(%v)", mid.(int64), err)
return
}
res := map[string]interface{}{}
res["data"] = map[string]interface{}{
"hash": hash,
}
c.JSONMap(res, err)
}
// transfer 弹幕转移
func transfer(c *bm.Context) {
p := c.Request.Form
toCid, err := strconv.ParseInt(p.Get("to"), 10, 64)
if err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
offset, err := strconv.ParseFloat(p.Get("offset"), 64)
if err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
mid, _ := c.Get("mid")
if err = dmSvc.CheckExist(c, mid.(int64), toCid); err != nil {
c.JSON(nil, err)
return
}
fromCids, err := xstr.SplitInts(p.Get("from"))
if err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
for _, cid := range fromCids {
if cid == toCid {
c.JSON(nil, ecode.DMTransferSame)
return
}
if err = dmSvc.CheckExist(c, mid.(int64), cid); err != nil {
c.JSON(nil, err)
return
}
if err = dmSvc.TransferJob(c, mid.(int64), cid, toCid, offset); err != nil {
log.Error("dmSvc.TransferJob(mid:%d,from:%d,to:%d,offset:%v) error(%v)", mid.(int64), cid, toCid, offset, err)
c.JSON(nil, err)
return
}
}
c.JSON(nil, err)
}
func transferList(c *bm.Context) {
var (
cid int64
p = c.Request.Form
)
cid, err := strconv.ParseInt(p.Get("cid"), 10, 64)
if err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
l, err := dmSvc.TransferList(c, cid)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(l, err)
}
func transferRetry(c *bm.Context) {
var (
id int64
err error
p = c.Request.Form
)
id, err = strconv.ParseInt(p.Get("id"), 10, 64)
if err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
mid, _ := c.Get("mid")
err = dmSvc.TransferRetry(c, id, mid.(int64))
c.JSON(nil, err)
}

View File

@ -0,0 +1,240 @@
package http
import (
"encoding/json"
"strconv"
"strings"
"go-common/app/interface/main/dm/model"
dm2Mdl "go-common/app/interface/main/dm2/model"
"go-common/library/ecode"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
"go-common/library/xstr"
)
var (
_userValidTime = 86400
_glbValidTime = 86400
)
func userRules(c *bm.Context) {
mid, _ := c.Get("mid")
rs, err := dmSvc.UserRules(c, mid.(int64))
if err != nil {
c.JSON(nil, err)
return
}
data := map[string]interface{}{
"rule": rs,
"ver": 123,
"valid": _userValidTime,
}
c.JSON(data, err)
}
func globalRuleEmpty(c *bm.Context) {
var (
param = c.Request.Form
curVersion = dmSvc.GlobalRuleVersion()
)
_, err := strconv.ParseUint(param.Get("ver"), 10, 64)
if err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
data := map[string]interface{}{
"rule": make([]*dm2Mdl.GlobalFilter, 0),
"ver": curVersion,
"valid": _glbValidTime,
}
c.JSON(data, err)
}
// func globalRules(c context.Context) {
// var (
// res = c.Result()
// param = c.Request().Form
// curVersion = dmSvc.GlobalRuleVersion()
// )
// version, err := strconv.ParseUint(param.Get("ver"), 10, 64)
// if err != nil {
// res["code"] = ecode.RequestErr
// return
// }
// if version == curVersion {
// res["code"] = ecode.NotModified
// return
// }
// rs, err := dmSvc.GlobalRules(c)
// if err != nil {
// res["code"] = err
// return
// }
// data := map[string]interface{}{
// "rule": rs,
// "ver": curVersion,
// "valid": _glbValidTime,
// }
// res["data"] = data
// }
func addUserRule(c *bm.Context) {
params := c.Request.Form
typeStr := params.Get("type")
filter := params.Get("filter")
comment := params.Get("comment")
mid, _ := c.Get("mid")
tp, err := strconv.ParseInt(typeStr, 10, 64)
if err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
if filter == "" {
c.JSON(nil, ecode.DMFilterIsEmpty)
return
}
v, err := dmSvc.AddUserRule(c, int8(tp), mid.(int64), []string{filter}, comment)
if err != nil || len(v) <= 0 {
c.JSON(nil, err)
return
}
c.JSON(v[0], err)
}
func multiAddUserRule(c *bm.Context) {
params := c.Request.Form
typeStr := params.Get("type")
filters := params.Get("filters")
comment := params.Get("comment")
mid, _ := c.Get("mid")
tp, err := strconv.ParseInt(typeStr, 10, 64)
if err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
if filters == "" {
c.JSON(nil, ecode.DMFilterIsEmpty)
return
}
values := strings.Split(filters, ",")
v, err := dmSvc.AddUserRule(c, int8(tp), mid.(int64), values, comment)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(v, err)
}
func addGlobalRule(c *bm.Context) {
params := c.Request.Form
filter := params.Get("filter")
typeStr := params.Get("type")
tp, err := strconv.ParseInt(typeStr, 10, 64)
if err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
if filter == "" {
c.JSON(nil, ecode.DMFilterIsEmpty)
return
}
v, err := dmSvc.AddGlobalRule(c, int8(tp), filter)
if err != nil {
c.JSON(nil, err)
return
}
c.JSON(v, err)
}
func delUserRules(c *bm.Context) {
params := c.Request.Form
mid, _ := c.Get("mid")
idsStr := params.Get("ids")
if len(idsStr) == 0 {
c.JSON(nil, ecode.RequestErr)
return
}
ids, err := xstr.SplitInts(idsStr)
if err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
_, err = dmSvc.DelUserRules(c, mid.(int64), ids)
c.JSON(nil, err)
}
func delGlobalRules(c *bm.Context) {
var params = c.Request.Form
idsStr := params.Get("ids")
if len(idsStr) == 0 {
c.JSON(nil, ecode.RequestErr)
return
}
ids, err := xstr.SplitInts(idsStr)
if err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
_, err = dmSvc.DelGlobalRules(c, ids)
c.JSON(nil, err)
}
// filterList
func filterList(c *bm.Context) {
var (
cid int64
err error
p = c.Request.Form
)
cidStr := p.Get("cid")
if len(cidStr) > 0 {
if cid, err = strconv.ParseInt(cidStr, 10, 64); err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
}
mid, _ := c.Get("mid")
data, err := dmSvc.FilterList(c, mid.(int64), cid)
if err != nil {
log.Error("dmSvc.FilterList(mid:%v cid:%d) error(%v)", mid, cid, err)
c.JSON(nil, err)
return
}
c.JSON(data, nil)
}
func editFilter(c *bm.Context) {
var (
cid int64
fList = make([]*model.IndexFilter, 0)
p = c.Request.Form
err error
)
mid, _ := c.Get("mid")
cidStr := p.Get("cid")
if cidStr != "" {
if cid, err = strconv.ParseInt(cidStr, 10, 64); err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
}
fStr := p.Get("filters")
if err = json.Unmarshal([]byte(fStr), &fList); err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
for _, f := range fList {
if f.Regex == dm2Mdl.FilterTypeRev ||
f.Regex == dm2Mdl.FilterTypeTop ||
f.Regex == dm2Mdl.FilterTypeBottom {
f.Filter = dm2Mdl.FilterContent
}
if err = dmSvc.EditFilter(c, cid, mid.(int64), f.Filter, f.Regex, f.Activate); err != nil {
log.Error("dmSvc.EditFilter(mid:%v cid:%d filter:%s type:%d) error(%v)", mid, cid, f.Filter, f.Regex, err)
c.JSON(nil, err)
return
}
}
c.JSON(nil, nil)
}

View File

@ -0,0 +1,108 @@
package http
import (
"net/http"
"go-common/app/interface/main/dm/conf"
"go-common/app/interface/main/dm/service"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
"go-common/library/net/http/blademaster/middleware/antispam"
"go-common/library/net/http/blademaster/middleware/auth"
"go-common/library/net/http/blademaster/middleware/verify"
)
var (
// service
dmSvc *service.Service
antispamSvc *antispam.Antispam
authSvc *auth.Auth
verifySvc *verify.Verify
)
// Init http init
func Init(c *conf.Config, s *service.Service) {
dmSvc = s
authSvc = auth.New(c.Auth)
verifySvc = verify.New(c.Verify)
antispamSvc = antispam.New(c.Antispam)
engine := bm.DefaultServer(c.HTTPServer)
outerRouter(engine)
interRouter(engine)
// init external server
if err := engine.Start(); err != nil {
log.Error("bm.DefaultServer error(%v)", err)
panic(err)
}
}
func outerRouter(e *bm.Engine) {
e.Ping(ping)
group := e.Group("/x/dm")
{
fltGroup := group.Group("/filter")
{
fltGroup.GET("/user", authSvc.User, userRules)
fltGroup.POST("/user/add", authSvc.User, antispamSvc.Handler(), addUserRule)
fltGroup.POST("/user/add2", authSvc.User, antispamSvc.Handler(), multiAddUserRule)
fltGroup.POST("/user/del", authSvc.User, delUserRules)
fltGroup.GET("/global", authSvc.Guest, globalRuleEmpty)
}
group.POST("/protect/apply", authSvc.User, addPa)
group.POST("/recall", authSvc.User, recall)
group.GET("/user", authSvc.User, midHash)
group.GET("/transfer/list", authSvc.User, transferList)
group.POST("/transfer/retry", authSvc.User, transferRetry)
group.POST("/adv/buy", authSvc.User, buyAdv)
group.GET("/adv/state", authSvc.User, advState)
group.GET("/up/banned/users", authSvc.User, assistBannedUsers)
group.POST("/up/banned/del", authSvc.User, AssistDelBanned2)
group.POST("/assist/banned", authSvc.User, assistBanned)
group.POST("/assist/del", authSvc.User, assistDelete)
group.POST("/report/add", authSvc.User, addReport)
group.POST("/report/add2", authSvc.User, addReport2)
}
}
func interRouter(e *bm.Engine) {
group := e.Group("/x/internal/dm")
{
advGroup := group.Group("/adv")
{
advGroup.POST("/pass", verifySvc.VerifyUser, passAdv)
advGroup.POST("/deny", verifySvc.VerifyUser, denyAdv)
advGroup.POST("/cancel", verifySvc.VerifyUser, cancelAdv)
advGroup.GET("/list", verifySvc.VerifyUser, advList)
}
fltGroup := group.Group("/filter")
{
fltGroup.POST("/global/add", verifySvc.Verify, addGlobalRule)
fltGroup.POST("/global/del", verifySvc.Verify, delGlobalRules)
fltGroup.GET("/index/list", verifySvc.VerifyUser, filterList)
fltGroup.POST("/index/edit", verifySvc.VerifyUser, editFilter)
}
rptGroup := group.Group("/report")
{
rptGroup.POST("/up/edit", verifySvc.VerifyUser, editReport)
rptGroup.GET("/up/list", verifySvc.VerifyUser, reportList)
rptGroup.GET("/up/archives", verifySvc.VerifyUser, rptArchives)
}
prtGroup := group.Group("/up/protect/apply")
{
prtGroup.POST("/notice/switch", verifySvc.Verify, uptPaSwitch)
prtGroup.POST("/status", verifySvc.Verify, UptPaStatus)
prtGroup.GET("/list", verifySvc.Verify, paLs)
prtGroup.GET("/video/list", verifySvc.Verify, paVideoLs)
}
group.POST("/assist/banned/upt", verifySvc.VerifyUser, assistBannedUpt)
group.POST("/up/transfer", verifySvc.VerifyUser, transfer)
}
}
// ping check server ok.
func ping(c *bm.Context) {
if err := dmSvc.Ping(c); err != nil {
log.Error("dm service ping error(%v)", err)
c.AbortWithStatus(http.StatusServiceUnavailable)
}
}

View File

@ -0,0 +1,825 @@
package http
import (
"crypto/md5"
"encoding/hex"
"encoding/json"
"errors"
"fmt"
"io/ioutil"
"net/http"
"net/url"
"strconv"
"testing"
"time"
)
const (
_host = "http://127.0.0.1:6214"
_innerHost = "http://127.0.0.1:6214"
)
var (
apply = _host + "/x/dm/protect/apply"
recallURL = _host + "/x/dm/recall"
my = _host + "/x/dm/my/listxml.so"
applyList = _innerHost + "/x/dm/up/protect/apply/list"
videoList = _innerHost + "/x/dm/up/protect/apply/video/list"
applyChangeStatus = _innerHost + "/x/dm/up/protect/apply/status"
applyNoticeSwitch = _innerHost + "/x/dm/up/protect/apply/notice/switch"
)
func TestUpFilter(t *testing.T) {
params := url.Values{}
params.Set("mid", "1")
params.Set("oid", "0")
s := _host + "/x/dm/filter/up?" + params.Encode()
body, err := cget(s)
fmt.Println(string(body))
if err != nil {
t.Errorf("url(%s) error(%s)", s, err)
t.FailNow()
}
if err = ccode(body); err != nil {
t.Fatal(err, string(body))
t.FailNow()
}
}
func TestAddUpFilter(t *testing.T) {
params := url.Values{}
params.Set("mid", "1")
params.Set("oid", "2")
params.Set("filter", "aabbccdd1234567")
params.Set("type", "2")
s := _host + "/x/dm/filter/user/add?" + params.Encode()
body, err := cpost(s)
if err != nil {
t.Errorf("url(%s) error(%s)", s, err)
t.FailNow()
}
if err = ccode(body); err != nil {
t.Fatal(err, string(body))
t.FailNow()
}
fmt.Println(string(body))
}
func TestDelUpFilter1(t *testing.T) {
params := url.Values{}
params.Set("ids", "1554")
s := _host + "/x/dm/filter/user/del?" + params.Encode()
body, err := cpost(s)
if err != nil {
t.Errorf("url(%s) error(%s)", s, err)
t.FailNow()
}
if err = ccode(body); err != nil {
t.Fatal(err, string(body))
t.FailNow()
}
fmt.Println(string(body))
}
func TestAddFilter2(t *testing.T) {
params := url.Values{}
params.Set("filters", "1233432,78439214")
params.Set("type", "2")
params.Set("comment", "reason")
s := _host + "/x/dm/filter/user/add2?" + params.Encode()
body, err := cpost(s)
if err != nil {
t.Errorf("url(%s) error(%s)", s, err)
t.FailNow()
}
if err = ccode(body); err != nil {
t.Fatal(err, string(body))
t.FailNow()
}
fmt.Println(string(body))
}
func TestAddReport(t *testing.T) {
params := url.Values{}
params.Set("dmid", "719923250")
params.Set("cid", "8937277")
params.Set("reason", "1")
s := _host + "/x/dm/report/add?" + params.Encode()
body, err := cpost(s)
if err != nil {
t.Errorf("url(%s) error(%s)", s, err)
t.FailNow()
}
if err = ccode(body); err != nil {
t.Fatal(err, string(body))
t.FailNow()
}
fmt.Println(string(body))
}
func TestAddReport2(t *testing.T) {
params := url.Values{}
params.Set("dmids", "719189659,719189660")
params.Set("cid", "8937185")
params.Set("reason", "1")
s := _host + "/x/dm/report/add2?" + params.Encode()
body, err := cpost(s)
if err != nil {
t.Errorf("url(%s) error(%s)", s, err)
t.FailNow()
}
if err = ccode(body); err != nil {
t.Fatal(err, string(body))
t.FailNow()
}
fmt.Println(string(body))
}
// TestList list
func TestApply(t *testing.T) {
params := url.Values{}
params.Set("cid", "8937277")
params.Set("dmids", "719214016,123")
s := apply + "?" + params.Encode()
body, err := cpost(s)
if err != nil {
t.Errorf("url(%s) error(%s)", s, err)
t.FailNow()
}
if err = ccode(body); err != nil {
t.Fatal(err, string(body))
t.FailNow()
}
fmt.Println(string(body))
}
func TestRecall(t *testing.T) {
params := url.Values{}
params.Set("cid", "8937185")
params.Set("dmid", "719189659")
s := recallURL + "?" + params.Encode()
body, err := cpost(s)
if err != nil {
t.Errorf("url(%s) error(%s)", s, err)
t.FailNow()
}
if err = ccode(body); err != nil {
t.Fatal(err, string(body))
t.FailNow()
}
fmt.Println(string(body))
}
// TestList list
func TestMy(t *testing.T) {
params := url.Values{}
params.Set("cid", "8937277")
s := my + "?" + params.Encode()
body, err := cget(s)
if err != nil {
t.Errorf("url(%s) error(%s)", s, err)
t.FailNow()
}
fmt.Println(string(body))
}
// TestList list
func TestApplyList(t *testing.T) {
var (
s string
body []byte
err error
mh [16]byte
)
params := url.Values{}
params.Set("uid", "15555180")
params.Set("page", "1")
params.Set("appkey", "53e2fa226f5ad348")
params.Set("ts", strconv.FormatInt(time.Now().Unix(), 10))
mh = md5.Sum([]byte(params.Encode() + "3cf6bd1b0ff671021da5f424fea4b04a"))
params.Set("sign", hex.EncodeToString(mh[:]))
s = applyList + "?" + params.Encode()
body, err = oget(s)
if err != nil {
t.Errorf("url(%s) error(%s)", s, err)
t.FailNow()
}
if err = ccode(body); err != nil {
t.Fatal(err, string(body))
t.FailNow()
}
fmt.Println(string(body))
params.Del("sign")
params.Set("sort", "playtime")
mh = md5.Sum([]byte(params.Encode() + "3cf6bd1b0ff671021da5f424fea4b04a"))
params.Set("sign", hex.EncodeToString(mh[:]))
s = applyList + "?" + params.Encode()
body, err = oget(s)
if err != nil {
t.Errorf("url(%s) error(%s)", s, err)
t.FailNow()
}
if err = ccode(body); err != nil {
t.Fatal(err, string(body))
t.FailNow()
}
fmt.Println(string(body))
params.Del("sign")
params.Set("aid", "4052732")
mh = md5.Sum([]byte(params.Encode() + "3cf6bd1b0ff671021da5f424fea4b04a"))
params.Set("sign", hex.EncodeToString(mh[:]))
s = applyList + "?" + params.Encode()
body, err = oget(s)
if err != nil {
t.Errorf("url(%s) error(%s)", s, err)
t.FailNow()
}
if err = ccode(body); err != nil {
t.Fatal(err, string(body))
t.FailNow()
}
fmt.Println(string(body))
params.Del("sign")
params.Set("sort", "playtime")
mh = md5.Sum([]byte(params.Encode() + "3cf6bd1b0ff671021da5f424fea4b04a"))
params.Set("sign", hex.EncodeToString(mh[:]))
s = applyList + "?" + params.Encode()
body, err = oget(s)
if err != nil {
t.Errorf("url(%s) error(%s)", s, err)
t.FailNow()
}
if err = ccode(body); err != nil {
t.Fatal(err, string(body))
t.FailNow()
}
fmt.Println(string(body))
}
// TesVideoList list
func TestVideoList(t *testing.T) {
params := url.Values{}
params.Set("uid", "15555180")
params.Set("appkey", "53e2fa226f5ad348")
params.Set("ts", strconv.FormatInt(time.Now().Unix(), 10))
mh := md5.Sum([]byte(params.Encode() + "3cf6bd1b0ff671021da5f424fea4b04a"))
params.Set("sign", hex.EncodeToString(mh[:]))
s := videoList + "?" + params.Encode()
body, err := oget(s)
if err != nil {
t.Errorf("url(%s) error(%s)", s, err)
t.FailNow()
}
if err = ccode(body); err != nil {
t.Fatal(err, string(body))
t.FailNow()
}
fmt.Println(string(body))
}
// TestApplyChangeStatus TestApplyChangeStatus
func TestApplyChangeStatus(t *testing.T) {
params := url.Values{}
params.Set("uid", "15555180")
params.Set("status", "1")
params.Set("ids", "1,2")
params.Set("appkey", "53e2fa226f5ad348")
params.Set("ts", strconv.FormatInt(time.Now().Unix(), 10))
mh := md5.Sum([]byte(params.Encode() + "3cf6bd1b0ff671021da5f424fea4b04a"))
params.Set("sign", hex.EncodeToString(mh[:]))
s := applyChangeStatus + "?" + params.Encode()
body, err := opost(s)
if err != nil {
t.Errorf("url(%s) error(%s)", s, err)
t.FailNow()
}
if err = ccode(body); err != nil {
t.Fatal(err, string(body))
t.FailNow()
}
fmt.Println(string(body))
}
// TestApplyNoticeSwitch TestApplyChangeStatus
func TestApplyNoticeSwitch(t *testing.T) {
var (
mh [16]byte
s string
body []byte
err error
)
params := url.Values{}
params.Set("uid", "15555180")
params.Set("status", "0")
params.Set("appkey", "53e2fa226f5ad348")
params.Set("ts", strconv.FormatInt(time.Now().Unix(), 10))
mh = md5.Sum([]byte(params.Encode() + "3cf6bd1b0ff671021da5f424fea4b04a"))
params.Set("sign", hex.EncodeToString(mh[:]))
s = applyNoticeSwitch + "?" + params.Encode()
body, err = opost(s)
if err != nil {
t.Errorf("url(%s) error(%s)", s, err)
t.FailNow()
}
if err = ccode(body); err != nil {
t.Fatal(err, string(body))
t.FailNow()
}
fmt.Println(string(body))
params.Del("sign")
params.Set("status", "1")
mh = md5.Sum([]byte(params.Encode() + "3cf6bd1b0ff671021da5f424fea4b04a"))
params.Set("sign", hex.EncodeToString(mh[:]))
s = applyNoticeSwitch + "?" + params.Encode()
body, err = opost(s)
if err != nil {
t.Errorf("url(%s) error(%s)", s, err)
t.FailNow()
}
if err = ccode(body); err != nil {
t.Fatal(err, string(body))
t.FailNow()
}
fmt.Println(string(body))
}
// TestUptStat list
func TestUptStat(t *testing.T) {
params := url.Values{}
params.Set("cid", "8937278")
params.Set("dmid", "719189706")
params.Set("stat", "0")
params.Set("appkey", "53e2fa226f5ad348")
params.Set("ts", strconv.FormatInt(time.Now().Unix(), 10))
mh := md5.Sum([]byte(params.Encode() + "3cf6bd1b0ff671021da5f424fea4b04a"))
params.Set("sign", hex.EncodeToString(mh[:]))
s := _innerHost + "/x/internal/dm/stat/upt?" + params.Encode()
fmt.Println(s)
body, err := opost(s)
if err != nil {
t.Errorf("url(%s) error(%s)", s, err)
t.FailNow()
}
if err = ccode(body); err != nil {
t.Fatal(err, string(body))
t.FailNow()
}
fmt.Println(string(body))
}
// TestUptStat list
func TestDMTransfer(t *testing.T) {
params := url.Values{}
params.Set("from", "10108810")
params.Set("to", "10108809")
params.Set("mid", "452156")
params.Set("offset", "0")
params.Set("appkey", "53e2fa226f5ad348")
params.Set("ts", strconv.FormatInt(time.Now().Unix(), 10))
mh := md5.Sum([]byte(params.Encode() + "3cf6bd1b0ff671021da5f424fea4b04a"))
params.Set("sign", hex.EncodeToString(mh[:]))
s := _innerHost + "/x/internal/dm/up/transfer2?" + params.Encode()
fmt.Println(s)
body, err := opost(s)
if err != nil {
t.Errorf("url(%s) error(%s)", s, err)
t.FailNow()
}
if err = ccode(body); err != nil {
t.Fatal(err, string(body))
t.FailNow()
}
fmt.Println(string(body))
}
// TestAssistBanned list
func TestAssistBanned(t *testing.T) {
params := url.Values{}
params.Set("cid", "10108163")
params.Set("dmids", "719925837,719925859")
s := _host + "/x/dm/assist/banned?" + params.Encode()
body, err := cpost(s)
if err != nil {
t.Errorf("url(%s) error(%s)", s, err)
t.FailNow()
}
if err = ccode(body); err != nil {
t.Fatal(err, string(body))
t.FailNow()
}
fmt.Println(string(body))
}
// TestAssistDelBanned2 list
func TestAssistDelBanned2(t *testing.T) {
params := url.Values{}
params.Set("aid", "4052732")
params.Set("hashes", "131141213,mdzz")
s := _host + "/x/dm/up/banned/del?" + params.Encode()
body, err := cpost(s)
if err != nil {
t.Errorf("url(%s) error(%s)", s, err)
t.FailNow()
}
if err = ccode(body); err != nil {
t.Fatal(err, string(body))
t.FailNow()
}
fmt.Println(string(body))
}
// TestUser user
func TestUser(t *testing.T) {
s := _host + "/x/dm/user"
body, err := cget(s)
if err != nil {
t.Errorf("url(%s) error(%s)", s, err)
t.FailNow()
}
if err = ccode(body); err != nil {
t.Fatal(err, string(body))
t.FailNow()
}
fmt.Println(string(body))
}
func TestBannedUsers(t *testing.T) {
s := _host + "/x/dm/up/banned/users"
params := url.Values{}
params.Set("aid", "10097375")
body, err := cget(s + "?" + params.Encode())
if err != nil {
t.Errorf("url(%s) error(%s)", s, err)
t.FailNow()
}
if err = ccode(body); err != nil {
t.Fatal(err, string(body))
t.FailNow()
}
fmt.Println(string(body))
}
// TestAssistDel list
func TestAssistDel(t *testing.T) {
params := url.Values{}
params.Set("cid", "8937278")
params.Set("dmids", "719189706,719189707")
s := "http://api.bilibili.com/x/dm/assist/del?" + params.Encode()
body, err := cpost(s)
if err != nil {
t.Errorf("url(%s) error(%s)", s, err)
t.FailNow()
}
if err = ccode(body); err != nil {
t.Fatal(err, string(body))
t.FailNow()
}
fmt.Println(string(body))
}
// TestAssistProtect list
func TestAssistProtect(t *testing.T) {
params := url.Values{}
params.Set("cid", "8937278")
params.Set("dmids", "719189706,719189707")
s := _host + "/x/dm/assist/protect?" + params.Encode()
body, err := cpost(s)
if err != nil {
t.Errorf("url(%s) error(%s)", s, err)
t.FailNow()
}
if err = ccode(body); err != nil {
t.Fatal(err, string(body))
t.FailNow()
}
fmt.Println(string(body))
}
// TestAssistProtect list
func TestAssistMove(t *testing.T) {
params := url.Values{}
params.Set("cid", "8937278")
params.Set("dmids", "719189706,719189707")
s := _host + "/x/dm/assist/move?" + params.Encode()
body, err := cpost(s)
if err != nil {
t.Errorf("url(%s) error(%s)", s, err)
t.FailNow()
}
if err = ccode(body); err != nil {
t.Fatal(err, string(body))
t.FailNow()
}
fmt.Println(string(body))
}
// TestAssistIgnore list
func TestAssistBannedUpt(t *testing.T) {
params := url.Values{}
params.Set("mid", "15555180")
params.Set("hash", "123")
params.Set("stat", "0")
params.Set("appkey", "53e2fa226f5ad348")
params.Set("ts", strconv.FormatInt(time.Now().Unix(), 10))
mh := md5.Sum([]byte(params.Encode() + "3cf6bd1b0ff671021da5f424fea4b04a"))
params.Set("sign", hex.EncodeToString(mh[:]))
s := _innerHost + "/x/internal/dm/assist/banned/upt?" + params.Encode()
body, err := opost(s)
if err != nil {
t.Errorf("url(%s) error(%s)", s, err)
t.FailNow()
}
if err = ccode(body); err != nil {
t.Fatal(err, string(body))
t.FailNow()
}
fmt.Println(string(body))
}
// TestUptPool
func TestUptPool(t *testing.T) {
params := url.Values{}
params.Set("cid", "8937278")
params.Set("dmid", "719189708")
params.Set("pool", "1")
params.Set("appkey", "53e2fa226f5ad348")
params.Set("ts", strconv.FormatInt(time.Now().Unix(), 10))
mh := md5.Sum([]byte(params.Encode() + "3cf6bd1b0ff671021da5f424fea4b04a"))
params.Set("sign", hex.EncodeToString(mh[:]))
s := _innerHost + "/x/internal/dm/pool/upt?" + params.Encode()
body, err := opost(s)
if err != nil {
t.Errorf("url(%s) error(%s)", s, err)
t.FailNow()
}
if err = ccode(body); err != nil {
t.Fatal(err, string(body))
t.FailNow()
}
fmt.Println(string(body))
}
// TestAssistIgnore list
func TestAssistIgnore(t *testing.T) {
params := url.Values{}
params.Set("cid", "8937278")
params.Set("dmids", "719189706,719189707")
s := _host + "/x/dm/assist/ignore?" + params.Encode()
body, err := cpost(s)
if err != nil {
t.Errorf("url(%s) error(%s)", s, err)
t.FailNow()
}
if err = ccode(body); err != nil {
t.Fatal(err, string(body))
t.FailNow()
}
fmt.Println(string(body))
}
func TestDMList(t *testing.T) {
params := url.Values{}
params.Set("cid", "8937278")
params.Set("page", "1")
s := _host + "/x/dm/list?" + params.Encode()
body, err := cget(s)
if err != nil {
t.Errorf("url(%s) error(%s)", s, err)
t.FailNow()
}
if err = ccode(body); err != nil {
t.Fatal(err, string(body))
t.FailNow()
}
fmt.Println(string(body))
}
func TestDMedit(t *testing.T) {
params := url.Values{}
params.Set("cid", "8937278")
params.Set("dmids", "1,2,3,4")
params.Set("state", "1")
s := _host + "/x/dm/edit?" + params.Encode()
body, err := cpost(s)
if err != nil {
t.Errorf("url(%s) error(%s)", s, err)
t.FailNow()
}
if err = ccode(body); err != nil {
t.Fatal(err, string(body))
t.FailNow()
}
fmt.Println(string(body))
}
func TestFilterList(t *testing.T) {
params := url.Values{}
params.Set("mid", "150781")
params.Set("cid", "0")
params.Set("appkey", "53e2fa226f5ad348")
params.Set("ts", strconv.FormatInt(time.Now().Unix(), 10))
mh := md5.Sum([]byte(params.Encode() + "3cf6bd1b0ff671021da5f424fea4b04a"))
params.Set("sign", hex.EncodeToString(mh[:]))
s := _host + "/x/internal/dm/filter/index/list?" + params.Encode()
fmt.Println(s)
body, err := oget(s)
if err != nil {
t.Errorf("url(%s) error(%s)", s, err)
t.FailNow()
}
if err = ccode(body); err != nil {
t.Fatal(err, string(body))
t.FailNow()
}
fmt.Println(string(body))
}
func TestTransferList(t *testing.T) {
params := url.Values{}
params.Set("cid", "10109082")
params.Set("mid", "1")
params.Set("appkey", "53e2fa226f5ad348")
params.Set("ts", strconv.FormatInt(time.Now().Unix(), 10))
mh := md5.Sum([]byte(params.Encode() + "3cf6bd1b0ff671021da5f424fea4b04a"))
params.Set("sign", hex.EncodeToString(mh[:]))
s := _host + "/x/dm/transfer/list?" + params.Encode()
fmt.Println(s)
body, err := oget(s)
if err != nil {
t.Errorf("url(%s) error(%s)", s, err)
t.FailNow()
}
if err = ccode(body); err != nil {
t.Fatal(err, string(body))
t.FailNow()
}
fmt.Println(string(body))
}
func TestTransferRetry(t *testing.T) {
params := url.Values{}
params.Set("id", "265")
params.Set("mid", "1")
s := _host + "/x/dm/transfer/retry?" + params.Encode()
fmt.Println(s)
body, err := cpost(s)
if err != nil {
t.Errorf("url(%s) error(%s)", s, err)
t.FailNow()
}
if err = ccode(body); err != nil {
t.Fatal(err, string(body))
t.FailNow()
}
fmt.Println(string(body))
}
func TestEditFilter(t *testing.T) {
fStr := `[
{
"type": 0,
"filter": "傻逼",
"activate": 1
},
{
"type": 1,
"filter": "*",
"activate": 1
},
{
"type": 4,
"filter": "",
"activate":1
},
{
"type": 2,
"filter": "150781",
"activate": 0
}
]`
params := url.Values{}
params.Set("mid", "150781")
params.Set("cid", "0")
params.Set("filters", fStr)
params.Set("appkey", "53e2fa226f5ad348")
params.Set("ts", strconv.FormatInt(time.Now().Unix(), 10))
mh := md5.Sum([]byte(params.Encode() + "3cf6bd1b0ff671021da5f424fea4b04a"))
params.Set("sign", hex.EncodeToString(mh[:]))
s := _host + "/x/internal/dm/filter/index/edit?" + params.Encode()
fmt.Println(s)
body, err := opost(s)
if err != nil {
t.Errorf("url(%s) error(%s)", s, err)
t.FailNow()
}
if err = ccode(body); err != nil {
t.Fatal(err, string(body))
t.FailNow()
}
fmt.Println(string(body))
}
func TestUserRules(t *testing.T) {
s := _host + "/x/dm/filter/user"
body, err := cget(s)
if err != nil {
t.Errorf("url(%s) error(%s)", s, err)
t.FailNow()
}
if err = ccode(body); err != nil {
t.Fatal(err, string(body))
t.FailNow()
}
fmt.Println(string(body))
}
// oget http get request
func oget(url string) (body []byte, err error) {
resp, err := http.Get(url)
if err != nil {
return
}
defer resp.Body.Close()
body, err = ioutil.ReadAll(resp.Body)
return
}
// ccode check code == 0
// ccode check code == 0
func ccode(body []byte) (err error) {
var d interface{}
err = json.Unmarshal(body, &d)
if err != nil {
return
}
ma, ok := d.(map[string]interface{})
if !ok {
return
}
code := ma["code"].(float64)
if code != 0 {
err = errors.New("code != 0")
return
}
return
}
// opost http post request
func opost(url string) (body []byte, err error) {
resp, err := http.Post(url, "", nil)
if err != nil {
return
}
defer resp.Body.Close()
body, err = ioutil.ReadAll(resp.Body)
return
}
func cpost(url string) (body []byte, err error) {
client := &http.Client{}
req, err := http.NewRequest("POST", url, nil)
if err != nil {
return
}
req.Header.Add("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8")
req.Header.Add("Accept-Language", "ja,zh-CN;q=0.8,zh;q=0.6")
req.Header.Add("Connection", "keep-alive")
req.Header.Add("Cookie", `buvid3=7B833293-671D-47D9-9BAB-464DE756DFBF14331infoc; UM_distinctid=15ba97a9afed0-0b51074d03d7c4-396b7805-1fa400-15ba97a9aff25b; pgv_pvi=6667228160; pgv_si=s603312128; fts=1493197036; sid=chto560j; rpdid=kwmqqoqxomdoplppwwppw; PHPSESSID=nepo3f6lhgci20gbdet1vvfig1; HTML5PlayerCRC32=3819803418; biliMzIsnew=1; biliMzTs=0; html5_player_gray=false; player_gray=false; LIVE_BUVID=ecbc29c14b41a4c5ff883313e734a336; LIVE_BUVID__ckMd5=f2922ceec4b33165; user_face=http%3A%2F%2Fi2.hdslb.com%2Fbfs%2Fface%2F9c843ff4cdcf38e6031e493ff17b1b8610e36e7a.jpg; purl_token=bilibili_1500257956; finger=0e029071; DedeUserID=27515260; DedeUserID__ckMd5=ae01241c690f95b5; SESSDATA=8bb74c97%2C1502854413%2Ccffcbc21; bili_jct=2b4c5f02e710a7f676acecb80c03271f; _cnt_pm=0; _cnt_notify=0; CNZZDATA2724999=cnzz_eid%3D714476842-1493196394-null%26ntime%3D1500262370; _dfcaptcha=a1ca150412337140d3d763aea1da2d41`)
req.Header.Add("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:12.0) Gecko/20100101 Firefox/12.0")
resp, err := client.Do(req)
if err != nil {
return
}
defer resp.Body.Close()
body, err = ioutil.ReadAll(resp.Body)
return
}
func cget(url string) (body []byte, err error) {
client := &http.Client{}
req, err := http.NewRequest("GET", url, nil)
if err != nil {
return
}
req.Header.Add("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8")
req.Header.Add("Accept-Language", "ja,zh-CN;q=0.8,zh;q=0.6")
req.Header.Add("Connection", "keep-alive")
req.Header.Add("Cookie", `sid=88dol9eo; fts=1508407962; UM_distinctid=15f3436b684ab-08804fe751374a-31657c00-1fa400-15f3436b685298; pgv_pvi=3618563072; rpdid=kmilkmximpdoswqploqxw; buvid3=CBB97852-6CF6-4D3A-B97F-5A9AD1D5827F26561infoc; biliMzIsnew=1; biliMzTs=null; LIVE_BUVID=aabb755e95239c26d7f2dbeba748ce27; LIVE_BUVID__ckMd5=8b3ae56b45b2626a; member_v2=1; finger=14bc3c4e; BANGUMI_SS_21715_REC=192513; im_notify_type_3078992=0; DedeUserID=3078992; DedeUserID__ckMd5=55845496fd6119b5; SESSDATA=f7d955fd%2C1519879629%2Ca8074050; bili_jct=553a35adf1c94efb8d125d000798d1ca; pgv_si=s6786742272; purl_token=bilibili_1517461841; _dfcaptcha=30e17d94b2de231c8862ff9d16fff5dc`)
req.Header.Add("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:12.0) Gecko/20100101 Firefox/12.0")
resp, err := client.Do(req)
if err != nil {
return
}
defer resp.Body.Close()
body, err = ioutil.ReadAll(resp.Body)
return
}

View File

@ -0,0 +1,179 @@
package http
import (
"strconv"
"go-common/app/interface/main/dm/model"
"go-common/library/ecode"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
"go-common/library/xstr"
)
const (
_maxContentLen = 100
)
func addReport(c *bm.Context) {
var (
p = c.Request.Form
err error
cid, dmid int64
reason int64
)
mid, _ := c.Get("mid")
if cid, err = strconv.ParseInt(p.Get("cid"), 10, 64); err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
if dmid, err = strconv.ParseInt(p.Get("dmid"), 10, 64); err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
if reason, err = strconv.ParseInt(p.Get("reason"), 10, 8); err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
if int8(reason) > model.ReportReasonTeenagers {
c.JSON(nil, ecode.DMReportReasonError)
return
}
content := p.Get("content")
if len([]rune(content)) > _maxContentLen {
c.JSON(nil, ecode.DMReportReasonTooLong)
return
}
if _, err = dmSvc.AddReport(c, cid, dmid, mid.(int64), int8(reason), content); err != nil {
log.Error("dmSvc.AddReport(cid:%d, dmid:%d, mid:%v) error(%v)", cid, dmid, mid, err)
c.JSON(nil, err)
return
}
res := map[string]interface{}{}
res["message"] = ""
c.JSONMap(res, err)
}
func addReport2(c *bm.Context) {
var (
p = c.Request.Form
err error
cid int64
reason int64
dmids []int64
ok2 bool
)
mid, _ := c.Get("mid")
if cid, err = strconv.ParseInt(p.Get("cid"), 10, 64); err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
if dmids, err = xstr.SplitInts(p.Get("dmids")); err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
if reason, err = strconv.ParseInt(p.Get("reason"), 10, 8); err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
if int8(reason) > model.ReportReasonOther {
c.JSON(nil, ecode.DMReportReasonError)
return
}
content := p.Get("content")
if len([]rune(content)) > _maxContentLen {
c.JSON(nil, ecode.DMReportReasonTooLong)
return
}
for _, dmid := range dmids {
if _, err = dmSvc.AddReport(c, cid, dmid, mid.(int64), int8(reason), content); err != nil {
log.Error("dmSvc.AddReport(cid:%d, dmid:%d, mid:%v) error(%v)", cid, dmid, mid, err)
}
if err == nil {
ok2 = true
}
}
if ok2 {
res := map[string]interface{}{}
res["message"] = ""
c.JSONMap(res, nil)
return
}
c.JSON(nil, err)
}
func editReport(c *bm.Context) {
var (
err error
cid, dmid, op int64
p = c.Request.Form
)
mid, _ := c.Get("mid")
if dmid, err = strconv.ParseInt(p.Get("dmid"), 10, 64); err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
if cid, err = strconv.ParseInt(p.Get("cid"), 10, 64); err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
if op, err = strconv.ParseInt(p.Get("op"), 10, 8); err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
if int8(op) != model.StatUpperIgnore && int8(op) != model.StatUpperDelete {
c.JSON(nil, ecode.RequestErr)
return
}
_, err = dmSvc.EditReport(c, 1, cid, mid.(int64), dmid, int8(op))
c.JSON(nil, err)
}
func reportList(c *bm.Context) {
var (
err error
aid int64 = -1
page, pageSize int64
p = c.Request.Form
upOp = model.StatUpperInit
)
mid, _ := c.Get("mid")
aidStr := p.Get("aid")
if aidStr != "" {
if aid, err = strconv.ParseInt(aidStr, 10, 64); err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
}
if page, err = strconv.ParseInt(p.Get("page"), 10, 64); err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
if pageSize, err = strconv.ParseInt(p.Get("size"), 10, 64); err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
data, err := dmSvc.ReportList(c, mid.(int64), aid, page, pageSize, upOp, []int64{int64(model.StatFirstInit), int64(model.StatSecondInit)})
if err != nil {
log.Error("dmSvc.ReportList(mid:%v, aid:%d) error(%v)", mid, aid, err)
c.JSON(nil, err)
return
}
c.JSON(data, nil)
}
func rptArchives(c *bm.Context) {
var (
err error
upOp = model.StatUpperInit
states = []int8{model.StatFirstInit, model.StatSecondInit}
pn, ps int64 = 1, 20
)
mid, _ := c.Get("mid")
data, err := dmSvc.ReportArchives(c, mid.(int64), upOp, states, pn, ps)
if err != nil {
log.Error("dmSvc.ReportArchives(mid:%v) error(%v)", mid, err)
c.JSON(nil, err)
return
}
c.JSON(data, nil)
}

View File

@ -0,0 +1,124 @@
package http
import (
"strconv"
"go-common/app/interface/main/dm/model"
"go-common/library/ecode"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
"go-common/library/xstr"
)
// uptPaSwitch 申请保护弹幕开关
func uptPaSwitch(c *bm.Context) {
var (
err error
uid int64
status int
params = c.Request.Form
)
// uid
uid, err = strconv.ParseInt(params.Get("uid"), 10, 64)
if err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
// uid
status, err = strconv.Atoi(params.Get("status"))
if err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
err = dmSvc.UptPaSwitch(c, uid, status)
c.JSON(nil, err)
}
// UptPaStatus 处理保护弹幕申请
func UptPaStatus(c *bm.Context) {
var (
err error
uid int64
status int
ids []int64
params = c.Request.Form
)
// uid
uid, err = strconv.ParseInt(params.Get("uid"), 10, 64)
if err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
if uid <= 0 {
c.JSON(nil, ecode.RequestErr)
return
}
// status
status, err = strconv.Atoi(params.Get("status"))
if err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
ids, err = xstr.SplitInts(params.Get("ids"))
if err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
err = dmSvc.UptPaStatus(c, uid, ids, status)
c.JSON(nil, err)
}
// paLs 保护弹幕申请列表
func paLs(c *bm.Context) {
var (
err error
uid, aid int64
page int
data *model.ApplyListResult
params = c.Request.Form
)
// uid
uid, err = strconv.ParseInt(params.Get("uid"), 10, 64)
if err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
aid, err = strconv.ParseInt(params.Get("aid"), 10, 64)
if err != nil {
aid = 0
}
page, err = strconv.Atoi(params.Get("page"))
if err != nil {
page = 1
}
data, err = dmSvc.ProtectApplies(c, uid, aid, page, params.Get("sort"))
if err != nil {
c.JSON(nil, err)
log.Error("dmSvc.PaLs(%v,%v,%v,%v) error(%v)", uid, aid, page, params.Get("sort"), err)
return
}
c.JSON(data, nil)
}
// paVideoLs 保护弹幕申请的视频列表
func paVideoLs(c *bm.Context) {
var (
err error
uid int64
params = c.Request.Form
)
// uid
uid, err = strconv.ParseInt(params.Get("uid"), 10, 64)
if err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
data, err := dmSvc.PaVideoLs(c, uid)
if err != nil {
log.Error("dmSvc.PaVideoLs(%v) error(%v)", uid, err)
c.JSON(nil, err)
return
}
c.JSON(data, nil)
}