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,63 @@
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 = ["service.bm.go"],
embed = [":v2_go_proto"],
importpath = "go-common/app/interface/live/live-demo/api/http/v2",
tags = ["automanaged"],
visibility = ["//visibility:public"],
deps = [
"//library/net/http/blademaster:go_default_library",
"//library/net/http/blademaster/binding:go_default_library",
"//vendor/google.golang.org/genproto/googleapis/api/annotations: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"],
)
proto_library(
name = "v2_proto",
srcs = ["service.proto"],
tags = ["automanaged"],
deps = [
"@go_googleapis//google/api:annotations_proto",
"@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/interface/live/live-demo/api/http/v2",
proto = ":v2_proto",
tags = ["automanaged"],
deps = [
"@com_github_gogo_protobuf//gogoproto:go_default_library",
"@go_googleapis//google/api:annotations_go_proto",
],
)

View File

@@ -0,0 +1,175 @@
// Code generated by protoc-gen-bm v0.1, DO NOT EDIT.
// source: service.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:
service.proto
*/
package v2
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
var PathFooUnameByUid = "/xlive/demo/v1/foo/uname_by_uid_custom_route"
var PathFooGetInfo = "/live.livedemo.v2.Foo/get_info"
var PathFooUnameByUid3 = "/live.livedemo.v2.Foo/uname_by_uid3"
var PathFooUnameByUid4 = "/live.livedemo.v2.Foo/uname_by_uid4"
var PathFooGetDynamic = "/live.livedemo.v2.Foo/get_dynamic"
var PathFooNointerface = "/live.livedemo.v2.Foo/nointerface"
var PathFooJsonReq = "/live.livedemo.v2.Foo/json_req"
var PathFoo2Hello = "/live.livedemo.v2.Foo2/hello"
// =============
// Foo Interface
// =============
// Foo 相关服务
type FooBMServer interface {
// 根据uid得到uname
// `method:"post" midware:"auth,verify"`
//
// 这是详细说明
UnameByUid(ctx context.Context, req *Bar1Req) (resp *Bar1Resp, err error)
// 获取房间信息
// `midware:"guest"`
GetInfo(ctx context.Context, req *GetInfoReq) (resp *GetInfoResp, err error)
// 根据uid得到uname v3
UnameByUid3(ctx context.Context, req *Bar1Req) (resp *Bar1Resp, err error)
// test comment
// `internal:"true"`
UnameByUid4(ctx context.Context, req *Bar1Req) (resp *Bar1Resp, err error)
// `dynamic_resp:"true"`
GetDynamic(ctx context.Context, req *Bar1Req) (resp interface{}, err error)
// `method:"POST"`
JsonReq(ctx context.Context, req *JsonReq) (resp *JsonResp, err error)
}
var v2FooSvc FooBMServer
func fooUnameByUid(c *bm.Context) {
p := new(Bar1Req)
if err := c.BindWith(p, binding.Default(c.Request.Method, c.Request.Header.Get("Content-Type"))); err != nil {
return
}
resp, err := v2FooSvc.UnameByUid(c, p)
c.JSON(resp, err)
}
func fooGetInfo(c *bm.Context) {
p := new(GetInfoReq)
if err := c.BindWith(p, binding.Default(c.Request.Method, c.Request.Header.Get("Content-Type"))); err != nil {
return
}
resp, err := v2FooSvc.GetInfo(c, p)
c.JSON(resp, err)
}
func fooUnameByUid3(c *bm.Context) {
p := new(Bar1Req)
if err := c.BindWith(p, binding.Default(c.Request.Method, c.Request.Header.Get("Content-Type"))); err != nil {
return
}
resp, err := v2FooSvc.UnameByUid3(c, p)
c.JSON(resp, err)
}
func fooUnameByUid4(c *bm.Context) {
p := new(Bar1Req)
if err := c.BindWith(p, binding.Default(c.Request.Method, c.Request.Header.Get("Content-Type"))); err != nil {
return
}
resp, err := v2FooSvc.UnameByUid4(c, p)
c.JSON(resp, err)
}
func fooGetDynamic(c *bm.Context) {
p := new(Bar1Req)
if err := c.BindWith(p, binding.Default(c.Request.Method, c.Request.Header.Get("Content-Type"))); err != nil {
return
}
resp, err := v2FooSvc.GetDynamic(c, p)
c.JSON(resp, err)
}
func fooJsonReq(c *bm.Context) {
p := new(JsonReq)
if err := c.BindWith(p, binding.Default(c.Request.Method, c.Request.Header.Get("Content-Type"))); err != nil {
return
}
resp, err := v2FooSvc.JsonReq(c, p)
c.JSON(resp, err)
}
// RegisterV2FooService Register the blademaster route with middleware map
// midMap is the middleware map, the key is defined in proto
func RegisterV2FooService(e *bm.Engine, svc FooBMServer, midMap map[string]bm.HandlerFunc) {
auth := midMap["auth"]
guest := midMap["guest"]
verify := midMap["verify"]
v2FooSvc = svc
e.GET("/xlive/demo/v1/foo/uname_by_uid_custom_route", auth, verify, fooUnameByUid)
e.GET("/xlive/live-demo/v2/foo/get_info", guest, fooGetInfo)
e.GET("/xlive/live-demo/v2/foo/uname_by_uid3", fooUnameByUid3)
e.GET("/xlive/internal/live-demo/v2/foo/uname_by_uid4", fooUnameByUid4)
e.GET("/xlive/live-demo/v2/foo/get_dynamic", fooGetDynamic)
e.POST("/xlive/live-demo/v2/foo/json_req", fooJsonReq)
}
// RegisterFooBMServer Register the blademaster route
func RegisterFooBMServer(e *bm.Engine, server FooBMServer) {
e.GET("/xlive/demo/v1/foo/uname_by_uid_custom_route", fooUnameByUid)
e.GET("/live.livedemo.v2.Foo/get_info", fooGetInfo)
e.GET("/live.livedemo.v2.Foo/uname_by_uid3", fooUnameByUid3)
e.GET("/live.livedemo.v2.Foo/uname_by_uid4", fooUnameByUid4)
e.GET("/live.livedemo.v2.Foo/get_dynamic", fooGetDynamic)
e.POST("/live.livedemo.v2.Foo/json_req", fooJsonReq)
}
// ==============
// Foo2 Interface
// ==============
type Foo2BMServer interface {
Hello(ctx context.Context, req *Bar1Req) (resp *Bar1Resp, err error)
}
var v2Foo2Svc Foo2BMServer
func foo2Hello(c *bm.Context) {
p := new(Bar1Req)
if err := c.BindWith(p, binding.Default(c.Request.Method, c.Request.Header.Get("Content-Type"))); err != nil {
return
}
resp, err := v2Foo2Svc.Hello(c, p)
c.JSON(resp, err)
}
// RegisterV2Foo2Service Register the blademaster route with middleware map
// midMap is the middleware map, the key is defined in proto
func RegisterV2Foo2Service(e *bm.Engine, svc Foo2BMServer, midMap map[string]bm.HandlerFunc) {
v2Foo2Svc = svc
e.GET("/xlive/live-demo/v2/foo2/hello", foo2Hello)
}
// RegisterFoo2BMServer Register the blademaster route
func RegisterFoo2BMServer(e *bm.Engine, server Foo2BMServer) {
e.GET("/live.livedemo.v2.Foo2/hello", foo2Hello)
}

View File

@@ -0,0 +1,305 @@
<!-- package=live.livedemo.v2 -->
- [/xlive/demo/v1/foo/uname_by_uid_custom_route](#xlivedemov1foouname_by_uid_custom_route) 根据uid得到uname
- [/xlive/live-demo/v2/foo/get_info](#xlivelive-demov2fooget_info) 获取房间信息
- [/xlive/live-demo/v2/foo/uname_by_uid3](#xlivelive-demov2foouname_by_uid3) 根据uid得到uname v3
- [/xlive/internal/live-demo/v2/foo/uname_by_uid4](#xliveinternallive-demov2foouname_by_uid4) test comment
- [/xlive/live-demo/v2/foo/get_dynamic](#xlivelive-demov2fooget_dynamic)
- [/xlive/live-demo/v2/foo/nointerface](#xlivelive-demov2foonointerface)
- [/xlive/live-demo/v2/foo/json_req](#xlivelive-demov2foojson_req)
## /xlive/demo/v1/foo/uname_by_uid_custom_route
### 根据uid得到uname
这是详细说明
> 需要登录
#### 方法GET
#### 请求参数
|参数名|必选|类型|描述|
|:---|:---|:---|:---|
|uid|是|integer| 用户uid|
#### 响应
```javascript
{
"code": 0,
"message": "ok",
"data": {
// 用户名
"uname": "hello",
// idshaha
"ids": [
343242
],
"list": [
{
"hello": "\"withquote",
"world": ""
}
],
"alist": {
"hello": "\"withquote",
"world": ""
},
"amap": {
"mapKey": {
"hello": "\"withquote",
"world": ""
}
}
}
}
```
## /xlive/live-demo/v2/foo/get_info
### 获取房间信息
#### 方法GET
#### 请求参数
|参数名|必选|类型|描述|
|:---|:---|:---|:---|
|room_id|是|integer| 房间id `mock:"123"|
|many_ids|否|多个integer||
#### 响应
```javascript
{
"code": 0,
"message": "ok",
"data": {
// 房间id 注释貌似只有放在前面才能被识别,放到字段声明后面是没用的
"roomid": 0,
// 用户名
"uname": "",
// 开播时间
"live_time": "",
"amap": {
"1": ""
},
"rate": 6.02214129e23,
// 用户mid
"mid": 0
}
}
```
## /xlive/live-demo/v2/foo/uname_by_uid3
### 根据uid得到uname v3
#### 方法GET
#### 请求参数
|参数名|必选|类型|描述|
|:---|:---|:---|:---|
|uid|是|integer| 用户uid|
#### 响应
```javascript
{
"code": 0,
"message": "ok",
"data": {
// 用户名
"uname": "hello",
// idshaha
"ids": [
343242
],
"list": [
{
"hello": "\"withquote",
"world": ""
}
],
"alist": {
"hello": "\"withquote",
"world": ""
},
"amap": {
"mapKey": {
"hello": "\"withquote",
"world": ""
}
}
}
}
```
## /xlive/internal/live-demo/v2/foo/uname_by_uid4
### test comment
#### 方法GET
#### 请求参数
|参数名|必选|类型|描述|
|:---|:---|:---|:---|
|uid|是|integer| 用户uid|
#### 响应
```javascript
{
"code": 0,
"message": "ok",
"data": {
// 用户名
"uname": "hello",
// idshaha
"ids": [
343242
],
"list": [
{
"hello": "\"withquote",
"world": ""
}
],
"alist": {
"hello": "\"withquote",
"world": ""
},
"amap": {
"mapKey": {
"hello": "\"withquote",
"world": ""
}
}
}
}
```
## /xlive/live-demo/v2/foo/get_dynamic
### 无标题
#### 方法GET
#### 请求参数
|参数名|必选|类型|描述|
|:---|:---|:---|:---|
|uid|是|integer| 用户uid|
#### 响应
```javascript
{
"code": 0,
"message": "ok",
"data": {
// 用户名
"uname": "hello",
// idshaha
"ids": [
343242
],
"list": [
{
"hello": "\"withquote",
"world": ""
}
],
"alist": {
"hello": "\"withquote",
"world": ""
},
"amap": {
"mapKey": {
"hello": "\"withquote",
"world": ""
}
}
}
}
```
## /xlive/live-demo/v2/foo/nointerface
### 无标题
#### 方法GET
#### 请求参数
|参数名|必选|类型|描述|
|:---|:---|:---|:---|
|uid|是|integer| 用户uid|
#### 响应
```javascript
{
"code": 0,
"message": "ok",
"data": {
// 用户名
"uname": "hello",
// idshaha
"ids": [
343242
],
"list": [
{
"hello": "\"withquote",
"world": ""
}
],
"alist": {
"hello": "\"withquote",
"world": ""
},
"amap": {
"mapKey": {
"hello": "\"withquote",
"world": ""
}
}
}
}
```
## /xlive/live-demo/v2/foo/json_req
### 无标题
#### 方法POST
#### 请求参数
```javascript
{
// json请求参数
"p1": "",
"p2": {
// param
"param": ""
}
}
```
#### 响应
```javascript
{
"code": 0,
"message": "ok",
"data": {
// json请求响应
"p1": ""
}
}
```

View File

@@ -0,0 +1,47 @@
<!-- package=live.livedemo.v2 -->
- [/xlive/live-demo/v2/foo2/hello](#xlivelive-demov2foo2hello)
## /xlive/live-demo/v2/foo2/hello
### 无标题
#### 方法GET
#### 请求参数
|参数名|必选|类型|描述|
|:---|:---|:---|:---|
|uid|是|integer| 用户uid|
#### 响应
```javascript
{
"code": 0,
"message": "ok",
"data": {
// 用户名
"uname": "hello",
// idshaha
"ids": [
343242
],
"list": [
{
"hello": "\"withquote",
"world": ""
}
],
"alist": {
"hello": "\"withquote",
"world": ""
},
"amap": {
"mapKey": {
"hello": "\"withquote",
"world": ""
}
}
}
}
```

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,101 @@
syntax = "proto3";
package live.livedemo.v2;
option go_package = "v2";
import "github.com/gogo/protobuf/gogoproto/gogo.proto";
import "google/api/annotations.proto";
// Foo 相关服务
service Foo {
// 根据uid得到uname
// `method:"post" midware:"auth,verify"`
//
// 这是详细说明
rpc uname_by_uid (Bar1Req) returns (Bar1Resp) {
option (google.api.http) = {
get:"/xlive/demo/v1/foo/uname_by_uid_custom_route"
};
}
// 获取房间信息
// `midware:"guest"`
rpc get_info (GetInfoReq) returns (GetInfoResp);
// 根据uid得到uname v3
rpc uname_by_uid3 (Bar1Req) returns (Bar1Resp);
// test comment
// `internal:"true"`
rpc uname_by_uid4 (Bar1Req) returns (Bar1Resp);
// `dynamic_resp:"true"`
rpc get_dynamic (Bar1Req) returns (Bar1Resp);
// `dynamic:"true"`
rpc nointerface (Bar1Req) returns (Bar1Resp);
// `method:"POST"`
rpc json_req(JsonReq) returns (JsonResp);
}
message JsonReq {
// json请求参数
string p1 = 1;
JsonSubMessage p2 = 2;
}
message JsonSubMessage {
// param
string param = 1;
}
message JsonResp {
// json请求响应
string p1 = 1;
}
service Foo2 {
rpc hello (Bar1Req) returns (Bar1Resp);
}
// Bar请求
message Bar1Req {
// 用户uid
int32 uid = 1 [(gogoproto.moretags) = 'form:"uid" validate:"required"'];
}
// Bar 相应
message Bar1Resp {
// 用户名
// `mock:"hello"`
string uname = 2 [(gogoproto.jsontag) = "uname"];
// idshaha
// `mock:"343242"`
repeated int32 ids = 3 [(gogoproto.jsontag) = "ids"];
repeated List list = 4 [(gogoproto.jsontag) = "list"];
List alist = 5 [(gogoproto.jsontag) = "alist"];
message List {
// `mock:"\"withquote"`
string hello = 1 [(gogoproto.jsontag) = "hello"];
string world = 2 [(gogoproto.jsontag) = "world"];
}
map<string, List> amap = 6 [(gogoproto.jsontag) = "amap"];
}
// 获取房间信息请求
message GetInfoReq {
// 房间id
// `mock:"123"
int64 room_id = 1 [(gogoproto.moretags) = 'form:"room_id" validate:"required"'];
repeated int64 many_ids = 2 [(gogoproto.moretags) = 'form:"many_ids"'];
}
// 获取房间信息响应
message GetInfoResp {
// 房间id 注释貌似只有放在前面才能被识别,放到字段声明后面是没用的
int64 roomid = 1 [(gogoproto.jsontag) = "roomid"]; // 这段注释不会被理会
// 用户名
string uname = 2 [(gogoproto.jsontag) = "uname"];
// 开播时间
string live_time = 3 [(gogoproto.jsontag) = "live_time"];
map<int32, string> amap = 4 [(gogoproto.jsontag) = "amap"];
// `mock:"6.02214129e23"`
float rate = 5 [(gogoproto.jsontag) = "rate"];
// 用户mid
int64 mid = 6 [(gogoproto.jsontag) = "mid"];
}