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,41 @@
package(default_visibility = ["//visibility:public"])
load(
"@io_bazel_rules_go//go:def.bzl",
"go_library",
)
go_library(
name = "go_default_library",
srcs = [
"header.go",
"session.go",
"uilog.go",
],
importpath = "go-common/app/interface/bbq/common/http",
tags = ["automanaged"],
visibility = ["//visibility:public"],
deps = [
"//app/interface/bbq/common/model:go_default_library",
"//library/log:go_default_library",
"//library/log/infoc:go_default_library",
"//library/net/http/blademaster:go_default_library",
"//library/net/trace:go_default_library",
"//vendor/github.com/Dai0522/go-hash/murmur3:go_default_library",
"//vendor/github.com/json-iterator/go: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,24 @@
package http
import (
"fmt"
bm "go-common/library/net/http/blademaster"
"go-common/library/net/trace"
)
// WrapHeader 为返回头添加自定义字段
func WrapHeader(ctx *bm.Context) {
// Traceid
tracer, _ := trace.FromContext(ctx.Context)
traceid := fmt.Sprintf("%s", tracer)
ctx.Writer.Header().Set("traceid", traceid)
// Sessionid
sid := ctx.Request.Header.Get("SessionID")
if sid == "" {
sid = SessionID(ctx)
}
ctx.Set("SessionID", sid)
ctx.Writer.Header().Set("SessionID", sid)
}

View File

@@ -0,0 +1,33 @@
package http
import (
"fmt"
"math/rand"
"time"
bm "go-common/library/net/http/blademaster"
"github.com/Dai0522/go-hash/murmur3"
)
// SessionID .
func SessionID(ctx *bm.Context) string {
ts := time.Now().Unix()
dev, _ := ctx.Get("device")
buvid := dev.(*bm.Device).Buvid
rnum := rand.Uint64()
str := fmt.Sprintf("%s:%d:%d", buvid, rnum, ts)
hc := murmur3.New().Murmur3_128([]byte(str))
result := ""
pattern := []string{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"}
for _, v := range hc {
tmp := int(v & 15)
result += pattern[tmp]
tmp = int((v >> 4) & 15)
result += pattern[tmp]
}
return result
}

View File

@@ -0,0 +1,87 @@
package http
import (
"fmt"
"strings"
"time"
"go-common/app/interface/bbq/common/model"
"go-common/library/log"
"go-common/library/log/infoc"
bm "go-common/library/net/http/blademaster"
"go-common/library/net/trace"
jsoniter "github.com/json-iterator/go"
)
// UILog .
type UILog struct {
infoc *infoc.Infoc
}
// New .
func New(c *infoc.Config) *UILog {
return &UILog{
infoc: infoc.New(c),
}
}
// Infoc .
func (u *UILog) Infoc(ctx *bm.Context, action int, ext interface{}) {
arg := new(model.Base)
ctx.Bind(arg)
log.V(5).Info("uilog [%+v]", arg)
if action == model.ActionPlay {
// data type 1 心跳上报 2 暂停 3 home
switch arg.DataType {
case 2:
action = model.ActionPlayPause
case 3:
action = model.ActionPlayOut
}
}
// interface base field
app := arg.App
client := arg.Client
version := arg.Version
channel := arg.Channel
loc := arg.Location
cip := ctx.Request.RemoteAddr
if ips := ctx.Request.Header.Get("X-Forwarded-For"); ips != "" {
ipArr := strings.Split(ips, ",")
if len(ipArr) > 0 {
cip = ipArr[0]
}
}
// session id
sid, _ := ctx.Get("SessionID")
// trace id
tracer, _ := trace.FromContext(ctx.Context)
tid := tracer
// recsys query id
qid := arg.QueryID
if action == model.ActionRecommend {
qid = fmt.Sprintf("%s", tracer)
}
// video
svid := arg.SVID
// user
var mid int64
if tmp, ok := ctx.Get("mid"); ok {
mid = tmp.(int64)
}
buvid := ctx.Request.Header.Get("Buvid")
totalDuration := arg.TotalDuration
playDuration := arg.PlayDuration
ctime := time.Now().Unix()
b, _ := jsoniter.Marshal(ext)
u.infoc.Info(client, app, version, channel, loc, cip, qid, sid, tid, svid, mid, buvid, action, totalDuration, playDuration, ctime, string(b), arg.From, arg.FromID, arg.PFrom, arg.PFromID)
}