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,53 @@
package(default_visibility = ["//visibility:public"])
load(
"@io_bazel_rules_go//go:def.bzl",
"go_test",
"go_library",
)
go_test(
name = "go_default_test",
srcs = [
"dao_test.go",
"playurl_test.go",
],
embed = [":go_default_library"],
rundir = ".",
tags = ["automanaged"],
deps = [
"//app/job/main/tv/conf:go_default_library",
"//vendor/github.com/smartystreets/goconvey/convey:go_default_library",
],
)
go_library(
name = "go_default_library",
srcs = [
"dao.go",
"playurl.go",
],
importpath = "go-common/app/job/main/tv/dao/playurl",
tags = ["automanaged"],
visibility = ["//visibility:public"],
deps = [
"//app/job/main/tv/conf:go_default_library",
"//app/job/main/tv/model/pgc:go_default_library",
"//library/log:go_default_library",
"//library/net/http/blademaster: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,21 @@
package playurl
import (
"go-common/app/job/main/tv/conf"
httpx "go-common/library/net/http/blademaster"
)
// Dao dao.
type Dao struct {
conf *conf.Config
client *httpx.Client
}
// New create a instance of Dao and return.
func New(c *conf.Config) (d *Dao) {
d = &Dao{
conf: c,
client: httpx.NewClient(conf.Conf.HTTPClient),
}
return
}

View File

@@ -0,0 +1,25 @@
package playurl
import (
"context"
"flag"
"go-common/app/job/main/tv/conf"
"path/filepath"
)
var (
ctx = context.TODO()
d *Dao
)
func WithDao(f func(d *Dao)) func() {
return func() {
dir, _ := filepath.Abs("../../cmd/tv-job-test.toml")
flag.Set("conf", dir)
conf.Init()
if d == nil {
d = New(conf.Conf)
}
f(d)
}
}

View File

@@ -0,0 +1,69 @@
package playurl
import (
"context"
"fmt"
"net/url"
model "go-common/app/job/main/tv/model/pgc"
"go-common/library/log"
)
const (
_type = "mp4"
_maxBackup = 0
_otype = "json"
)
// Playurl calls the api of playurl to get the url to play the video
func (d *Dao) Playurl(ctx context.Context, cid int) (playurl string, hitDead bool, err error) {
var (
result = model.PlayurlResp{}
params = url.Values{}
api = d.conf.Sync.PlayURL.API
originURL string
)
params.Set("cid", fmt.Sprintf("%d", cid))
params.Set("type", _type) // to get one piece
params.Set("max_backup", fmt.Sprintf("%d", _maxBackup)) // no backup url needed
params.Set("otype", _otype) // json format response
params.Set("qn", d.conf.Sync.PlayURL.Qn) // quality fix to 16
if err = d.client.Get(ctx, api, "", params, &result); err != nil {
log.Error("ClientGet error[%v]", err)
return
}
if result.Code != 0 { // logic error
for _, v := range d.conf.Sync.PlayURL.Deadcodes {
if result.Code == v { // hit dead code
hitDead = true
return
}
}
err = fmt.Errorf("Resp Code:[%v], Message:[%v]", result.Code, result.Message)
return
}
if len(result.Durl) < 1 { // result empty
err = fmt.Errorf("Playurl Result is Empty! Resp (%v)", result)
return
}
originURL = result.Durl[0].URL
if playurl, err = d.hostChange(originURL); err != nil { // replace the host of the playurl
log.Error("HostChange Origin: %s, Error: %v", originURL, err)
}
return
}
// replace the url's host by TV's dedicated host
func (d *Dao) hostChange(playurl string) (replaced string, err error) {
var host = d.conf.Sync.PlayURL.PlayPath
u, err := url.Parse(playurl)
if err != nil {
log.Error("hostChange ParseURL error (%v)", err)
return
}
log.Info("[hostChange] for URL: %s, Original Host: %s, Now we change it to: %s", playurl, u.Host, host)
u.Host = host // replace the host
u.RawQuery = "" // remove useless query
replaced = u.String()
return
}

View File

@@ -0,0 +1,16 @@
package playurl
import (
"testing"
. "github.com/smartystreets/goconvey/convey"
)
func TestDao_Playurl(t *testing.T) {
Convey("TestDao_Playurl", t, WithDao(func(d *Dao) {
url, hitDead, err := d.Playurl(ctx, 41057587)
So(err, ShouldBeNil)
So(hitDead, ShouldBeTrue)
So(url, ShouldNotBeEmpty)
}))
}