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,67 @@
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",
)
go_library(
name = "go_default_library",
srcs = [
"api.bm.go",
"client.go",
"livecheck.bm.go",
"titans.bm.go",
],
embed = [":v1_go_proto"],
importpath = "go-common/app/service/live/resource/api/grpc/v1",
tags = ["automanaged"],
visibility = ["//visibility:public"],
deps = [
"//library/net/http/blademaster:go_default_library",
"//library/net/rpc/warden:go_default_library",
"@com_github_gogo_protobuf//gogoproto:go_default_library",
"@com_github_gogo_protobuf//proto:go_default_library",
"@org_golang_google_grpc//:go_default_library",
"@org_golang_x_net//context: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"],
)
proto_library(
name = "v1_proto",
srcs = [
"api.proto",
"livecheck.proto",
"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/grpc/v1",
proto = ":v1_proto",
tags = ["automanaged"],
deps = ["@com_github_gogo_protobuf//gogoproto:go_default_library"],
)

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,223 @@
// Code generated by protoc-gen-bm v0.1, DO NOT EDIT.
// source: api/grpc/v1/api.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/grpc/v1/api.proto
*/
package v1
import (
"context"
bm "go-common/library/net/http/blademaster"
)
// to suppressed 'imported but not used warning'
var _ *bm.Context
var _ context.Context
// ==================
// Resource Interface
// ==================
type Resource interface {
// Add 添加资源接口
Add(ctx context.Context, req *AddReq) (resp *AddResp, err error)
// Add 添加资源接口(不限制位置和平台)
AddEx(ctx context.Context, req *AddReq) (resp *AddResp, err error)
// Edit 编辑资源接口
Edit(ctx context.Context, req *EditReq) (resp *EditResp, err error)
// Offline 下线资源接口
Offline(ctx context.Context, req *OfflineReq) (resp *OfflineResp, err error)
// GetList 获取资源列表
GetList(ctx context.Context, req *GetListReq) (resp *GetListResp, err error)
// 获取平台列表
GetPlatformList(ctx context.Context, req *GetPlatformListReq) (resp *GetPlatformListResp, err error)
// GetListEx 获取资源列表
GetListEx(ctx context.Context, req *GetListExReq) (resp *GetListExResp, err error)
}
var v1ResourceSvc Resource
// @params AddReq
// @router GET /xlive/resource/v1/resource/Add
// @response AddResp
func resourceAdd(c *bm.Context) {
p := new(AddReq)
if err := c.Bind(p); err != nil {
return
}
resp, err := v1ResourceSvc.Add(c, p)
c.JSON(resp, err)
}
// @params AddReq
// @router GET /xlive/resource/v1/resource/AddEx
// @response AddResp
func resourceAddEx(c *bm.Context) {
p := new(AddReq)
if err := c.Bind(p); err != nil {
return
}
resp, err := v1ResourceSvc.AddEx(c, p)
c.JSON(resp, err)
}
// @params EditReq
// @router GET /xlive/resource/v1/resource/Edit
// @response EditResp
func resourceEdit(c *bm.Context) {
p := new(EditReq)
if err := c.Bind(p); err != nil {
return
}
resp, err := v1ResourceSvc.Edit(c, p)
c.JSON(resp, err)
}
// @params OfflineReq
// @router GET /xlive/resource/v1/resource/Offline
// @response OfflineResp
func resourceOffline(c *bm.Context) {
p := new(OfflineReq)
if err := c.Bind(p); err != nil {
return
}
resp, err := v1ResourceSvc.Offline(c, p)
c.JSON(resp, err)
}
// @params GetListReq
// @router GET /xlive/resource/v1/resource/GetList
// @response GetListResp
func resourceGetList(c *bm.Context) {
p := new(GetListReq)
if err := c.Bind(p); err != nil {
return
}
resp, err := v1ResourceSvc.GetList(c, p)
c.JSON(resp, err)
}
// @params GetPlatformListReq
// @router GET /xlive/resource/v1/resource/GetPlatformList
// @response GetPlatformListResp
func resourceGetPlatformList(c *bm.Context) {
p := new(GetPlatformListReq)
if err := c.Bind(p); err != nil {
return
}
resp, err := v1ResourceSvc.GetPlatformList(c, p)
c.JSON(resp, err)
}
// @params GetListExReq
// @router GET /xlive/resource/v1/resource/GetListEx
// @response GetListExResp
func resourceGetListEx(c *bm.Context) {
p := new(GetListExReq)
if err := c.Bind(p); err != nil {
return
}
resp, err := v1ResourceSvc.GetListEx(c, p)
c.JSON(resp, err)
}
// RegisterV1ResourceService Register the blademaster route with middleware map
// midMap is the middleware map, the key is defined in proto
func RegisterV1ResourceService(e *bm.Engine, svc Resource, midMap map[string]bm.HandlerFunc) {
v1ResourceSvc = svc
e.GET("/xlive/resource/v1/resource/Add", resourceAdd)
e.GET("/xlive/resource/v1/resource/AddEx", resourceAddEx)
e.GET("/xlive/resource/v1/resource/Edit", resourceEdit)
e.GET("/xlive/resource/v1/resource/Offline", resourceOffline)
e.GET("/xlive/resource/v1/resource/GetList", resourceGetList)
e.GET("/xlive/resource/v1/resource/GetPlatformList", resourceGetPlatformList)
e.GET("/xlive/resource/v1/resource/GetListEx", resourceGetListEx)
}
// ================
// Splash Interface
// ================
type Splash interface {
// 获取有效闪屏配置
GetInfo(ctx context.Context, req *GetInfoReq) (resp *GetInfoResp, err error)
}
var v1SplashSvc Splash
// @params GetInfoReq
// @router GET /xlive/resource/v1/splash/GetInfo
// @response GetInfoResp
func splashGetInfo(c *bm.Context) {
p := new(GetInfoReq)
if err := c.Bind(p); err != nil {
return
}
resp, err := v1SplashSvc.GetInfo(c, p)
c.JSON(resp, err)
}
// RegisterV1SplashService Register the blademaster route with middleware map
// midMap is the middleware map, the key is defined in proto
func RegisterV1SplashService(e *bm.Engine, svc Splash, midMap map[string]bm.HandlerFunc) {
v1SplashSvc = svc
e.GET("/xlive/resource/v1/splash/GetInfo", splashGetInfo)
}
// ================
// Banner Interface
// ================
type Banner interface {
// 获取有效banner配置
GetBlinkBanner(ctx context.Context, req *GetInfoReq) (resp *GetInfoResp, err error)
// 获取有效banner配置
GetBanner(ctx context.Context, req *GetBannerReq) (resp *GetBannerResp, err error)
}
var v1BannerSvc Banner
// @params GetInfoReq
// @router GET /xlive/resource/v1/banner/GetBlinkBanner
// @response GetInfoResp
func bannerGetBlinkBanner(c *bm.Context) {
p := new(GetInfoReq)
if err := c.Bind(p); err != nil {
return
}
resp, err := v1BannerSvc.GetBlinkBanner(c, p)
c.JSON(resp, err)
}
// @params GetBannerReq
// @router GET /xlive/resource/v1/banner/GetBanner
// @response GetBannerResp
func bannerGetBanner(c *bm.Context) {
p := new(GetBannerReq)
if err := c.Bind(p); err != nil {
return
}
resp, err := v1BannerSvc.GetBanner(c, p)
c.JSON(resp, err)
}
// RegisterV1BannerService Register the blademaster route with middleware map
// midMap is the middleware map, the key is defined in proto
func RegisterV1BannerService(e *bm.Engine, svc Banner, midMap map[string]bm.HandlerFunc) {
v1BannerSvc = svc
e.GET("/xlive/resource/v1/banner/GetBlinkBanner", bannerGetBlinkBanner)
e.GET("/xlive/resource/v1/banner/GetBanner", bannerGetBanner)
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,185 @@
syntax = "proto3";
package live.resource.v1;
option go_package = "v1";
import "github.com/gogo/protobuf/gogoproto/gogo.proto";
// addReq
message AddReq {
string platform = 1 [(gogoproto.moretags) = 'form:"platform" validate:"required"'];
string title = 2 [(gogoproto.moretags) = 'form:"title" validate:"required"'];
string jumpPath = 3 [(gogoproto.moretags) = 'form:"jumpPath"'];
int64 jumpTime = 4 [(gogoproto.moretags) = 'form:"jumpTime"'];
string type = 5 [(gogoproto.moretags) = 'form:"type" validate:"required"'];
string device = 6 [(gogoproto.moretags) = 'form:"device" validate:"required"'];
string startTime = 7 [(gogoproto.moretags) = 'form:"startTime" validate:"required"'];
string endTime = 8 [(gogoproto.moretags) = 'form:"endTime" validate:"required"'];
string imageUrl = 9 [(gogoproto.moretags) = 'form:"imageUrl" validate:"required"'];
int64 jumpPathType = 10 [(gogoproto.moretags) = 'form:"jumpPathType"'];
}
// addResp
message AddResp {
repeated int64 id = 1 [(gogoproto.jsontag) = "id"];
}
// editReq
message EditReq {
string platform = 1 [(gogoproto.moretags) = 'form:"platform" validate:"required"'];
int64 id = 2 [(gogoproto.moretags) = 'form:"id" validate:"required"'];
string title = 3 [(gogoproto.moretags) = 'form:"title"'];
string jumpPath = 4 [(gogoproto.moretags) = 'form:"jumpPath"'];
int64 jumpTime = 5 [(gogoproto.moretags) = 'form:"jumpTime"'];
string startTime = 7 [(gogoproto.moretags) = 'form:"startTime"'];
string endTime = 8 [(gogoproto.moretags) = 'form:"endTime"'];
string imageUrl = 9 [(gogoproto.moretags) = 'form:"imageUrl"'];
int64 jumpPathType = 10 [(gogoproto.moretags) = 'form:"jumpPathType"'];
}
// editResp
message EditResp {
}
//下线闪屏
message OfflineReq {
string platform = 1 [(gogoproto.moretags) = 'form:"platform" validate:"required"'];
int64 id = 2 [(gogoproto.moretags) = 'form:"id" validate:"required"'];
}
message OfflineResp {
}
//获取闪屏配置列表
message GetListReq {
string platform = 1 [(gogoproto.moretags) = 'form:"platform" validate:"required"'];
int64 page = 2 [(gogoproto.moretags) = 'form:"page"'];
int64 pageSize = 3 [(gogoproto.moretags) = 'form:"pageSize"'];
string type = 4 [(gogoproto.moretags) = 'form:"type" validate:"required"'];
}
message GetListResp {
int64 currentPage = 1 [(gogoproto.jsontag) = "currentPage"];
int64 totalCount = 2 [(gogoproto.jsontag) = "totalCount"];
repeated List list = 3 [(gogoproto.jsontag) = "list"];
message List {
int64 id = 1 [(gogoproto.jsontag) = "id"];
string title = 2 [(gogoproto.jsontag) = "title"];
string jumpPath = 3 [(gogoproto.jsontag) = "jumpPath"];
string device_platform = 4 [(gogoproto.jsontag) = "device_platform"];
int64 device_build = 5 [(gogoproto.jsontag) = "device_build"];
string startTime = 6 [(gogoproto.jsontag) = "startTime"];
string endTime = 7 [(gogoproto.jsontag) = "endTime"];
int64 status = 8 [(gogoproto.jsontag) = "status"];
int64 device_limit =9 [(gogoproto.jsontag) = "device_limit"];
string imageUrl = 10 [(gogoproto.jsontag) = "imageUrl"];
int64 jumpPathType = 11 [(gogoproto.jsontag) = "jumpPathType"];
int64 jumpTime = 12 [(gogoproto.jsontag) = "jumpTime"];
}
}
// 获取当前有效闪屏配置(客户端)
message GetInfoReq {
string platform = 1 [(gogoproto.moretags) = 'form:"platform" validate:"required"'];
int64 build = 2 [(gogoproto.moretags) = 'form:"build" validate:"required"'];
}
message GetInfoResp {
int64 id = 1 [(gogoproto.jsontag) = "id"];
string title = 2 [(gogoproto.jsontag) = "title"];
string jumpPath = 3 [(gogoproto.jsontag) = "jumpPath"];
int64 jumpTime = 4 [(gogoproto.jsontag) = "jumpTime"];
int64 jumpPathType = 5 [(gogoproto.jsontag) = "jumpPathType"];
string imageUrl = 6 [(gogoproto.jsontag) = "imageUrl"];
}
// 获取当前有效banner配置(客户端)
message GetBlinkBannerReq {
string platform = 1 [(gogoproto.moretags) = 'form:"platform" validate:"required"'];
int64 build = 2 [(gogoproto.moretags) = 'form:"build" validate:"required"'];
}
message GetBlinkBannerResp {
int64 id = 1 [(gogoproto.jsontag) = "id"];
string title = 2 [(gogoproto.jsontag) = "title"];
string jumpPath = 3 [(gogoproto.jsontag) = "jumpPath"];
int64 jumpTime = 4 [(gogoproto.jsontag) = "jumpTime"];
int64 jumpPathType = 5 [(gogoproto.jsontag) = "jumpPathType"];
string imageUrl = 6 [(gogoproto.jsontag) = "imageUrl"];
}
// 获取banner配置(客户端)
message GetBannerReq {
string platform = 1 [(gogoproto.moretags) = 'form:"platform" validate:"required"'];
int64 build = 2 [(gogoproto.moretags) = 'form:"build" validate:"required"'];
string type = 3 [(gogoproto.moretags) = 'form:"type" validate:"required"'];
}
message GetBannerResp {
repeated List list = 1 [(gogoproto.jsontag) = "list"];
message List {
int64 id = 1 [(gogoproto.jsontag) = "id"];
string title = 2 [(gogoproto.jsontag) = "title"];
string jumpPath = 3 [(gogoproto.jsontag) = "jumpPath"];
int64 jumpTime = 4 [(gogoproto.jsontag) = "jumpTime"];
int64 jumpPathType = 5 [(gogoproto.jsontag) = "jumpPathType"];
string imageUrl = 6 [(gogoproto.jsontag) = "imageUrl"];
}
}
message GetPlatformListReq {
int64 type=1 [(gogoproto.jsontag) = "type"];
}
message GetPlatformListResp {
repeated string platform =1 [(gogoproto.jsontag) = "platform"];
}
message GetListExReq {
string platform = 1 [(gogoproto.moretags) = 'form:"platform" validate:"required"'];
int64 page = 2 [(gogoproto.moretags) = 'form:"page"'];
int64 pageSize = 3 [(gogoproto.moretags) = 'form:"pageSize"'];
repeated string type = 4 [(gogoproto.moretags) = 'form:"type" validate:"required"'];
string device_platform = 5 [(gogoproto.moretags) = 'form:"device_platform"'];
string status = 6 [(gogoproto.moretags) = 'form:"status"'];
string startTime = 7 [(gogoproto.moretags) = 'form:"startTime"'];
string endTime = 8 [(gogoproto.moretags) = 'form:"endTime"'];
}
message GetListExResp {
int64 currentPage = 1 [(gogoproto.jsontag) = "currentPage"];
int64 totalCount = 2 [(gogoproto.jsontag) = "totalCount"];
repeated List list = 3 [(gogoproto.jsontag) = "list"];
message List {
int64 id = 1 [(gogoproto.jsontag) = "id"];
string title = 2 [(gogoproto.jsontag) = "title"];
string jumpPath = 3 [(gogoproto.jsontag) = "jumpPath"];
string device_platform = 4 [(gogoproto.jsontag) = "device_platform"];
int64 device_build = 5 [(gogoproto.jsontag) = "device_build"];
string startTime = 6 [(gogoproto.jsontag) = "startTime"];
string endTime = 7 [(gogoproto.jsontag) = "endTime"];
int64 status = 8 [(gogoproto.jsontag) = "status"];
int64 device_limit =9 [(gogoproto.jsontag) = "device_limit"];
string imageUrl = 10 [(gogoproto.jsontag) = "imageUrl"];
int64 jumpPathType = 11 [(gogoproto.jsontag) = "jumpPathType"];
int64 jumpTime = 12 [(gogoproto.jsontag) = "jumpTime"];
string type = 13 [(gogoproto.jsontag) = "type"];
}
}
service Resource {
//Add 添加资源接口
rpc Add(AddReq) returns (AddResp);
//Add 添加资源接口(不限制位置和平台)
rpc AddEx(AddReq) returns (AddResp);
//Edit 编辑资源接口
rpc Edit(EditReq) returns (EditResp);
//Offline 下线资源接口
rpc Offline(OfflineReq) returns (OfflineResp);
//GetList 获取资源列表
rpc GetList(GetListReq) returns (GetListResp);
//获取平台列表
rpc GetPlatformList(GetPlatformListReq) returns (GetPlatformListResp);
//GetListEx 获取资源列表
rpc GetListEx(GetListExReq) returns (GetListExResp);
}
service Splash {
//获取有效闪屏配置
rpc GetInfo(GetInfoReq) returns (GetInfoResp);
}
service Banner {
//获取有效banner配置
rpc GetBlinkBanner(GetInfoReq) returns (GetInfoResp);
//获取有效banner配置
rpc GetBanner(GetBannerReq) returns (GetBannerResp);
}

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,35 @@
package v1
import (
"context"
"google.golang.org/grpc"
"go-common/library/net/rpc/warden"
)
const AppID = "live.resource"
type Client struct {
ResourceClient
SplashClient
BannerClient
LiveCheckClient
TitansClient
}
// NewClient new resource grpc client
func NewClient(cfg *warden.ClientConfig, opts ...grpc.DialOption) (*Client, error) {
client := warden.NewClient(cfg, opts...)
conn, err := client.Dial(context.Background(), "discovery://default/"+AppID)
if err != nil {
return nil, err
}
cli := &Client{}
cli.ResourceClient = NewResourceClient(conn)
cli.SplashClient = NewSplashClient(conn)
cli.BannerClient = NewBannerClient(conn)
cli.LiveCheckClient = NewLiveCheckClient(conn)
cli.TitansClient = NewTitansClient(conn)
return cli, nil
}

View File

@@ -0,0 +1,83 @@
// Code generated by protoc-gen-bm v0.1, DO NOT EDIT.
// source: api/grpc/v1/livecheck.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/grpc/v1/livecheck.proto
*/
package v1
import (
"context"
bm "go-common/library/net/http/blademaster"
)
// to suppressed 'imported but not used warning'
var _ *bm.Context
var _ context.Context
// ===================
// LiveCheck Interface
// ===================
type LiveCheck interface {
// 客户端获取能否直播接口
LiveCheck(ctx context.Context, req *LiveCheckReq) (resp *LiveCheckResp, err error)
// 后台查询所有配置设备黑名单
GetLiveCheckList(ctx context.Context, req *GetLiveCheckListReq) (resp *GetLiveCheckListResp, err error)
// 后台添加能否直播设备黑名单
AddLiveCheck(ctx context.Context, req *AddLiveCheckReq) (resp *AddLiveCheckResp, err error)
}
var v1LiveCheckSvc LiveCheck
// @params LiveCheckReq
// @router GET /xlive/resource/v1/liveCheck/LiveCheck
// @response LiveCheckResp
func liveCheckLiveCheck(c *bm.Context) {
p := new(LiveCheckReq)
if err := c.Bind(p); err != nil {
return
}
resp, err := v1LiveCheckSvc.LiveCheck(c, p)
c.JSON(resp, err)
}
// @params GetLiveCheckListReq
// @router GET /xlive/resource/v1/liveCheck/GetLiveCheckList
// @response GetLiveCheckListResp
func liveCheckGetLiveCheckList(c *bm.Context) {
p := new(GetLiveCheckListReq)
if err := c.Bind(p); err != nil {
return
}
resp, err := v1LiveCheckSvc.GetLiveCheckList(c, p)
c.JSON(resp, err)
}
// @params AddLiveCheckReq
// @router GET /xlive/resource/v1/liveCheck/AddLiveCheck
// @response AddLiveCheckResp
func liveCheckAddLiveCheck(c *bm.Context) {
p := new(AddLiveCheckReq)
if err := c.Bind(p); err != nil {
return
}
resp, err := v1LiveCheckSvc.AddLiveCheck(c, p)
c.JSON(resp, err)
}
// RegisterV1LiveCheckService Register the blademaster route with middleware map
// midMap is the middleware map, the key is defined in proto
func RegisterV1LiveCheckService(e *bm.Engine, svc LiveCheck, midMap map[string]bm.HandlerFunc) {
v1LiveCheckSvc = svc
e.GET("/xlive/resource/v1/liveCheck/LiveCheck", liveCheckLiveCheck)
e.GET("/xlive/resource/v1/liveCheck/GetLiveCheckList", liveCheckGetLiveCheckList)
e.GET("/xlive/resource/v1/liveCheck/AddLiveCheck", liveCheckAddLiveCheck)
}

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": {
}
}
```

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,54 @@
syntax = "proto3";
package live.resource.v1;
option go_package = "v1";
import "github.com/gogo/protobuf/gogoproto/gogo.proto";
//LiveCheck 移动端请求接口
message LiveCheckReq {
// 平台
string platform = 1 [(gogoproto.moretags) = 'form:"platform" validate:"required"'];
// 操作系统
string system = 2 [(gogoproto.moretags) = 'form:"system" validate:"required"'];
// 设备
string mobile = 3 [(gogoproto.moretags) = 'form:"mobile" validate:"required"'];
}
message LiveCheckResp {
int64 is_live = 1 [(gogoproto.jsontag) = "is_live"];
}
//提供给后台查询开播设备黑名单
message GetLiveCheckListReq {
}
message GetLiveCheckListResp {
// android
repeated Platform android = 1 [(gogoproto.jsontag) = "android"];
// ios
repeated Platform ios = 2 [(gogoproto.jsontag) = "ios"];
message Platform {
// os
string system = 1 [(gogoproto.jsontag) = "system"];
// device
repeated string mobile = 2 [(gogoproto.jsontag) = "mobile"];
}
}
//提供给后台新增live_check添加黑名单
message AddLiveCheckReq {
string live_check = 1 [(gogoproto.moretags) = 'form:"live_check" validate:"required"'];
}
message AddLiveCheckResp {
}
service LiveCheck {
//客户端获取能否直播接口
rpc LiveCheck (LiveCheckReq) returns (LiveCheckResp);
//后台查询所有配置设备黑名单
rpc GetLiveCheckList (GetLiveCheckListReq) returns (GetLiveCheckListResp);
//后台添加能否直播设备黑名单
rpc AddLiveCheck (AddLiveCheckReq) returns (AddLiveCheckResp);
}

View File

@@ -0,0 +1,115 @@
// Code generated by protoc-gen-bm v0.1, DO NOT EDIT.
// source: api/grpc/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/grpc/v1/titans.proto
*/
package v1
import (
"context"
bm "go-common/library/net/http/blademaster"
)
// to suppressed 'imported but not used warning'
var _ *bm.Context
var _ context.Context
// ================
// Titans Interface
// ================
type Titans interface {
// 获取team下某个keyword的配置 `internal:"true"`
GetConfigByKeyword(ctx context.Context, req *GetConfigReq) (resp *GetConfigResp, err error)
// 设置team下某个keyword配置 `internal:"true"`
SetConfigByKeyword(ctx context.Context, req *SetConfigReq) (resp *SetConfigResp, err error)
// 管理后台根据条件获取配置 `internal:"true"`
GetConfigsByParams(ctx context.Context, req *ParamsConfigReq) (resp *ParamsConfigResp, err error)
// 获取discover_id对应的全部配置 `internal:"true"`
GetByTreeId(ctx context.Context, req *TreeIdReq) (resp *TreeIdResp, err error)
// 获取多个team或索引的的全部配置 `internal:"true"`
GetConfigsByLikes(ctx context.Context, req *LikesConfigReq) (resp *LikesConfigResp, err error)
}
var v1TitansSvc Titans
// @params GetConfigReq
// @router GET /xlive/internal/resource/v1/titans/get_config_by_keyword
// @response GetConfigResp
func titansGetConfigByKeyword(c *bm.Context) {
p := new(GetConfigReq)
if err := c.Bind(p); err != nil {
return
}
resp, err := v1TitansSvc.GetConfigByKeyword(c, p)
c.JSON(resp, err)
}
// @params SetConfigReq
// @router GET /xlive/internal/resource/v1/titans/set_config_by_keyword
// @response SetConfigResp
func titansSetConfigByKeyword(c *bm.Context) {
p := new(SetConfigReq)
if err := c.Bind(p); err != nil {
return
}
resp, err := v1TitansSvc.SetConfigByKeyword(c, p)
c.JSON(resp, err)
}
// @params ParamsConfigReq
// @router GET /xlive/internal/resource/v1/titans/get_configs_by_params
// @response ParamsConfigResp
func titansGetConfigsByParams(c *bm.Context) {
p := new(ParamsConfigReq)
if err := c.Bind(p); err != nil {
return
}
resp, err := v1TitansSvc.GetConfigsByParams(c, p)
c.JSON(resp, err)
}
// @params TreeIdReq
// @router GET /xlive/internal/resource/v1/titans/getByTreeId
// @response TreeIdResp
func titansGetByTreeId(c *bm.Context) {
p := new(TreeIdReq)
if err := c.Bind(p); err != nil {
return
}
resp, err := v1TitansSvc.GetByTreeId(c, p)
c.JSON(resp, err)
}
// @params LikesConfigReq
// @router GET /xlive/internal/resource/v1/titans/get_configs_by_likes
// @response LikesConfigResp
func titansGetConfigsByLikes(c *bm.Context) {
p := new(LikesConfigReq)
if err := c.Bind(p); err != nil {
return
}
resp, err := v1TitansSvc.GetConfigsByLikes(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/get_config_by_keyword", titansGetConfigByKeyword)
e.GET("/xlive/internal/resource/v1/titans/set_config_by_keyword", titansSetConfigByKeyword)
e.GET("/xlive/internal/resource/v1/titans/get_configs_by_params", titansGetConfigsByParams)
e.GET("/xlive/internal/resource/v1/titans/getByTreeId", titansGetByTreeId)
e.GET("/xlive/internal/resource/v1/titans/get_configs_by_likes", titansGetConfigsByLikes)
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,131 @@
syntax = "proto3";
package live.resource.v1;
option go_package = "v1";
import "github.com/gogo/protobuf/gogoproto/gogo.proto";
service titans {
//获取team下某个keyword的配置 `internal:"true"`
rpc get_config_by_keyword(GetConfigReq) returns (GetConfigResp);
//设置team下某个keyword配置 `internal:"true"`
rpc set_config_by_keyword(SetConfigReq) returns (SetConfigResp);
//管理后台根据条件获取配置 `internal:"true"`
rpc get_configs_by_params(ParamsConfigReq) returns (ParamsConfigResp);
//获取discover_id对应的全部配置 `internal:"true"`
rpc getByTreeId(TreeIdReq) returns (TreeIdResp);
//获取多个team或索引的的全部配置 `internal:"true"`
rpc get_configs_by_likes(LikesConfigReq) returns (LikesConfigResp);
}
message GetConfigReq {
//team
int64 team = 1 [(gogoproto.moretags) = 'form:"team"'];
//索引名称
string keyword = 2 [(gogoproto.moretags) = 'form:"keyword"'];
//id
int64 id = 3 [(gogoproto.moretags) = 'form:"id"'];
}
message GetConfigResp {
//team
int64 team = 1 [(gogoproto.jsontag) = "team"];
//索引名称
string keyword = 2 [(gogoproto.jsontag) = "keyword"];
//配置值
string value = 3 [(gogoproto.jsontag) = "value"];
//配置解释
string name = 4 [(gogoproto.jsontag) = "name"];
//创建时间
string ctime = 5 [(gogoproto.jsontag) = "ctime"];
//最近更新时间
string mtime = 6 [(gogoproto.jsontag) = "mtime"];
//状态
int64 status = 7 [(gogoproto.jsontag) = "status"];
//状态
int64 id = 8 [(gogoproto.jsontag) = "id"];
}
message SetConfigReq {
//team
int64 team = 1 [(gogoproto.moretags) = 'form:"team"'];
//索引名称
string keyword = 2 [(gogoproto.moretags) = 'form:"keyword" validate:"required"'];
//配置值
string value = 3 [(gogoproto.moretags) = 'form:"value" validate:"required"'];
//配置解释
string name = 4 [(gogoproto.moretags) = 'form:"name"'];
//编辑时id
int64 id = 5 [(gogoproto.moretags) = 'form:"id"'];
//记录状态 新增时默认为0
int64 status = 6 [(gogoproto.moretags) = 'form:"status"'];
}
message SetConfigResp {
int64 id = 1 [(gogoproto.jsontag) = "id"];
}
message ParamsConfigReq{
int64 team = 1 [(gogoproto.moretags) = 'form:"team"'];
string keyword = 2 [(gogoproto.moretags) = 'form:"keyword"'];
string name = 3 [(gogoproto.moretags) = 'form:"name"'];
int64 status = 4 [(gogoproto.moretags) = 'form:"status"'];
int64 page = 5 [(gogoproto.moretags) = 'form:"page" validate:"required"'];
//页量
int64 page_size = 6 [(gogoproto.moretags) = 'form:"page_size" validate:"required"'];
//id
int64 id = 7 [(gogoproto.moretags) = 'form:"id"'];
}
message ParamsConfigResp{
//数据列表
repeated List list = 1 [(gogoproto.jsontag) = "list"];
//记录总数
int64 total_num = 2 [(gogoproto.jsontag) = "total_num"];
}
message List {
//Id
int64 id = 1 [(gogoproto.jsontag) = "id"];
//team
int64 team = 2 [(gogoproto.jsontag) = "team"];
//索引名称
string keyword = 3 [(gogoproto.jsontag) = "keyword"];
//配置值
string value = 4 [(gogoproto.jsontag) = "value"];
//配置解释
string name = 5 [(gogoproto.jsontag) = "name"];
//创建时间
string ctime = 6 [(gogoproto.jsontag) = "ctime"];
//最近更新时间
string mtime = 7 [(gogoproto.jsontag) = "mtime"];
//状态
int64 status = 8 [(gogoproto.jsontag) = "status"];
}
message LikesConfigReq{
repeated string params = 1 [(gogoproto.moretags) = 'form:"params" validate:"required"'];
}
message LikesConfigResp{
map<int64, Child> list = 1 [(gogoproto.jsontag) = "list"];
}
message Child {
map<string, string> keys = 1 [(gogoproto.jsontag) = "keys"];
}
message TreeIdReq{
int64 tree_id = 1 [(gogoproto.moretags) = 'form:"tree_id" validate:"required"'];
}
message TreeIdResp{
map<string, string> list = 1 [(gogoproto.jsontag) = "list"];
}

View File

@@ -0,0 +1,158 @@
##
`GET http://api.live.bilibili.com/xlive/internal/resource/v1/titans/get_config_by_keyword`
### 请求参数
|参数名|必选|类型|描述|
|:---|:---|:---|:---|
|team|否|integer|team|
|keyword|否|string|索引名称|
|id|否|integer|id|
```json
{
"code": 0,
"message": "ok",
"data": {
// team
"team": 0,
// 索引名称
"keyword": "",
// 配置值
"value": "",
// 配置解释
"name": "",
// 创建时间
"ctime": "",
// 最近更新时间
"mtime": "",
// 状态
"status": 0,
// 状态
"id": 0
}
}
```
##
`GET http://api.live.bilibili.com/xlive/internal/resource/v1/titans/set_config_by_keyword`
### 请求参数
|参数名|必选|类型|描述|
|:---|:---|:---|:---|
|team|否|integer|team|
|keyword|是|string|索引名称|
|value|是|string|配置值|
|name|否|string|配置解释|
|id|否|integer|编辑时id|
|status|否|integer|记录状态 新增时默认为0|
```json
{
"code": 0,
"message": "ok",
"data": {
"id": 0
}
}
```
##
`GET http://api.live.bilibili.com/xlive/internal/resource/v1/titans/get_configs_by_params`
### 请求参数
|参数名|必选|类型|描述|
|:---|:---|:---|:---|
|team|否|integer||
|keyword|否|string||
|name|否|string||
|status|否|integer||
|page|是|integer||
|page_size|是|integer|页量|
|id|否|integer|id|
```json
{
"code": 0,
"message": "ok",
"data": {
// 数据列表
"list": [
{
// Id
"id": 0,
// team
"team": 0,
// 索引名称
"keyword": "",
// 配置值
"value": "",
// 配置解释
"name": "",
// 创建时间
"ctime": "",
// 最近更新时间
"mtime": "",
// 状态
"status": 0
}
],
// 记录总数
"total_num": 0
}
}
```
##
`GET http://api.live.bilibili.com/xlive/internal/resource/v1/titans/getByTreeId`
### 请求参数
|参数名|必选|类型|描述|
|:---|:---|:---|:---|
|tree_id|是|integer||
```json
{
"code": 0,
"message": "ok",
"data": {
"list": {
"mapKey": ""
}
}
}
```
##
`GET http://api.live.bilibili.com/xlive/internal/resource/v1/titans/get_configs_by_likes`
### 请求参数
|参数名|必选|类型|描述|
|:---|:---|:---|:---|
|params|是|多个string||
```json
{
"code": 0,
"message": "ok",
"data": {
"list": {
"1": {
"keys": {
"mapKey": ""
}
}
}
}
}
```

View File

@@ -0,0 +1,61 @@
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 = "v2_proto",
srcs = ["user_resource.proto"],
tags = ["automanaged"],
deps = ["@gogo_special_proto//github.com/gogo/protobuf/gogoproto"],
)
go_proto_library(
name = "v2_go_proto",
compilers = ["@io_bazel_rules_go//proto:gogofast_grpc"],
importpath = "go-common/app/service/live/resource/api/grpc/v2",
proto = ":v2_proto",
tags = ["automanaged"],
deps = ["@com_github_gogo_protobuf//gogoproto:go_default_library"],
)
go_library(
name = "go_default_library",
srcs = [
"client.go",
"user_resource.bm.go",
],
embed = [":v2_go_proto"],
importpath = "go-common/app/service/live/resource/api/grpc/v2",
tags = ["automanaged"],
visibility = ["//visibility:public"],
deps = [
"//library/net/http/blademaster:go_default_library",
"//library/net/rpc/warden:go_default_library",
"@com_github_gogo_protobuf//gogoproto:go_default_library",
"@com_github_gogo_protobuf//proto:go_default_library",
"@org_golang_google_grpc//:go_default_library",
"@org_golang_x_net//context: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,29 @@
package v2
import (
"context"
"google.golang.org/grpc"
"go-common/library/net/rpc/warden"
)
// AppID 应用程序标识
const AppID = "live.resource"
// Client 对外服务接口
type Client struct {
UserResourceClient
}
// NewClient 用户资源 grpc Client
func NewClient(cfg *warden.ClientConfig, opts ...grpc.DialOption) (*Client, error) {
client := warden.NewClient(cfg, opts...)
conn, err := client.Dial(context.Background(), "discovery://default/"+AppID)
if err != nil {
return nil, err
}
cli := &Client{}
cli.UserResourceClient = NewUserResourceClient(conn)
return cli, nil
}

View File

@@ -0,0 +1,115 @@
// Code generated by protoc-gen-bm v0.1, DO NOT EDIT.
// source: api/grpc/v2/user_resource.proto
/*
Package v2 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/grpc/v2/user_resource.proto
*/
package v2
import (
"context"
bm "go-common/library/net/http/blademaster"
)
// to suppressed 'imported but not used warning'
var _ *bm.Context
var _ context.Context
// ======================
// UserResource Interface
// ======================
type UserResource interface {
// Add 添加资源接口
Add(ctx context.Context, req *AddReq) (resp *AddResp, err error)
// Edit 编辑现有资源
Edit(ctx context.Context, req *EditReq) (resp *EditResp, err error)
// Query 请求单个资源
Query(ctx context.Context, req *QueryReq) (resp *QueryResp, err error)
// List 获取资源列表
List(ctx context.Context, req *ListReq) (resp *ListResp, err error)
// SetStatus 更改资源状态
SetStatus(ctx context.Context, req *SetStatusReq) (resp *SetStatusResp, err error)
}
var v2UserResourceSvc UserResource
// @params AddReq
// @router GET /xlive/resource/v2/userResource/Add
// @response AddResp
func userResourceAdd(c *bm.Context) {
p := new(AddReq)
if err := c.Bind(p); err != nil {
return
}
resp, err := v2UserResourceSvc.Add(c, p)
c.JSON(resp, err)
}
// @params EditReq
// @router GET /xlive/resource/v2/userResource/Edit
// @response EditResp
func userResourceEdit(c *bm.Context) {
p := new(EditReq)
if err := c.Bind(p); err != nil {
return
}
resp, err := v2UserResourceSvc.Edit(c, p)
c.JSON(resp, err)
}
// @params QueryReq
// @router GET /xlive/resource/v2/userResource/Query
// @response QueryResp
func userResourceQuery(c *bm.Context) {
p := new(QueryReq)
if err := c.Bind(p); err != nil {
return
}
resp, err := v2UserResourceSvc.Query(c, p)
c.JSON(resp, err)
}
// @params ListReq
// @router GET /xlive/resource/v2/userResource/List
// @response ListResp
func userResourceList(c *bm.Context) {
p := new(ListReq)
if err := c.Bind(p); err != nil {
return
}
resp, err := v2UserResourceSvc.List(c, p)
c.JSON(resp, err)
}
// @params SetStatusReq
// @router GET /xlive/resource/v2/userResource/SetStatus
// @response SetStatusResp
func userResourceSetStatus(c *bm.Context) {
p := new(SetStatusReq)
if err := c.Bind(p); err != nil {
return
}
resp, err := v2UserResourceSvc.SetStatus(c, p)
c.JSON(resp, err)
}
// RegisterV2UserResourceService Register the blademaster route with middleware map
// midMap is the middleware map, the key is defined in proto
func RegisterV2UserResourceService(e *bm.Engine, svc UserResource, midMap map[string]bm.HandlerFunc) {
v2UserResourceSvc = svc
e.GET("/xlive/resource/v2/userResource/Add", userResourceAdd)
e.GET("/xlive/resource/v2/userResource/Edit", userResourceEdit)
e.GET("/xlive/resource/v2/userResource/Query", userResourceQuery)
e.GET("/xlive/resource/v2/userResource/List", userResourceList)
e.GET("/xlive/resource/v2/userResource/SetStatus", userResourceSetStatus)
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,184 @@
syntax = "proto3";
package live.resource.v2;
option go_package = "v2";
import "github.com/gogo/protobuf/gogoproto/gogo.proto";
// 请求创建资源
message AddReq {
//资源类型
int32 res_type = 1 [(gogoproto.moretags) = 'form:"res_type" validate:"required"'];
//名称
string title = 2 [(gogoproto.moretags) = 'form:"title" validate:"required"'];
//URL
string url = 3 [(gogoproto.moretags) = 'form:"url" validate:"required"'];
//权重
int32 weight = 4 [(gogoproto.moretags) = 'form:"weight" validate:"required"'];
//创建人
string creator = 5 [(gogoproto.moretags) = 'form:"creator" validate:"required"'];
}
// 返回创建结果
message AddResp {
//ID
int32 id = 1 [(gogoproto.jsontag) = "id"];
//资源类型
int32 res_type = 2 [(gogoproto.jsontag) = "res_type"];
//资源ID
int32 custom_id = 3 [(gogoproto.jsontag) = "custom_id"];
//名称
string title = 4 [(gogoproto.jsontag) = "title"];
//URL
string url = 5 [(gogoproto.jsontag) = "url"];
//权重
int32 weight = 6 [(gogoproto.jsontag) = "weight"];
//创建人
string creator = 7 [(gogoproto.jsontag) = "creator"];
//"状态1.上线中2.下线"
int32 status = 8 [(gogoproto.jsontag) = "status"];
//创建时刻
string ctime = 9 [(gogoproto.jsontag) = "ctime"];
//修改时刻
string mtime = 10 [(gogoproto.jsontag) = "mtime"];
}
// 请求编辑资源
message EditReq {
//资源类型
int32 res_type = 1 [(gogoproto.moretags) = 'form:"res_type" validate:"required"'];
//资源ID
int32 custom_id = 2 [(gogoproto.moretags) = 'form:"custom_id" validate:"required"'];
//名称
string title = 3 [(gogoproto.moretags) = 'form:"title"'];
//URL
string url = 4 [(gogoproto.moretags) = 'form:"url"'];
//权重
int32 weight = 5 [(gogoproto.moretags) = 'form:"weight"'];
}
// 返回编辑结果
message EditResp {
//ID
int32 id = 1 [(gogoproto.jsontag) = "id"];
//资源类型
int32 res_type = 2 [(gogoproto.jsontag) = "res_type"];
//资源ID
int32 custom_id = 3 [(gogoproto.jsontag) = "custom_id"];
//名称
string title = 4 [(gogoproto.jsontag) = "title"];
//URL
string url = 5 [(gogoproto.jsontag) = "url"];
//权重
int32 weight = 6 [(gogoproto.jsontag) = "weight"];
//创建人
string creator = 7 [(gogoproto.jsontag) = "creator"];
//"状态1.上线中2.下线"
int32 status = 8 [(gogoproto.jsontag) = "status"];
//创建时刻
string ctime = 9 [(gogoproto.jsontag) = "ctime"];
//修改时刻
string mtime = 10 [(gogoproto.jsontag) = "mtime"];
}
// 请求单个资源
message QueryReq {
//资源类型
int32 res_type = 1 [(gogoproto.moretags) = 'form:"res_type" validate:"required"'];
//资源ID
int32 custom_id = 2 [(gogoproto.moretags) = 'form:"custom_id" validate:"required"'];
}
// 返回单个资源
message QueryResp {
//ID
int32 id = 1 [(gogoproto.jsontag) = "id"];
//资源类型
int32 res_type = 2 [(gogoproto.jsontag) = "res_type"];
//资源ID
int32 custom_id = 3 [(gogoproto.jsontag) = "custom_id"];
//名称
string title = 4 [(gogoproto.jsontag) = "title"];
//URL
string url = 5 [(gogoproto.jsontag) = "url"];
//权重
int32 weight = 6 [(gogoproto.jsontag) = "weight"];
//创建人
string creator = 7 [(gogoproto.jsontag) = "creator"];
//"状态1.上线中2.下线"
int32 status = 8 [(gogoproto.jsontag) = "status"];
//创建时刻
string ctime = 9 [(gogoproto.jsontag) = "ctime"];
//修改时刻
string mtime = 10 [(gogoproto.jsontag) = "mtime"];
}
// 请求资源列表
message ListReq {
//资源类型
int32 res_type = 1 [(gogoproto.moretags) = 'form:"res_type" validate:"required"'];
//页码
int32 page = 2 [(gogoproto.moretags) = 'form:"page"'];
//每页数据量
int32 page_size = 3 [(gogoproto.moretags) = 'form:"page_size"'];
}
// 返回资源列表
message ListResp {
int32 currentPage = 1 [(gogoproto.jsontag) = "currentPage"];
int32 totalCount = 2 [(gogoproto.jsontag) = "totalCount"];
repeated List list = 3 [(gogoproto.jsontag) = "list"];
message List {
//ID
int32 id = 1 [(gogoproto.jsontag) = "id"];
//资源类型
int32 res_type = 2 [(gogoproto.jsontag) = "res_type"];
//资源ID
int32 custom_id = 3 [(gogoproto.jsontag) = "custom_id"];
//名称
string title = 4 [(gogoproto.jsontag) = "title"];
//URL
string url = 5 [(gogoproto.jsontag) = "url"];
//权重
int32 weight = 6 [(gogoproto.jsontag) = "weight"];
//创建人
string creator = 7 [(gogoproto.jsontag) = "creator"];
//"状态1.上线中2.下线"
int32 status = 8 [(gogoproto.jsontag) = "status"];
//创建时刻
string ctime = 9 [(gogoproto.jsontag) = "ctime"];
//修改时刻
string mtime = 10 [(gogoproto.jsontag) = "mtime"];
}
}
// 请求变更资源状态
message SetStatusReq {
//资源类型
int32 res_type = 1 [(gogoproto.moretags) = 'form:"res_type" validate:"required"'];
//页码
int32 custom_id = 2 [(gogoproto.moretags) = 'form:"custom_id" validate:"required"'];
//每页数据量
int32 status = 3 [(gogoproto.moretags) = 'form:"status" validate:"required"'];
}
// 返回变更结果
message SetStatusResp {
}
service UserResource {
//Add 添加资源接口
rpc Add(AddReq) returns (AddResp);
//Edit 编辑现有资源
rpc Edit(EditReq) returns (EditResp);
//Query 请求单个资源
rpc Query(QueryReq) returns (QueryResp);
//List 获取资源列表
rpc List(ListReq) returns (ListResp);
//SetStatus 更改资源状态
rpc SetStatus(SetStatusReq) returns (SetStatusResp);
}

View File

@@ -0,0 +1,194 @@
##Add 添加资源接口
`GET http://api.live.bilibili.com/xlive/resource/v2/userResource/Add`
### 请求参数
|参数名|必选|类型|描述|
|:---|:---|:---|:---|
|res_type|是|integer|资源类型|
|title|是|string|名称|
|url|是|string|URL|
|weight|是|integer|权重|
|creator|是|string|创建人|
```json
{
"code": 0,
"message": "ok",
"data": {
// ID
"id": 0,
// 资源类型
"res_type": 0,
// 资源ID
"custom_id": 0,
// 名称
"title": "",
// URL
"url": "",
// 权重
"weight": 0,
// 创建人
"creator": "",
// "状态1.上线中2.下线"
"status": 0,
// 创建时刻
"ctime": "",
// 修改时刻
"mtime": ""
}
}
```
##Edit 编辑现有资源
`GET http://api.live.bilibili.com/xlive/resource/v2/userResource/Edit`
### 请求参数
|参数名|必选|类型|描述|
|:---|:---|:---|:---|
|res_type|是|integer|资源类型|
|custom_id|是|integer|资源ID|
|title|否|string|名称|
|url|否|string|URL|
|weight|否|integer|权重|
```json
{
"code": 0,
"message": "ok",
"data": {
// ID
"id": 0,
// 资源类型
"res_type": 0,
// 资源ID
"custom_id": 0,
// 名称
"title": "",
// URL
"url": "",
// 权重
"weight": 0,
// 创建人
"creator": "",
// "状态1.上线中2.下线"
"status": 0,
// 创建时刻
"ctime": "",
// 修改时刻
"mtime": ""
}
}
```
##Query 请求单个资源
`GET http://api.live.bilibili.com/xlive/resource/v2/userResource/Query`
### 请求参数
|参数名|必选|类型|描述|
|:---|:---|:---|:---|
|res_type|是|integer|资源类型|
|custom_id|是|integer|资源ID|
```json
{
"code": 0,
"message": "ok",
"data": {
// ID
"id": 0,
// 资源类型
"res_type": 0,
// 资源ID
"custom_id": 0,
// 名称
"title": "",
// URL
"url": "",
// 权重
"weight": 0,
// 创建人
"creator": "",
// "状态1.上线中2.下线"
"status": 0,
// 创建时刻
"ctime": "",
// 修改时刻
"mtime": ""
}
}
```
##List 获取资源列表
`GET http://api.live.bilibili.com/xlive/resource/v2/userResource/List`
### 请求参数
|参数名|必选|类型|描述|
|:---|:---|:---|:---|
|res_type|是|integer|资源类型|
|page|否|integer|页码|
|page_size|否|integer|每页数据量|
```json
{
"code": 0,
"message": "ok",
"data": {
"currentPage": 0,
"totalCount": 0,
"list": [
{
// ID
"id": 0,
// 资源类型
"res_type": 0,
// 资源ID
"custom_id": 0,
// 名称
"title": "",
// URL
"url": "",
// 权重
"weight": 0,
// 创建人
"creator": "",
// "状态1.上线中2.下线"
"status": 0,
// 创建时刻
"ctime": "",
// 修改时刻
"mtime": ""
}
]
}
}
```
##SetStatus 更改资源状态
`GET http://api.live.bilibili.com/xlive/resource/v2/userResource/SetStatus`
### 请求参数
|参数名|必选|类型|描述|
|:---|:---|:---|:---|
|res_type|是|integer|资源类型|
|custom_id|是|integer|页码|
|status|是|integer|每页数据量|
```json
{
"code": 0,
"message": "ok",
"data": {
}
}
```

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
}
}
```