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 @@
# HTTP API文档

View File

@@ -0,0 +1,56 @@
load(
"@io_bazel_rules_go//proto:def.bzl",
"go_proto_library",
)
package(default_visibility = ["//visibility:public"])
load(
"@io_bazel_rules_go//go:def.bzl",
"go_library",
)
proto_library(
name = "v1_proto",
srcs = ["titans.proto"],
tags = ["automanaged"],
deps = ["@gogo_special_proto//github.com/gogo/protobuf/gogoproto"],
)
go_proto_library(
name = "v1_go_proto",
compilers = ["@io_bazel_rules_go//proto:gogofast_grpc"],
importpath = "go-common/app/service/live/resource/api/http/v1",
proto = ":v1_proto",
tags = ["automanaged"],
deps = ["@com_github_gogo_protobuf//gogoproto:go_default_library"],
)
go_library(
name = "go_default_library",
srcs = ["titans.bm.go"],
embed = [":v1_go_proto"],
importpath = "go-common/app/service/live/resource/api/http/v1",
tags = ["automanaged"],
visibility = ["//visibility:public"],
deps = [
"//library/net/http/blademaster:go_default_library",
"//library/net/http/blademaster/binding:go_default_library",
"@com_github_gogo_protobuf//gogoproto:go_default_library",
"@com_github_gogo_protobuf//proto: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,57 @@
##获取有效banner配置
`GET http://api.live.bilibili.com/xlive/resource/v1/banner/GetBlinkBanner`
### 请求参数
|参数名|必选|类型|描述|
|:---|:---|:---|:---|
|platform|否|string||
|build|否|integer||
```json
{
"code": 0,
"message": "ok",
"data": {
"id": 0,
"title": "",
"jumpPath": "",
"jumpTime": 0,
"jumpPathType": 0,
"imageUrl": ""
}
}
```
##获取有效banner配置
`GET http://api.live.bilibili.com/xlive/resource/v1/banner/GetBanner`
### 请求参数
|参数名|必选|类型|描述|
|:---|:---|:---|:---|
|platform|否|string||
|build|否|integer||
|type|否|string||
```json
{
"code": 0,
"message": "ok",
"data": {
"list": [
{
"id": 0,
"title": "",
"jumpPath": "",
"jumpTime": 0,
"jumpPathType": 0,
"imageUrl": ""
}
]
}
}
```

View File

@@ -0,0 +1,27 @@
##Add 添加资源接口
`GET http://api.live.bilibili.com/xlive/resource/v1/history/Add`
### 请求参数
|参数名|必选|类型|描述|
|:---|:---|:---|:---|
|platform|否|string||
|splashContent|否|string||
|jumpPath|否|string||
|jumpTime|否|integer||
|type|否|integer||
|device|否|string||
|startTime|否|string||
|endTime|否|string||
|imageUrl|否|string||
```json
{
"code": 0,
"message": "ok",
"data": {
}
}
```

View File

@@ -0,0 +1,81 @@
##客户端获取能否直播接口
`GET http://api.live.bilibili.com/xlive/resource/v1/liveCheck/LiveCheck`
### 请求参数
|参数名|必选|类型|描述|
|:---|:---|:---|:---|
|platform|否|string| 平台|
|system|否|string| 操作系统|
|mobile|否|string| 设备|
```json
{
"code": 0,
"message": "ok",
"data": {
"is_live": 0
}
}
```
##后台查询所有配置设备黑名单
`GET http://api.live.bilibili.com/xlive/resource/v1/liveCheck/GetLiveCheckList`
### 请求参数
|参数名|必选|类型|描述|
|:---|:---|:---|:---|
```json
{
"code": 0,
"message": "ok",
"data": {
// android
"android": [
{
// os
"system": "",
// device
"mobile": [
""
]
}
],
// ios
"ios": [
{
// os
"system": "",
// device
"mobile": [
""
]
}
]
}
}
```
##后台添加能否直播设备黑名单
`GET http://api.live.bilibili.com/xlive/resource/v1/liveCheck/AddLiveCheck`
### 请求参数
|参数名|必选|类型|描述|
|:---|:---|:---|:---|
|live_check|否|string||
```json
{
"code": 0,
"message": "ok",
"data": {
}
}
```

View File

@@ -0,0 +1,216 @@
##Add 添加资源接口
`GET http://api.live.bilibili.com/xlive/resource/v1/resource/Add`
### 请求参数
|参数名|必选|类型|描述|
|:---|:---|:---|:---|
|platform|否|string||
|title|否|string||
|jumpPath|否|string||
|jumpTime|否|integer||
|type|否|string||
|device|否|string||
|startTime|否|string||
|endTime|否|string||
|imageUrl|否|string||
|jumpPathType|否|integer||
```json
{
"code": 0,
"message": "ok",
"data": {
"id": [
0
]
}
}
```
##Add 添加资源接口(不限制位置和平台)
`GET http://api.live.bilibili.com/xlive/resource/v1/resource/AddEx`
### 请求参数
|参数名|必选|类型|描述|
|:---|:---|:---|:---|
|platform|否|string||
|title|否|string||
|jumpPath|否|string||
|jumpTime|否|integer||
|type|否|string||
|device|否|string||
|startTime|否|string||
|endTime|否|string||
|imageUrl|否|string||
|jumpPathType|否|integer||
```json
{
"code": 0,
"message": "ok",
"data": {
"id": [
0
]
}
}
```
##Edit 编辑资源接口
`GET http://api.live.bilibili.com/xlive/resource/v1/resource/Edit`
### 请求参数
|参数名|必选|类型|描述|
|:---|:---|:---|:---|
|platform|否|string||
|id|否|integer||
|title|否|string||
|jumpPath|否|string||
|jumpTime|否|integer||
|startTime|否|string||
|endTime|否|string||
|imageUrl|否|string||
|jumpPathType|否|integer||
```json
{
"code": 0,
"message": "ok",
"data": {
}
}
```
##Offline 下线资源接口
`GET http://api.live.bilibili.com/xlive/resource/v1/resource/Offline`
### 请求参数
|参数名|必选|类型|描述|
|:---|:---|:---|:---|
|platform|否|string||
|id|否|integer||
```json
{
"code": 0,
"message": "ok",
"data": {
}
}
```
##GetList 获取资源列表
`GET http://api.live.bilibili.com/xlive/resource/v1/resource/GetList`
### 请求参数
|参数名|必选|类型|描述|
|:---|:---|:---|:---|
|platform|否|string||
|page|否|integer||
|pageSize|否|integer||
|type|否|string||
```json
{
"code": 0,
"message": "ok",
"data": {
"currentPage": 0,
"totalCount": 0,
"list": [
{
"id": 0,
"title": "",
"jumpPath": "",
"device_platform": "",
"device_build": 0,
"startTime": "",
"endTime": "",
"status": 0,
"device_limit": 0,
"imageUrl": "",
"jumpPathType": 0,
"jumpTime": 0
}
]
}
}
```
##获取平台列表
`GET http://api.live.bilibili.com/xlive/resource/v1/resource/GetPlatformList`
### 请求参数
|参数名|必选|类型|描述|
|:---|:---|:---|:---|
|type|否|integer||
```json
{
"code": 0,
"message": "ok",
"data": {
"platform": [
""
]
}
}
```
##GetListEx 获取资源列表
`GET http://api.live.bilibili.com/xlive/resource/v1/resource/GetListEx`
### 请求参数
|参数名|必选|类型|描述|
|:---|:---|:---|:---|
|platform|否|string||
|page|否|integer||
|pageSize|否|integer||
|type|否|多个string||
|device_platform|否|string||
|status|否|string||
|startTime|否|string||
|endTime|否|string||
```json
{
"code": 0,
"message": "ok",
"data": {
"currentPage": 0,
"totalCount": 0,
"list": [
{
"id": 0,
"title": "",
"jumpPath": "",
"device_platform": "",
"device_build": 0,
"startTime": "",
"endTime": "",
"status": 0,
"device_limit": 0,
"imageUrl": "",
"jumpPathType": 0,
"jumpTime": 0,
"type": ""
}
]
}
}
```

View File

@@ -0,0 +1,26 @@
##获取有效闪屏配置
`GET http://api.live.bilibili.com/xlive/resource/v1/splash/GetInfo`
### 请求参数
|参数名|必选|类型|描述|
|:---|:---|:---|:---|
|platform|否|string||
|build|否|integer||
```json
{
"code": 0,
"message": "ok",
"data": {
"id": 0,
"title": "",
"jumpPath": "",
"jumpTime": 0,
"jumpPathType": 0,
"imageUrl": ""
}
}
```

View File

@@ -0,0 +1,149 @@
// Code generated by protoc-gen-bm v0.1, DO NOT EDIT.
// source: api/http/v1/titans.proto
/*
Package v1 is a generated blademaster stub package.
This code was generated with go-common/app/tool/bmgen/protoc-gen-bm v0.1.
It is generated from these files:
api/http/v1/titans.proto
*/
package v1
import (
"context"
bm "go-common/library/net/http/blademaster"
"go-common/library/net/http/blademaster/binding"
)
// to suppressed 'imported but not used warning'
var _ *bm.Context
var _ context.Context
var _ binding.StructValidator
// ================
// Titans Interface
// ================
type Titans interface {
// 获取配置 请求参数逗号隔开的字符串 返回`internal:"true"`
GetMultiConfigs(ctx context.Context, req *MultiConfigReq) (resp *MultiConfigResp, err error)
// 获取服务级配置 `internal:"true"`
GetServiceConfig(ctx context.Context, req *ServiceConfigReq) (resp *ServiceConfigResp, err error)
// 插入服务配置 `method:"POST" internal:"true"`
SetServiceConfig(ctx context.Context, req *SetReq) (resp *SetResp, err error)
// 获取服务级配置 `internal:"true"`
GetServiceConfigList(ctx context.Context, req *ServiceListReq) (resp *ServiceListResp, err error)
// 获取已配置的discoveryId `internal:"true"`
GetTreeIds(ctx context.Context, req *TreeIdsReq) (resp *TreeIdsResp, err error)
// 获取运营数据列表 `internal:"true"`
GetEasyList(ctx context.Context, req *EasyGetReq) (resp *EasyGetResp, err error)
// 设置运营列表 `method:"POST" internal:"true"`
SetEasyList(ctx context.Context, req *EasySetReq) (resp *EasySetResp, err error)
}
var v1TitansSvc Titans
// @params MultiConfigReq
// @router GET /xlive/internal/resource/v1/titans/getMultiConfigs
// @response MultiConfigResp
func titansGetMultiConfigs(c *bm.Context) {
p := new(MultiConfigReq)
if err := c.BindWith(p, binding.Default(c.Request.Method, c.Request.Header.Get("Content-Type"))); err != nil {
return
}
resp, err := v1TitansSvc.GetMultiConfigs(c, p)
c.JSON(resp, err)
}
// @params ServiceConfigReq
// @router GET /xlive/internal/resource/v1/titans/getServiceConfig
// @response ServiceConfigResp
func titansGetServiceConfig(c *bm.Context) {
p := new(ServiceConfigReq)
if err := c.BindWith(p, binding.Default(c.Request.Method, c.Request.Header.Get("Content-Type"))); err != nil {
return
}
resp, err := v1TitansSvc.GetServiceConfig(c, p)
c.JSON(resp, err)
}
// @params SetReq
// @router POST /xlive/internal/resource/v1/titans/setServiceConfig
// @response SetResp
func titansSetServiceConfig(c *bm.Context) {
p := new(SetReq)
if err := c.BindWith(p, binding.Default(c.Request.Method, c.Request.Header.Get("Content-Type"))); err != nil {
return
}
resp, err := v1TitansSvc.SetServiceConfig(c, p)
c.JSON(resp, err)
}
// @params ServiceListReq
// @router GET /xlive/internal/resource/v1/titans/getServiceConfigList
// @response ServiceListResp
func titansGetServiceConfigList(c *bm.Context) {
p := new(ServiceListReq)
if err := c.BindWith(p, binding.Default(c.Request.Method, c.Request.Header.Get("Content-Type"))); err != nil {
return
}
resp, err := v1TitansSvc.GetServiceConfigList(c, p)
c.JSON(resp, err)
}
// @params TreeIdsReq
// @router GET /xlive/internal/resource/v1/titans/getTreeIds
// @response TreeIdsResp
func titansGetTreeIds(c *bm.Context) {
p := new(TreeIdsReq)
if err := c.BindWith(p, binding.Default(c.Request.Method, c.Request.Header.Get("Content-Type"))); err != nil {
return
}
resp, err := v1TitansSvc.GetTreeIds(c, p)
c.JSON(resp, err)
}
// @params EasyGetReq
// @router GET /xlive/internal/resource/v1/titans/getEasyList
// @response EasyGetResp
func titansGetEasyList(c *bm.Context) {
p := new(EasyGetReq)
if err := c.BindWith(p, binding.Default(c.Request.Method, c.Request.Header.Get("Content-Type"))); err != nil {
return
}
resp, err := v1TitansSvc.GetEasyList(c, p)
c.JSON(resp, err)
}
// @params EasySetReq
// @router POST /xlive/internal/resource/v1/titans/setEasyList
// @response EasySetResp
func titansSetEasyList(c *bm.Context) {
p := new(EasySetReq)
if err := c.BindWith(p, binding.Default(c.Request.Method, c.Request.Header.Get("Content-Type"))); err != nil {
return
}
resp, err := v1TitansSvc.SetEasyList(c, p)
c.JSON(resp, err)
}
// RegisterV1TitansService Register the blademaster route with middleware map
// midMap is the middleware map, the key is defined in proto
func RegisterV1TitansService(e *bm.Engine, svc Titans, midMap map[string]bm.HandlerFunc) {
v1TitansSvc = svc
e.GET("/xlive/internal/resource/v1/titans/getMultiConfigs", titansGetMultiConfigs)
e.GET("/xlive/internal/resource/v1/titans/getServiceConfig", titansGetServiceConfig)
e.POST("/xlive/internal/resource/v1/titans/setServiceConfig", titansSetServiceConfig)
e.GET("/xlive/internal/resource/v1/titans/getServiceConfigList", titansGetServiceConfigList)
e.GET("/xlive/internal/resource/v1/titans/getTreeIds", titansGetTreeIds)
e.GET("/xlive/internal/resource/v1/titans/getEasyList", titansGetEasyList)
e.POST("/xlive/internal/resource/v1/titans/setEasyList", titansSetEasyList)
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,159 @@
syntax = "proto3";
package live.resource.v1;
option go_package = "v1";
import "github.com/gogo/protobuf/gogoproto/gogo.proto";
service titans {
// 获取配置 请求参数逗号隔开的字符串 返回`internal:"true"`
rpc getMultiConfigs(MultiConfigReq) returns (MultiConfigResp);
// 获取服务级配置 `internal:"true"`
rpc getServiceConfig(ServiceConfigReq) returns (ServiceConfigResp);
//插入服务配置 `method:"POST" internal:"true"`
rpc setServiceConfig(SetReq) returns (SetResp);
// 获取服务级配置 `internal:"true"`
rpc getServiceConfigList(ServiceListReq) returns (ServiceListResp);
// 获取已配置的discoveryId `internal:"true"`
rpc getTreeIds(TreeIdsReq) returns (TreeIdsResp);
// 获取用户的应用树 `internal:"true"`
//rpc getMyTreeApps(TreeAppsReq) returns (TreeAppsResp);
// 获取运营数据列表 `internal:"true"`
rpc getEasyList(EasyGetReq) returns (EasyGetResp);
// 设置运营列表 `method:"POST" internal:"true"`
rpc setEasyList(EasySetReq) returns (EasySetResp);
}
message EasyGetReq{
int64 id = 1 [(gogoproto.moretags) = 'form:"id"'];
int64 page = 2 [(gogoproto.moretags) = 'form:"page"'];
}
message EasyGetResp{
repeated EasyList list = 1 [(gogoproto.jsontag) = "list"];
}
message EasyList{
string tree_name = 1 [(gogoproto.jsontag) = "tree_name"];
string tree_path = 2 [(gogoproto.jsontag) = "tree_path"];
int64 tree_id = 3 [(gogoproto.jsontag) = "tree_id"];
string keyword = 4 [(gogoproto.jsontag) = "keyword"];
string name = 5 [(gogoproto.jsontag) = "name"];
}
message EasySetReq{
int64 id = 1 [(gogoproto.moretags) = 'form:"id"'];
}
message EasySetResp{
int64 eId = 1 [(gogoproto.jsontag) = "eId"];
}
message TreeAppsReq{
string node = 1 [(gogoproto.moretags) = 'form:"node"'];
string team = 2 [(gogoproto.moretags) = 'form:"team"'];
}
message TreeAppsResp{
repeated Node list = 1 [(gogoproto.jsontag) = "list"];
}
message Node{
string name = 1 [(gogoproto.jsontag) = "name"];
string path = 2 [(gogoproto.jsontag) = "path"];
int64 tree_id = 3 [(gogoproto.jsontag) = "tree_id"];
}
message MultiConfigReq{
string values = 1 [(gogoproto.moretags) = 'form:"values"'];
}
message MultiConfigResp{
map<int64, mChild> list = 1 [(gogoproto.jsontag) = "list"];
}
message mChild {
map<string, string> keys = 1 [(gogoproto.jsontag) = "keys"];
}
message ServiceConfigReq {
int64 tree_id = 1 [(gogoproto.moretags) = 'form:"tree_id"'];
}
message ServiceConfigResp{
map<string, string> list = 1 [(gogoproto.jsontag) = "list"];
}
message SetReq {
string tree_name = 1 [(gogoproto.moretags) = 'form:"tree_name" required'];
string tree_path = 2 [(gogoproto.moretags) = 'form:"tree_path"'];
int64 tree_id = 3 [(gogoproto.moretags) = 'form:"tree_id" required'];
string service = 4 [(gogoproto.moretags) = 'form:"service"'];
string keyword = 5 [(gogoproto.moretags) = 'form:"keyword"'];
int64 template = 6 [(gogoproto.moretags) = 'form:"template"'];
string name = 7 [(gogoproto.moretags) = 'form:"name"'];
string value = 8 [(gogoproto.moretags) = 'form:"value"'];
int64 status = 9 [(gogoproto.moretags) = 'form:"status"'];
int64 id = 10 [(gogoproto.moretags) = 'form:"id"'];
}
message SetResp {
int64 id = 1 [(gogoproto.jsontag) = "id"];
}
message ServiceListReq{
string tree_name = 1 [(gogoproto.moretags) = 'form:"tree_name" required'];
int64 tree_id = 2 [(gogoproto.moretags) = 'form:"tree_id"'];
string service = 3 [(gogoproto.moretags) = 'form:"service"'];
string keyword = 4 [(gogoproto.moretags) = 'form:"keyword"'];
int64 page = 5 [(gogoproto.moretags) = 'form:"page"'];
int64 page_size = 6 [(gogoproto.moretags) = 'form:"page_size"'];
string name = 7 [(gogoproto.moretags) = 'form:"name"'];
int64 status = 8 [(gogoproto.moretags) = 'form:"status"'];
}
message ServiceListResp{
repeated mList list = 1 [(gogoproto.jsontag) = "list"];
int64 total_num = 2 [(gogoproto.jsontag) = "total_num"];
}
message mList {
//Id
int64 id = 1 [(gogoproto.jsontag) = "id"];
//tree_name
string tree_name = 2 [(gogoproto.jsontag) = "tree_name"];
string tree_path = 3 [(gogoproto.jsontag) = "tree_path"];
int64 tree_id = 4 [(gogoproto.jsontag) = "tree_id"];
string service = 5 [(gogoproto.jsontag) = "service"];
//索引名称
int64 template = 6 [(gogoproto.jsontag) = "template"];
string keyword = 7 [(gogoproto.jsontag) = "keyword"];
//配置值
string value = 8 [(gogoproto.jsontag) = "value"];
//配置解释
string name = 9 [(gogoproto.jsontag) = "name"];
//创建时间
string ctime = 10 [(gogoproto.jsontag) = "ctime"];
//最近更新时间
string mtime = 11 [(gogoproto.jsontag) = "mtime"];
//状态
int64 status = 12 [(gogoproto.jsontag) = "status"];
}
message TreeIdsReq {
string tree_name = 1 [(gogoproto.moretags) = 'form:"tree_name" required'];
}
message TreeIdsResp{
repeated int64 list = 1 [(gogoproto.jsontag) = "list"];
}

View File

@@ -0,0 +1,199 @@
##
`GET http://api.live.bilibili.com/xlive/internal/resource/v1/titans/getMultiConfigs`
### 请求参数
|参数名|必选|类型|描述|
|:---|:---|:---|:---|
|values|否|string||
```json
{
"code": 0,
"message": "ok",
"data": {
"list": {
"1": {
"keys": {
"mapKey": ""
}
}
}
}
}
```
##
`GET http://api.live.bilibili.com/xlive/internal/resource/v1/titans/getServiceConfig`
### 请求参数
|参数名|必选|类型|描述|
|:---|:---|:---|:---|
|tree_id|否|integer||
```json
{
"code": 0,
"message": "ok",
"data": {
"list": {
"mapKey": ""
}
}
}
```
##
`POST http://api.live.bilibili.com/xlive/internal/resource/v1/titans/setServiceConfig`
### 请求参数
|参数名|必选|类型|描述|
|:---|:---|:---|:---|
|tree_name|否|string||
|tree_path|否|string||
|tree_id|否|integer||
|service|否|string||
|keyword|否|string||
|template|否|integer||
|name|否|string||
|value|否|string||
|status|否|integer||
|id|否|integer||
```json
{
"code": 0,
"message": "ok",
"data": {
"id": 0
}
}
```
##
`GET http://api.live.bilibili.com/xlive/internal/resource/v1/titans/getServiceConfigList`
### 请求参数
|参数名|必选|类型|描述|
|:---|:---|:---|:---|
|tree_name|否|string||
|tree_id|否|integer||
|service|否|string||
|keyword|否|string||
|page|否|integer||
|page_size|否|integer||
|name|否|string||
|status|否|integer||
```json
{
"code": 0,
"message": "ok",
"data": {
"list": [
{
// Id
"id": 0,
// tree_name
"tree_name": "",
"tree_path": "",
"tree_id": 0,
"service": "",
// 索引名称
"template": 0,
"keyword": "",
// 配置值
"value": "",
// 配置解释
"name": "",
// 创建时间
"ctime": "",
// 最近更新时间
"mtime": "",
// 状态
"status": 0
}
],
"total_num": 0
}
}
```
##
`GET http://api.live.bilibili.com/xlive/internal/resource/v1/titans/getTreeIds`
### 请求参数
|参数名|必选|类型|描述|
|:---|:---|:---|:---|
|tree_name|否|string||
```json
{
"code": 0,
"message": "ok",
"data": {
"list": [
0
]
}
}
```
##
`GET http://api.live.bilibili.com/xlive/internal/resource/v1/titans/getEasyList`
### 请求参数
|参数名|必选|类型|描述|
|:---|:---|:---|:---|
|id|否|integer||
|page|否|integer||
```json
{
"code": 0,
"message": "ok",
"data": {
"list": [
{
"tree_name": "",
"tree_path": "",
"tree_id": 0,
"keyword": "",
"name": ""
}
]
}
}
```
##
`POST http://api.live.bilibili.com/xlive/internal/resource/v1/titans/setEasyList`
### 请求参数
|参数名|必选|类型|描述|
|:---|:---|:---|:---|
|id|否|integer||
```json
{
"code": 0,
"message": "ok",
"data": {
"eId": 0
}
}
```