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,62 @@
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 = ["api.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/xcaptcha/api/grpc/v1",
proto = ":v1_proto",
tags = ["automanaged"],
deps = ["@com_github_gogo_protobuf//gogoproto:go_default_library"],
)
go_library(
name = "go_default_library",
srcs = [
"api.bm.go",
"client.go",
],
embed = [":v1_go_proto"],
importpath = "go-common/app/service/live/xcaptcha/api/grpc/v1",
tags = ["automanaged"],
visibility = ["//visibility:public"],
deps = [
"//library/net/http/blademaster:go_default_library",
"//library/net/http/blademaster/binding: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,86 @@
// 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"
"go-common/library/net/http/blademaster/binding"
)
// to suppressed 'imported but not used warning'
var _ *bm.Context
var _ context.Context
var _ binding.StructValidator
// ==================
// XCaptcha Interface
// ==================
// XCaptcha
type XCaptcha interface {
// 创建验证码
Create(ctx context.Context, req *XCreateCaptchaReq) (resp *XCreateCaptchaResp, err error)
// 二次校验checkToken `internal:"true"`
Verify(ctx context.Context, req *XVerifyReq) (resp *XVerifyResp, err error)
// 验证码校验 `internal:"true"`
Check(ctx context.Context, req *CheckReq) (resp *CheckResp, err error)
}
var v1XCaptchaSvc XCaptcha
// @params XCreateCaptchaReq
// @router GET /xlive/xcaptcha/v1/xCaptcha/create
// @response XCreateCaptchaResp
func xCaptchaCreate(c *bm.Context) {
p := new(XCreateCaptchaReq)
if err := c.BindWith(p, binding.Default(c.Request.Method, c.Request.Header.Get("Content-Type"))); err != nil {
return
}
resp, err := v1XCaptchaSvc.Create(c, p)
c.JSON(resp, err)
}
// @params XVerifyReq
// @router GET /xlive/internal/xcaptcha/v1/xCaptcha/verify
// @response XVerifyResp
func xCaptchaVerify(c *bm.Context) {
p := new(XVerifyReq)
if err := c.BindWith(p, binding.Default(c.Request.Method, c.Request.Header.Get("Content-Type"))); err != nil {
return
}
resp, err := v1XCaptchaSvc.Verify(c, p)
c.JSON(resp, err)
}
// @params CheckReq
// @router GET /xlive/internal/xcaptcha/v1/xCaptcha/check
// @response CheckResp
func xCaptchaCheck(c *bm.Context) {
p := new(CheckReq)
if err := c.BindWith(p, binding.Default(c.Request.Method, c.Request.Header.Get("Content-Type"))); err != nil {
return
}
resp, err := v1XCaptchaSvc.Check(c, p)
c.JSON(resp, err)
}
// RegisterV1XCaptchaService Register the blademaster route with middleware map
// midMap is the middleware map, the key is defined in proto
func RegisterV1XCaptchaService(e *bm.Engine, svc XCaptcha, midMap map[string]bm.HandlerFunc) {
v1XCaptchaSvc = svc
e.GET("/xlive/xcaptcha/v1/xCaptcha/create", xCaptchaCreate)
e.GET("/xlive/internal/xcaptcha/v1/xCaptcha/verify", xCaptchaVerify)
e.GET("/xlive/internal/xcaptcha/v1/xCaptcha/check", xCaptchaCheck)
}

View File

@@ -0,0 +1,55 @@
## 创建验证码
`GET http://api.live.bilibili.com/xlive/xcaptcha/v1/captcha/create`
### 请求参数
|参数名|必选|类型|描述|
|:---|:---|:---|:---|
|type|否|integer||
|client_type|否|string||
|height|否|integer||
|width|否|integer||
|uid|否|integer||
|client_ip|否|string||
```json
{
"code": 0,
"message": "ok",
"data": {
"type": 0,
"geetest": {
"gt": "",
"challenge": ""
},
"image": {
"tips": "",
"token": "",
"content": ""
}
}
}
```
##
`GET http://api.live.bilibili.com/xlive/internal/xcaptcha/v1/captcha/verify`
### 请求参数
|参数名|必选|类型|描述|
|:---|:---|:---|:---|
|_anti|否|string||
|uid|否|integer||
|client_ip|否|string||
```json
{
"code": 0,
"message": "ok",
"data": {
}
}
```

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,65 @@
syntax = "proto3";
package live.xcaptcha.v1;
option go_package = "v1";
import "github.com/gogo/protobuf/gogoproto/gogo.proto";
// XCaptcha
service XCaptcha {
// 创建验证码
rpc create (XCreateCaptchaReq) returns (XCreateCaptchaResp);
// 二次校验checkToken `internal:"true"`
rpc verify (XVerifyReq) returns (XVerifyResp);
// 验证码校验 `internal:"true"`
rpc check (CheckReq) returns (CheckResp);
}
message XCreateCaptchaReq {
int64 type = 1 [(gogoproto.moretags) = 'form:"type"'];
string client_type = 2 [(gogoproto.moretags) = 'form:"client_type"'];
int64 height = 3 [(gogoproto.moretags) = 'form:"height"'];
int64 width = 4 [(gogoproto.moretags) = 'form:"width"'];
int64 uid = 5 [(gogoproto.moretags) = 'form:"uid"'];
string client_ip = 6 [(gogoproto.moretags) = 'form:"client_ip"'];
}
message XCreateCaptchaResp{
int64 type = 1 [(gogoproto.jsontag) = "type"];
GeeTest geetest = 2 [(gogoproto.jsontag) = "geetest"];
Image image = 3 [(gogoproto.jsontag) = "image"];
}
message GeeTest{
string gt = 1 [(gogoproto.jsontag) = "gt"];
string challenge = 2 [(gogoproto.jsontag) = "challenge"];
}
message Image{
string tips = 1 [(gogoproto.jsontag) = "tips"];
string token = 2 [(gogoproto.jsontag) = "token"];
string content = 3 [(gogoproto.jsontag) = "content"];
}
message XVerifyReq {
string _anti = 1 [(gogoproto.moretags) = 'form:"_anti" validate:"required"'];
int64 uid = 2 [(gogoproto.moretags) = 'form:"uid" validate:"required"'];
string client_ip = 3 [(gogoproto.moretags) = 'form:"client_ip"'];
int64 room_id = 4 [(gogoproto.moretags) = 'form:"room_id"'];
}
message XVerifyResp{
}
message CheckReq{
string anti = 1 [(gogoproto.moretags) = 'form:"anti" validate:"required"'];
int64 uid = 2 [(gogoproto.moretags) = 'form:"uid" validate:"required"'];
string client_ip = 3 [(gogoproto.moretags) = 'form:"client_ip"'];
}
message CheckResp{
int64 type = 1 [(gogoproto.jsontag) = "type"];
string token = 2 [(gogoproto.jsontag) = "token"];
}

View File

@@ -0,0 +1,79 @@
## 创建验证码
`GET http://api.live.bilibili.com/xlive/xcaptcha/v1/xCaptcha/create`
### 请求参数
|参数名|必选|类型|描述|
|:---|:---|:---|:---|
|type|否|integer||
|client_type|否|string||
|height|否|integer||
|width|否|integer||
|uid|否|integer||
|client_ip|否|string||
```json
{
"code": 0,
"message": "ok",
"data": {
"type": 0,
"geetest": {
"gt": "",
"challenge": ""
},
"image": {
"tips": "",
"token": "",
"content": ""
}
}
}
```
##
`GET http://api.live.bilibili.com/xlive/internal/xcaptcha/v1/xCaptcha/verify`
### 请求参数
|参数名|必选|类型|描述|
|:---|:---|:---|:---|
|_anti|是|string||
|uid|是|integer||
|client_ip|否|string||
|room_id|否|integer||
```json
{
"code": 0,
"message": "ok",
"data": {
}
}
```
##
`GET http://api.live.bilibili.com/xlive/internal/xcaptcha/v1/xCaptcha/check`
### 请求参数
|参数名|必选|类型|描述|
|:---|:---|:---|:---|
|anti|是|string||
|uid|是|integer||
|client_ip|否|string||
```json
{
"code": 0,
"message": "ok",
"data": {
"type": 0,
"token": ""
}
}
```

View File

@@ -0,0 +1,27 @@
package v1
import (
"context"
"go-common/library/net/rpc/warden"
"google.golang.org/grpc"
)
// AppID 服务app_id
const AppID = "live.xcaptcha"
// Client grpc xcaptcha
type Client struct {
XCaptchaClient
}
// 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.XCaptchaClient = NewXCaptchaClient(conn)
return cli, nil
}