successfully run facade

This commit is contained in:
suyiiyii 2025-01-20 21:45:01 +08:00
parent 98273c7645
commit 19851da7f1
Signed by: suyiiyii
GPG Key ID: 044704CB29B8AD85
24 changed files with 435 additions and 1620 deletions

View File

@ -2,16 +2,15 @@ export ROOT_MOD=github.com/suyiiyii/hertz101
.PHONY: gen-user
gen-user:
@cd app/user && cwgo server --type RPC --service user --module ${ROOT_MOD}/app/user --pass "-use ${ROOT_MOD}/rpc_gen/kitex_gen" -I ../../idl --idl ../../idl/user.proto
@cd rpc_gen && cwgo client --type RPC --service user --module ${ROOT_MOD}/rpc_gen --I ../idl --idl ../idl/user.proto
@cd app/user && cwgo server --type RPC --server_name user --module ${ROOT_MOD}/app/user --pass "-use ${ROOT_MOD}/rpc_gen/kitex_gen" -I ../../idl --idl ../../idl/user.proto
@cd rpc_gen && cwgo client --type RPC --server_name user --module ${ROOT_MOD}/rpc_gen --I ../idl --idl ../idl/user.proto
.PHONY: gen-auth
gen-auth:
@cd app/auth && cwgo server --type RPC --service auth --module ${ROOT_MOD}/app/auth --pass "-use ${ROOT_MOD}/rpc_gen/kitex_gen" -I ../../idl --idl ../../idl/auth.proto
@cd rpc_gen && cwgo client --type RPC --service auth --module ${ROOT_MOD}/rpc_gen --I ../idl --idl ../idl/auth.proto
@cd app/auth && cwgo server --type RPC --server_name auth --module ${ROOT_MOD}/app/auth --pass "-use ${ROOT_MOD}/rpc_gen/kitex_gen" -I ../../idl --idl ../../idl/auth.proto
@cd rpc_gen && cwgo client --type RPC --server_name auth --module ${ROOT_MOD}/rpc_gen --I ../idl --idl ../idl/auth.proto
.PHONY: gen-facade
gen-facade:
@cd app/facade && cwgo server --type HTTP --service facade --module ${ROOT_MOD}/app/facade --pass "-use ${ROOT_MOD}/rpc_gen/kitex_gen" -I ../../idl --idl ../../idl/facade/facade.proto
@cd rpc_gen && cwgo client --type RPC --service facade --module ${ROOT_MOD}/rpc_gen --I ../idl --idl ../idl/facade/facade.proto
@cd app/facade && cwgo server --type HTTP --server_name facade --module ${ROOT_MOD}/app/facade -I ../../idl --idl ../../idl/facade/facade.proto

View File

@ -0,0 +1,53 @@
package facade
import (
"context"
"github.com/cloudwego/hertz/pkg/app"
"github.com/cloudwego/hertz/pkg/protocol/consts"
"github.com/suyiiyii/hertz101/app/facade/biz/service"
"github.com/suyiiyii/hertz101/app/facade/biz/utils"
facade "github.com/suyiiyii/hertz101/app/facade/hertz_gen/facade"
)
// Register .
// @router /register [POST]
func Register(ctx context.Context, c *app.RequestContext) {
var err error
var req facade.RegisterReq
err = c.BindAndValidate(&req)
if err != nil {
utils.SendErrResponse(ctx, c, consts.StatusOK, err)
return
}
resp := &facade.RegisterResp{}
resp, err = service.NewRegisterService(ctx, c).Run(&req)
if err != nil {
utils.SendErrResponse(ctx, c, consts.StatusOK, err)
return
}
utils.SendSuccessResponse(ctx, c, consts.StatusOK, resp)
}
// Login .
// @router /login [POST]
func Login(ctx context.Context, c *app.RequestContext) {
var err error
var req facade.LoginReq
err = c.BindAndValidate(&req)
if err != nil {
utils.SendErrResponse(ctx, c, consts.StatusOK, err)
return
}
resp := &facade.LoginResp{}
resp, err = service.NewLoginService(ctx, c).Run(&req)
if err != nil {
utils.SendErrResponse(ctx, c, consts.StatusOK, err)
return
}
utils.SendSuccessResponse(ctx, c, consts.StatusOK, resp)
}

View File

@ -0,0 +1,40 @@
package facade
import (
"bytes"
"testing"
"github.com/cloudwego/hertz/pkg/app/server"
//"github.com/cloudwego/hertz/pkg/common/test/assert"
"github.com/cloudwego/hertz/pkg/common/ut"
)
func TestRegister(t *testing.T) {
h := server.Default()
h.POST("/register", Register)
path := "/register" // todo: you can customize query
body := &ut.Body{Body: bytes.NewBufferString(""), Len: 1} // todo: you can customize body
header := ut.Header{} // todo: you can customize header
w := ut.PerformRequest(h.Engine, "POST", path, body, header)
resp := w.Result()
t.Log(string(resp.Body()))
// todo edit your unit test.
// assert.DeepEqual(t, 200, resp.StatusCode())
// assert.DeepEqual(t, "null", string(resp.Body()))
}
func TestLogin(t *testing.T) {
h := server.Default()
h.POST("/login", Login)
path := "/login" // todo: you can customize query
body := &ut.Body{Body: bytes.NewBufferString(""), Len: 1} // todo: you can customize body
header := ut.Header{} // todo: you can customize header
w := ut.PerformRequest(h.Engine, "POST", path, body, header)
resp := w.Result()
t.Log(string(resp.Body()))
// todo edit your unit test.
// assert.DeepEqual(t, 200, resp.StatusCode())
// assert.DeepEqual(t, "null", string(resp.Body()))
}

View File

@ -1,9 +0,0 @@
package facade
import (
"context"
"github.com/cloudwego/hertz/pkg/app"
"github.com/cloudwego/hertz/pkg/protocol/consts"
"github.com/suyiiyii/hertz101/app/facade/biz/utils"
)

View File

@ -1,10 +0,0 @@
package facade
import (
"bytes"
"testing"
"github.com/cloudwego/hertz/pkg/app/server"
//"github.com/cloudwego/hertz/pkg/common/test/assert"
"github.com/cloudwego/hertz/pkg/common/ut"
)

View File

@ -16,4 +16,7 @@ import (
// Register register routes based on the IDL 'api.${HTTP Method}' annotation.
func Register(r *server.Hertz) {
root := r.Group("/", rootMw()...)
root.POST("/login", append(_loginMw(), facade.Login)...)
root.POST("/register", append(_registerMw(), facade.Register)...)
}

View File

@ -5,3 +5,18 @@ package facade
import (
"github.com/cloudwego/hertz/pkg/app"
)
func rootMw() []app.HandlerFunc {
// your code...
return nil
}
func _loginMw() []app.HandlerFunc {
// your code...
return nil
}
func _registerMw() []app.HandlerFunc {
// your code...
return nil
}

View File

@ -0,0 +1,26 @@
package service
import (
"context"
"github.com/cloudwego/hertz/pkg/app"
facade "github.com/suyiiyii/hertz101/app/facade/hertz_gen/facade"
)
type LoginService struct {
RequestContext *app.RequestContext
Context context.Context
}
func NewLoginService(Context context.Context, RequestContext *app.RequestContext) *LoginService {
return &LoginService{RequestContext: RequestContext, Context: Context}
}
func (h *LoginService) Run(req *facade.LoginReq) (resp *facade.LoginResp, err error) {
//defer func() {
// hlog.CtxInfof(h.Context, "req = %+v", req)
// hlog.CtxInfof(h.Context, "resp = %+v", resp)
//}()
// todo edit your code
return
}

View File

@ -0,0 +1,26 @@
package service
import (
"context"
"github.com/cloudwego/hertz/pkg/app"
facade "github.com/suyiiyii/hertz101/app/facade/hertz_gen/facade"
)
type RegisterService struct {
RequestContext *app.RequestContext
Context context.Context
}
func NewRegisterService(Context context.Context, RequestContext *app.RequestContext) *RegisterService {
return &RegisterService{RequestContext: RequestContext, Context: Context}
}
func (h *RegisterService) Run(req *facade.RegisterReq) (resp *facade.RegisterResp, err error) {
//defer func() {
// hlog.CtxInfof(h.Context, "req = %+v", req)
// hlog.CtxInfof(h.Context, "resp = %+v", resp)
//}()
// todo edit your code
return
}

View File

@ -21,19 +21,129 @@ const (
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)
type RegisterReq struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Email string `protobuf:"bytes,1,opt,name=email,proto3" json:"email,omitempty" query:"email"`
Password string `protobuf:"bytes,2,opt,name=password,proto3" json:"password,omitempty" query:"password"`
ConfirmPassword string `protobuf:"bytes,3,opt,name=confirm_password,json=confirmPassword,proto3" json:"confirm_password,omitempty" query:"confirm_password"`
}
func (x *RegisterReq) Reset() {
*x = RegisterReq{}
if protoimpl.UnsafeEnabled {
mi := &file_facade_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *RegisterReq) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*RegisterReq) ProtoMessage() {}
func (x *RegisterReq) ProtoReflect() protoreflect.Message {
mi := &file_facade_proto_msgTypes[0]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use RegisterReq.ProtoReflect.Descriptor instead.
func (*RegisterReq) Descriptor() ([]byte, []int) {
return file_facade_proto_rawDescGZIP(), []int{0}
}
func (x *RegisterReq) GetEmail() string {
if x != nil {
return x.Email
}
return ""
}
func (x *RegisterReq) GetPassword() string {
if x != nil {
return x.Password
}
return ""
}
func (x *RegisterReq) GetConfirmPassword() string {
if x != nil {
return x.ConfirmPassword
}
return ""
}
type RegisterResp struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
UserId int32 `protobuf:"varint,1,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty" form:"user_id" query:"user_id"`
}
func (x *RegisterResp) Reset() {
*x = RegisterResp{}
if protoimpl.UnsafeEnabled {
mi := &file_facade_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *RegisterResp) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*RegisterResp) ProtoMessage() {}
func (x *RegisterResp) ProtoReflect() protoreflect.Message {
mi := &file_facade_proto_msgTypes[1]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use RegisterResp.ProtoReflect.Descriptor instead.
func (*RegisterResp) Descriptor() ([]byte, []int) {
return file_facade_proto_rawDescGZIP(), []int{1}
}
func (x *RegisterResp) GetUserId() int32 {
if x != nil {
return x.UserId
}
return 0
}
type LoginReq struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Username string `protobuf:"bytes,1,opt,name=username,proto3" json:"username,omitempty" form:"username" query:"username"`
Password string `protobuf:"bytes,2,opt,name=password,proto3" json:"password,omitempty" form:"password" query:"password"`
Email string `protobuf:"bytes,1,opt,name=email,proto3" json:"email,omitempty" query:"email"`
Password string `protobuf:"bytes,2,opt,name=password,proto3" json:"password,omitempty" query:"password"`
}
func (x *LoginReq) Reset() {
*x = LoginReq{}
if protoimpl.UnsafeEnabled {
mi := &file_facade_proto_msgTypes[0]
mi := &file_facade_proto_msgTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@ -46,7 +156,7 @@ func (x *LoginReq) String() string {
func (*LoginReq) ProtoMessage() {}
func (x *LoginReq) ProtoReflect() protoreflect.Message {
mi := &file_facade_proto_msgTypes[0]
mi := &file_facade_proto_msgTypes[2]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@ -59,12 +169,12 @@ func (x *LoginReq) ProtoReflect() protoreflect.Message {
// Deprecated: Use LoginReq.ProtoReflect.Descriptor instead.
func (*LoginReq) Descriptor() ([]byte, []int) {
return file_facade_proto_rawDescGZIP(), []int{0}
return file_facade_proto_rawDescGZIP(), []int{2}
}
func (x *LoginReq) GetUsername() string {
func (x *LoginReq) GetEmail() string {
if x != nil {
return x.Username
return x.Email
}
return ""
}
@ -87,7 +197,7 @@ type LoginResp struct {
func (x *LoginResp) Reset() {
*x = LoginResp{}
if protoimpl.UnsafeEnabled {
mi := &file_facade_proto_msgTypes[1]
mi := &file_facade_proto_msgTypes[3]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@ -100,7 +210,7 @@ func (x *LoginResp) String() string {
func (*LoginResp) ProtoMessage() {}
func (x *LoginResp) ProtoReflect() protoreflect.Message {
mi := &file_facade_proto_msgTypes[1]
mi := &file_facade_proto_msgTypes[3]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@ -113,7 +223,7 @@ func (x *LoginResp) ProtoReflect() protoreflect.Message {
// Deprecated: Use LoginResp.ProtoReflect.Descriptor instead.
func (*LoginResp) Descriptor() ([]byte, []int) {
return file_facade_proto_rawDescGZIP(), []int{1}
return file_facade_proto_rawDescGZIP(), []int{3}
}
func (x *LoginResp) GetToken() string {
@ -126,24 +236,42 @@ func (x *LoginResp) GetToken() string {
var File_facade_proto protoreflect.FileDescriptor
var file_facade_proto_rawDesc = []byte{
0x0a, 0x0c, 0x66, 0x61, 0x63, 0x61, 0x64, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x08,
0x66, 0x72, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x64, 0x1a, 0x09, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x22, 0x42, 0x0a, 0x08, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x12,
0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70,
0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70,
0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x21, 0x0a, 0x09, 0x4c, 0x6f, 0x67, 0x69, 0x6e,
0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20,
0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x32, 0x45, 0x0a, 0x0f, 0x46, 0x72,
0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x32, 0x0a,
0x05, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x12, 0x12, 0x2e, 0x66, 0x72, 0x6f, 0x6e, 0x74, 0x65, 0x6e,
0x64, 0x2e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x13, 0x2e, 0x66, 0x72, 0x6f,
0x6e, 0x74, 0x65, 0x6e, 0x64, 0x2e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22,
0x00, 0x42, 0x3a, 0x5a, 0x38, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f,
0x73, 0x75, 0x79, 0x69, 0x69, 0x79, 0x69, 0x69, 0x2f, 0x68, 0x65, 0x72, 0x74, 0x7a, 0x31, 0x30,
0x31, 0x2f, 0x61, 0x70, 0x70, 0x2f, 0x66, 0x61, 0x63, 0x61, 0x64, 0x65, 0x2f, 0x68, 0x65, 0x72,
0x74, 0x7a, 0x5f, 0x67, 0x65, 0x6e, 0x2f, 0x66, 0x61, 0x63, 0x61, 0x64, 0x65, 0x62, 0x06, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x33,
0x0a, 0x0c, 0x66, 0x61, 0x63, 0x61, 0x64, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x06,
0x66, 0x61, 0x63, 0x61, 0x64, 0x65, 0x1a, 0x09, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x22, 0x99, 0x01, 0x0a, 0x0b, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65,
0x71, 0x12, 0x1f, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
0x42, 0x09, 0xb2, 0xbb, 0x18, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x52, 0x05, 0x65, 0x6d, 0x61,
0x69, 0x6c, 0x12, 0x28, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x02,
0x20, 0x01, 0x28, 0x09, 0x42, 0x0c, 0xb2, 0xbb, 0x18, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f,
0x72, 0x64, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x3f, 0x0a, 0x10,
0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x5f, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64,
0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x14, 0xb2, 0xbb, 0x18, 0x10, 0x63, 0x6f, 0x6e, 0x66,
0x69, 0x72, 0x6d, 0x5f, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x0f, 0x63, 0x6f,
0x6e, 0x66, 0x69, 0x72, 0x6d, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x27, 0x0a,
0x0c, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x12, 0x17, 0x0a,
0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06,
0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x22, 0x55, 0x0a, 0x08, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52,
0x65, 0x71, 0x12, 0x1f, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28,
0x09, 0x42, 0x09, 0xb2, 0xbb, 0x18, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x52, 0x05, 0x65, 0x6d,
0x61, 0x69, 0x6c, 0x12, 0x28, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18,
0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0c, 0xb2, 0xbb, 0x18, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77,
0x6f, 0x72, 0x64, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x21, 0x0a,
0x09, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f,
0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e,
0x32, 0x8f, 0x01, 0x0a, 0x0d, 0x46, 0x61, 0x63, 0x61, 0x64, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69,
0x63, 0x65, 0x12, 0x44, 0x0a, 0x08, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x12, 0x13,
0x2e, 0x66, 0x61, 0x63, 0x61, 0x64, 0x65, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72,
0x52, 0x65, 0x71, 0x1a, 0x14, 0x2e, 0x66, 0x61, 0x63, 0x61, 0x64, 0x65, 0x2e, 0x52, 0x65, 0x67,
0x69, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x22, 0x0d, 0xd2, 0xc1, 0x18, 0x09, 0x2f,
0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x12, 0x38, 0x0a, 0x05, 0x4c, 0x6f, 0x67, 0x69,
0x6e, 0x12, 0x10, 0x2e, 0x66, 0x61, 0x63, 0x61, 0x64, 0x65, 0x2e, 0x4c, 0x6f, 0x67, 0x69, 0x6e,
0x52, 0x65, 0x71, 0x1a, 0x11, 0x2e, 0x66, 0x61, 0x63, 0x61, 0x64, 0x65, 0x2e, 0x4c, 0x6f, 0x67,
0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x0a, 0xd2, 0xc1, 0x18, 0x06, 0x2f, 0x6c, 0x6f, 0x67,
0x69, 0x6e, 0x42, 0x3a, 0x5a, 0x38, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d,
0x2f, 0x73, 0x75, 0x79, 0x69, 0x69, 0x79, 0x69, 0x69, 0x2f, 0x68, 0x65, 0x72, 0x74, 0x7a, 0x31,
0x30, 0x31, 0x2f, 0x61, 0x70, 0x70, 0x2f, 0x66, 0x61, 0x63, 0x61, 0x64, 0x65, 0x2f, 0x68, 0x65,
0x72, 0x74, 0x7a, 0x5f, 0x67, 0x65, 0x6e, 0x2f, 0x66, 0x61, 0x63, 0x61, 0x64, 0x65, 0x62, 0x06,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
@ -158,16 +286,20 @@ func file_facade_proto_rawDescGZIP() []byte {
return file_facade_proto_rawDescData
}
var file_facade_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
var file_facade_proto_msgTypes = make([]protoimpl.MessageInfo, 4)
var file_facade_proto_goTypes = []interface{}{
(*LoginReq)(nil), // 0: frontend.LoginReq
(*LoginResp)(nil), // 1: frontend.LoginResp
(*RegisterReq)(nil), // 0: facade.RegisterReq
(*RegisterResp)(nil), // 1: facade.RegisterResp
(*LoginReq)(nil), // 2: facade.LoginReq
(*LoginResp)(nil), // 3: facade.LoginResp
}
var file_facade_proto_depIdxs = []int32{
0, // 0: frontend.FrontendService.Login:input_type -> frontend.LoginReq
1, // 1: frontend.FrontendService.Login:output_type -> frontend.LoginResp
1, // [1:2] is the sub-list for method output_type
0, // [0:1] is the sub-list for method input_type
0, // 0: facade.FacadeService.Register:input_type -> facade.RegisterReq
2, // 1: facade.FacadeService.Login:input_type -> facade.LoginReq
1, // 2: facade.FacadeService.Register:output_type -> facade.RegisterResp
3, // 3: facade.FacadeService.Login:output_type -> facade.LoginResp
2, // [2:4] is the sub-list for method output_type
0, // [0:2] is the sub-list for method input_type
0, // [0:0] is the sub-list for extension type_name
0, // [0:0] is the sub-list for extension extendee
0, // [0:0] is the sub-list for field type_name
@ -180,7 +312,7 @@ func file_facade_proto_init() {
}
if !protoimpl.UnsafeEnabled {
file_facade_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*LoginReq); i {
switch v := v.(*RegisterReq); i {
case 0:
return &v.state
case 1:
@ -192,6 +324,30 @@ func file_facade_proto_init() {
}
}
file_facade_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*RegisterResp); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_facade_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*LoginReq); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_facade_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*LoginResp); i {
case 0:
return &v.state
@ -210,7 +366,7 @@ func file_facade_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_facade_proto_rawDesc,
NumEnums: 0,
NumMessages: 2,
NumMessages: 4,
NumExtensions: 0,
NumServices: 1,
},

View File

@ -1,7 +1,8 @@
go 1.23.4
use (
app/auth
app/facade
app/user
rpc_gen
app/auth
)

View File

@ -280,9 +280,15 @@ github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
github.com/bgentry/speakeasy v0.1.0 h1:ByYyxL9InA1OWqxJqqp2A5pYHUrCiAL6K3J+LKSsQkY=
github.com/boombuler/barcode v1.0.1 h1:NDBbPmhS+EqABEs5Kg3n/5ZNjy73Pz7SIV+KCeqyXcs=
github.com/brianvoe/gofakeit/v6 v6.16.0 h1:EelCqtfArd8ppJ0z+TpOxXH8sVWNPBadPNdCDSMMw7k=
github.com/bytedance/go-tagexpr/v2 v2.9.2 h1:QySJaAIQgOEDQBLS3x9BxOWrnhqu5sQ+f6HaZIxD39I=
github.com/bytedance/go-tagexpr/v2 v2.9.2/go.mod h1:5qsx05dYOiUXOUgnQ7w3Oz8BYs2qtM/bJokdLb79wRM=
github.com/bytedance/gopkg v0.0.0-20240531030433-5df24c0168e2/go.mod h1:FtQG3YbQG9L/91pbKSw787yBQPutC+457AvDW77fgUQ=
github.com/bytedance/gopkg v0.0.0-20240711085056-a03554c296f8/go.mod h1:FtQG3YbQG9L/91pbKSw787yBQPutC+457AvDW77fgUQ=
github.com/bytedance/mockey v1.2.1/go.mod h1:+Jm/fzWZAuhEDrPXVjDf/jLM2BlLXJkwk94zf2JZ3X4=
github.com/bytedance/mockey v1.2.7 h1:8j4yCqS5OmMe2dQCxPit4FVkwTK9nrykIgbOZN3s28o=
github.com/bytedance/mockey v1.2.12 h1:aeszOmGw8CPX8CRx1DZ/Glzb1yXvhjDh6jdFBNZjsU4=
github.com/bytedance/mockey v1.2.12/go.mod h1:3ZA4MQasmqC87Tw0w7Ygdy7eHIc2xgpZ8Pona5rsYIk=
github.com/bytedance/sonic v1.8.1/go.mod h1:i736AoUSYt75HyZLoJW9ERYxcy6eaN6h4BZXU064P/U=
github.com/bytedance/sonic v1.12.0/go.mod h1:B8Gt/XvtZ3Fqj+iSKMypzymZxw/FVwgIGKzMzT9r/rk=
github.com/bytedance/sonic v1.12.2/go.mod h1:B8Gt/XvtZ3Fqj+iSKMypzymZxw/FVwgIGKzMzT9r/rk=
github.com/census-instrumentation/opencensus-proto v0.2.1 h1:glEXhBS5PSLLv4IXzLA5yPRVX4bilULVyxxbrfOtDAk=
@ -291,10 +297,17 @@ github.com/census-instrumentation/opencensus-proto v0.4.1/go.mod h1:4T9NM4+4Vw91
github.com/chenzhuoyu/base64x v0.0.0-20230717121745-296ad89f973d h1:77cEq6EriyTZ0g/qfRdp61a3Uu/AWrgIq2s0ClJV1g0=
github.com/chenzhuoyu/iasm v0.9.1 h1:tUHQJXo3NhBqw6s33wkGn9SP3bvrWLdlVIJ3hQBL7P0=
github.com/choleraehyq/pid v0.0.18 h1:O7LLxPoOyt3YtonlCC8BmNrF9P6Hc8B509UOqlPSVhw=
github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
github.com/chzyer/logex v1.2.0 h1:+eqR0HfOetur4tgnC8ftU5imRnhi4te+BadWS95c5AM=
github.com/chzyer/logex v1.2.1 h1:XHDu3E6q+gdHgsdTPH6ImJMIp436vR6MPtH8gP05QzM=
github.com/chzyer/logex v1.2.1/go.mod h1:JLbx6lG2kDbNRFnfkgvh4eRJRPX1QCoOIWomwysCBrQ=
github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
github.com/chzyer/readline v1.5.1 h1:upd/6fQk4src78LMRzh5vItIt361/o4uq553V8B5sGI=
github.com/chzyer/readline v1.5.1/go.mod h1:Eh+b79XXUwfKfcPLepksvw2tcLE/Ct21YObkaSkeBlk=
github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
github.com/chzyer/test v0.0.0-20210722231415-061457976a23 h1:dZ0/VyGgQdVGAss6Ju0dt5P0QltE0SFY5Woh6hbIfiQ=
github.com/chzyer/test v1.0.0 h1:p3BQDXSxOhOG0P9z6/hGnII4LGiEPOYBhs8asl/fC04=
github.com/chzyer/test v1.0.0/go.mod h1:2JlltgoNkt4TW/z9V/IzDdFaMTM2JPIi26O1pF38GC8=
github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible h1:C29Ae4G5GtYyYMm1aztcyj/J5ckgJm2zwdDajFbx1NY=
github.com/circonus-labs/circonusllhist v0.1.3 h1:TJH+oke8D16535+jHExHj4nQvzlZrj7ug5D7I/orNUA=
github.com/client9/misspell v0.3.4 h1:ta993UF76GwbvJcIo3Y68y/M3WxlpEHPWIGDkJYwzJI=
@ -302,7 +315,14 @@ github.com/cloudwego/dynamicgo v0.4.0/go.mod h1:zgWk2oz56EyH790LJSxrTz1j01GJBO96
github.com/cloudwego/frugal v0.2.0/go.mod h1:cpnV6kdRMjN3ylxRo63RNbZ9rBK6oxs70Zk6QZ4Enj4=
github.com/cloudwego/gopkg v0.0.0-20240731030152-5e0df5ad4e40/go.mod h1:32yKw2zkpTMtuX6amJR0EMK79f0vGPr67UcArCOlZLU=
github.com/cloudwego/gopkg v0.1.2/go.mod h1:WoNTdXDPdvL97cBmRUWXVGkh2l2UFmpd9BUvbW2r0Aw=
github.com/cloudwego/hertz v0.6.2/go.mod h1:2em2hGREvCBawsTQcQxyWBGVlCeo+N1pp2q0HkkbwR0=
github.com/cloudwego/hertz v0.6.8/go.mod h1:KhztQcZtMQ46gOjZcmCy557AKD29cbumGEV0BzwevwA=
github.com/cloudwego/hertz v0.7.2/go.mod h1:WliNtVbwihWHHgAaIQEbVXl0O3aWj0ks1eoPrcEAnjs=
github.com/cloudwego/hertz v0.9.5 h1:FXV2YFLrNHRdpwT+OoIvv0wEHUC0Bo68CDPujr6VnWo=
github.com/cloudwego/hertz v0.9.5/go.mod h1:UUBt8N8hSTStz7NEvLZ5mnALpBSofNL4DoYzIIp8UaY=
github.com/cloudwego/kitex v0.11.3/go.mod h1:RHT9ERKFVppJjBfGvwJAPxCIzf4oN1yASW5S4pPZNu4=
github.com/cloudwego/netpoll v0.3.2/go.mod h1:xVefXptcyheopwNDZjDPcfU6kIjZXZ4nY550k1yH9eQ=
github.com/cloudwego/netpoll v0.5.0/go.mod h1:xVefXptcyheopwNDZjDPcfU6kIjZXZ4nY550k1yH9eQ=
github.com/cloudwego/netpoll v0.6.4/go.mod h1:BtM+GjKTdwKoC8IOzD08/+8eEn2gYoiNLipFca6BVXQ=
github.com/cloudwego/thriftgo v0.3.17/go.mod h1:AdLEJJVGW/ZJYvkkYAZf5SaJH+pA3OyC801WSwqcBwI=
github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403 h1:cqQfy1jclcSy/FwLjemeg3SR1yaINm74aQyupQ0Bl8M=
@ -322,9 +342,13 @@ github.com/envoyproxy/go-control-plane v0.12.0/go.mod h1:ZBTaoJ23lqITozF0M6G4/Ir
github.com/envoyproxy/protoc-gen-validate v0.1.0 h1:EQciDnbrYxy13PgWoY8AqoxGiPrpgBZ1R8UNe3ddc+A=
github.com/envoyproxy/protoc-gen-validate v1.0.4 h1:gVPz/FMfvh57HdSJQyvBtF00j8JU4zdyUgIUNhlgg0A=
github.com/envoyproxy/protoc-gen-validate v1.0.4/go.mod h1:qys6tmnRsYrQqIhm2bvKZH4Blx/1gTIZ2UKVY1M+Yew=
github.com/felixge/fgprof v0.9.3 h1:VvyZxILNuCiUCSXtPtYmmtGvb65nqXh2QFWc0Wpf2/g=
github.com/felixge/fgprof v0.9.3/go.mod h1:RdbpDgzqYVh/T9fPELJyV7EYJuHB55UTEULNun8eiPw=
github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg=
github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
github.com/fogleman/gg v1.3.0 h1:/7zJX8F6AaYQc57WQCyN9cAIz+4bCJGO9B+dyW29am8=
github.com/fsnotify/fsnotify v1.5.4 h1:jRbGcIw6P2Meqdwuo0H1p6JVLbL5DHKAKlYndzMwVZI=
github.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmVXmkdnm1bU=
github.com/go-fonts/dejavu v0.1.0 h1:JSajPXURYqpr+Cu8U9bt8K+XcACIHWqWrvWCKyeFmVQ=
github.com/go-fonts/latin-modern v0.2.0 h1:5/Tv1Ek/QCr20C6ZOz15vw3g7GELYL98KWr8Hgo+3vk=
github.com/go-fonts/liberation v0.2.0 h1:jAkAWJP4S+OsrPLZM4/eC9iW7CtHy+HBXrEwZXWo5VM=
@ -361,6 +385,7 @@ github.com/google/go-pkcs11 v0.2.1-0.20230907215043-c6f79328ddf9/go.mod h1:6eQoG
github.com/google/gofuzz v1.0.0 h1:A8PeW59pxE9IoFRqBp37U+mSNaQoZ46F1f0f863XSXw=
github.com/google/martian/v3 v3.3.3 h1:DIhPTQrbPkgs2yJYdXU/eNACCG5DVQjySNRNlflZ9Fc=
github.com/google/martian/v3 v3.3.3/go.mod h1:iEPrYcgCF7jA9OtScMFQyAlZZ4YXTKEtJ1E6RWzmBA0=
github.com/google/pprof v0.0.0-20211214055906-6f57359322fd/go.mod h1:KgnwoLYCZ8IQu3XUZ8Nc/bM9CCZFOyjUNOSygVozoDg=
github.com/google/renameio v0.1.0 h1:GOZbcHa3HfsPKPlmyPyN2KEohoMXOhdMbHrvbpl2QaA=
github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o=
github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw=
@ -371,7 +396,6 @@ github.com/googleapis/gax-go/v2 v2.12.5 h1:8gw9KZK8TiVKB6q3zHY3SBzLnrGp6HQjyfYBY
github.com/googleapis/gax-go/v2 v2.12.5/go.mod h1:BUDKcWo+RaKq5SC9vVYL0wLADa3VcfswbOMMRmB9H3E=
github.com/googleapis/google-cloud-go-testing v0.0.0-20210719221736-1c9a4c676720 h1:zC34cGQu69FG7qzJ3WiKW244WfhDC3xxYMeNOX2gtUQ=
github.com/googleapis/google-cloud-go-testing v0.0.0-20210719221736-1c9a4c676720/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g=
github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8=
github.com/gordonklaus/ineffassign v0.0.0-20200309095847-7953dde2c7bf h1:vc7Dmrk4JwS0ZPS6WZvWlwDflgDTA26jItmbSj83nug=
github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 h1:Ovs26xHkKqVztRpIrF/92BcuyuQ/YW4NSIpoGtfXNho=
github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk=
@ -384,8 +408,24 @@ github.com/hashicorp/go-retryablehttp v0.5.3 h1:QlWt0KvWT0lq8MFppF9tsJGF+ynG7ztc
github.com/hashicorp/go-syslog v1.0.0 h1:KaodqZuhUoZereWVIYmpUgZysurB1kBLX2j0MwMrUAE=
github.com/hashicorp/logutils v1.0.0 h1:dLEQVugN8vlakKOUE3ihGLTZJRB4j+M2cdTm/ORI65Y=
github.com/hashicorp/mdns v1.0.4 h1:sY0CMhFmjIPDMlTB+HfymFHCaYLhgifZ0QhjaYKD/UQ=
github.com/henrylee2cn/ameda v1.4.8/go.mod h1:liZulR8DgHxdK+MEwvZIylGnmcjzQ6N6f2PlWe7nEO4=
github.com/henrylee2cn/ameda v1.4.10 h1:JdvI2Ekq7tapdPsuhrc4CaFiqw6QXFvZIULWJgQyCAk=
github.com/henrylee2cn/ameda v1.4.10/go.mod h1:liZulR8DgHxdK+MEwvZIylGnmcjzQ6N6f2PlWe7nEO4=
github.com/henrylee2cn/goutil v0.0.0-20210127050712-89660552f6f8 h1:yE9ULgp02BhYIrO6sdV/FPe0xQM6fNHkVQW2IAymfM0=
github.com/henrylee2cn/goutil v0.0.0-20210127050712-89660552f6f8/go.mod h1:Nhe/DM3671a5udlv2AdV2ni/MZzgfv2qrPL5nIi3EGQ=
github.com/hertz-contrib/cors v0.1.0 h1:PQ5mATygSMzTlYtfyMyHjobYoJeHKe2Qt3tcAOgbI6E=
github.com/hertz-contrib/cors v0.1.0/go.mod h1:VPReoq+Rvu/lZOfpp5CcX3x4mpZUc3EpSXBcVDcbvOc=
github.com/hertz-contrib/gzip v0.0.3 h1:x+XamFkUYhPPqMzGWejPh1wdDiwkIpHkgRVIg74Xvt4=
github.com/hertz-contrib/gzip v0.0.3/go.mod h1:5rQsvQp1qBmt2TYATbbofNAJBSws2Wwst4EdiHLbx4w=
github.com/hertz-contrib/logger/accesslog v0.0.0-20241107070745-e4ce8c54dd97 h1:7sVi9PFkcVRtL9kbW+8htABmtyCNr/hPxEZ5PMgGIUo=
github.com/hertz-contrib/logger/accesslog v0.0.0-20241107070745-e4ce8c54dd97/go.mod h1:vB3TNAD0IvvDhfY1SWSeCaAVbWleDKEuQ4zOK70hb64=
github.com/hertz-contrib/logger/logrus v1.0.1 h1:1iFu/L92QlFSDXUn77WJL32dk/5HBzAUziG1OqcNMeE=
github.com/hertz-contrib/logger/logrus v1.0.1/go.mod h1:SqDYLwVq5hTItYqimgZQbFCYPOIGNvBTq0Ip2OQwMcY=
github.com/hertz-contrib/pprof v0.1.2 h1:eC4jpg8ToSi+9YEOPIr3jki8e/ix3aFPtphCgJ36T6Q=
github.com/hertz-contrib/pprof v0.1.2/go.mod h1:OKXw5wCUcy1OVwgQLsoCS9JzfcdjoofP+7Uk4c7P9Po=
github.com/iancoleman/strcase v0.3.0 h1:nTXanmYxhfFAMjZL34Ov6gkzEsSJZ5DbhxWjvSASxEI=
github.com/iancoleman/strcase v0.3.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho=
github.com/ianlancetaylor/demangle v0.0.0-20210905161508-09a460cdf81d/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w=
github.com/ianlancetaylor/demangle v0.0.0-20240312041847-bd984b5ce465 h1:KwWnWVWCNtNq/ewIX7HIKnELmEx2nDP42yskD/pi7QE=
github.com/ianlancetaylor/demangle v0.0.0-20240312041847-bd984b5ce465/go.mod h1:gx7rwoVhcfuVKG5uya9Hs3Sxj7EIvldVofAWIUtGouw=
github.com/jpillora/backoff v1.0.0 h1:uvFg412JmmHBHw7iwprIxkPMI+sGQ4kzOWsMeHnm2EA=
@ -421,6 +461,8 @@ github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRW
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs=
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
github.com/nishanths/predeclared v0.0.0-20200524104333-86fad755b4d3 h1:3f0nxAmdj/VoCGN/ijdMy7bj6SBagaqYg1B0hu8clMA=
github.com/nyaruka/phonenumbers v1.0.55 h1:bj0nTO88Y68KeUQ/n3Lo2KgK7lM1hF7L9NFuwcCl3yg=
github.com/nyaruka/phonenumbers v1.0.55/go.mod h1:sDaTZ/KPX5f8qyV9qN+hIm+4ZBARJrupC6LuhshJq1U=
github.com/oleiade/lane v1.0.1 h1:hXofkn7GEOubzTwNpeL9MaNy8WxolCYb9cInAIeqShU=
github.com/phpdave11/gofpdf v1.4.2 h1:KPKiIbfwbvC/wOncwhrpRdXVj2CZTCFlw4wnoyjtHfQ=
github.com/phpdave11/gofpdi v1.0.13 h1:o61duiW8M9sMlkVXWlvP92sZJtGKENvW3VExs6dZukQ=
@ -452,11 +494,14 @@ github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncj
github.com/ruudk/golang-pdf417 v0.0.0-20201230142125-a7e3863a1245 h1:K1Xf3bKttbF+koVGaX5xngRIZ5bVjbmPnaxE/dR08uY=
github.com/ryanuber/columnize v2.1.0+incompatible h1:j1Wcmh8OrK4Q7GXY+V7SVSY8nUWQxHW5TkBe7YUl+2s=
github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88=
github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d h1:zE9ykElWQ6/NYmHa3jpm/yHnI4xSofP+UP6SpjHcSeM=
github.com/smartystreets/goconvey v1.6.4 h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s=
github.com/spf13/afero v1.10.0 h1:EaGW2JJh15aKOejeuJ+wpFSHnbd7GE6Wvp3TsNhb6LY=
github.com/spf13/afero v1.10.0/go.mod h1:UBogFpq8E9Hx+xc5CNTTEpTnuHVmXDwZcZcE1eb/UhQ=
github.com/thrift-iterator/go v0.0.0-20190402154806-9b5a67519118 h1:MIx5ElxAmfKzHGb3ptBbq9YE3weh55cH1Mb7VA4Oxbg=
github.com/tidwall/gjson v1.13.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk=
github.com/tidwall/gjson v1.14.4/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk=
github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926 h1:G3dpKMzFDjgEh2q1Z7zUUtKa8ViPtH+ocF0bE0g00O8=
github.com/v2pro/plz v0.0.0-20221028024117-e5f9aec5b631 h1:WYq/4UeJfAorBY7ncC31bVxI031x4MUCQvF+z12fIYA=
github.com/v2pro/quokka v0.0.0-20171201153428-382cb39c6ee6 h1:hb7P11ytAQIcQ7Cq1uQBNTGgKQle7N+jsP4L72ooa7Q=
@ -508,11 +553,13 @@ golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7w
golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.20.0 h1:Od9JTbYCk261bKm4M/mw7AklTlFYIa0bIp9BgSm1S8Y=
golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.24.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2 h1:IRJeR9r1pYWsHKTRe/IInb7lYvbBVIqOgsX/u0mbOWY=
golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE=
golang.org/x/telemetry v0.0.0-20240521205824-bda55230c457 h1:zf5N6UOrA487eEFacMePxjXAJctxKmyjKUsjA11Uzuk=
@ -554,8 +601,11 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20240701130421-f6361c86f094/go.
google.golang.org/grpc v1.56.3/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s=
google.golang.org/grpc v1.64.0/go.mod h1:oxjF8E3FBnjp+/gVFYdWacaLDx9na1aqy9oovLpxQYg=
google.golang.org/grpc v1.64.1/go.mod h1:hiQF4LFZelK2WKaP6W0L92zGHtiQdZxk8CrSdvyjeP0=
google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
google.golang.org/protobuf v1.34.1/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos=
google.golang.org/protobuf v1.36.3 h1:82DV7MYdb8anAVi3qge1wSnMDrnKK7ebr+I0hHRN1BU=
google.golang.org/protobuf v1.36.3/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
gopkg.in/alecthomas/kingpin.v2 v2.2.6 h1:jMFz6MfLP0/4fUyZle81rXUoxOBFi19VUFKVDOQfozc=
gopkg.in/errgo.v2 v2.1.0 h1:0vLT13EuvQ0hNvakwLuFZ/jYrLp5F3kcWHXdRggjCE8=
honnef.co/go/tools v0.0.1-2020.1.4 h1:UoveltGrhghAA7ePc+e+QYDHXrBps2PqFZiHkGR/xK8=

View File

@ -1,21 +1,36 @@
syntax = "proto3";
package frontend;
package facade;
option go_package = "/facade";
import "api.proto";
service FrontendService {
rpc Login(LoginReq) returns (LoginResp) {}
service FacadeService {
rpc Register(RegisterReq) returns (RegisterResp) {
option (api.post) = "/register";
}
rpc Login(LoginReq) returns (LoginResp) {
option (api.post) = "/login";
}
}
message RegisterReq {
string email = 1[(api.query) = "email"];
string password = 2[(api.query) = "password"];
string confirm_password = 3[(api.query) = "confirm_password"];
}
message RegisterResp {
int32 user_id = 1;
}
message LoginReq {
string username = 1;
string password = 2;
string email = 1[(api.query) = "email"];
string password = 2[(api.query) = "password"];
}
message LoginResp {
string token = 1;
}

View File

@ -1,15 +0,0 @@
// Code generated by Fastpb v0.0.2. DO NOT EDIT.
package api
import (
fmt "fmt"
fastpb "github.com/cloudwego/fastpb"
descriptorpb "google.golang.org/protobuf/types/descriptorpb"
)
var (
_ = fmt.Errorf
_ = fastpb.Skip
)
var _ = descriptorpb.File_google_protobuf_descriptor_proto

View File

@ -1,672 +0,0 @@
// api.proto; 注解拓展
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.28.1
// protoc v5.29.2
// source: api.proto
package api
import (
context "context"
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
descriptorpb "google.golang.org/protobuf/types/descriptorpb"
reflect "reflect"
)
const (
// Verify that this generated code is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
// Verify that runtime/protoimpl is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)
var file_api_proto_extTypes = []protoimpl.ExtensionInfo{
{
ExtendedType: (*descriptorpb.FieldOptions)(nil),
ExtensionType: (*string)(nil),
Field: 50101,
Name: "api.raw_body",
Tag: "bytes,50101,opt,name=raw_body",
Filename: "api.proto",
},
{
ExtendedType: (*descriptorpb.FieldOptions)(nil),
ExtensionType: (*string)(nil),
Field: 50102,
Name: "api.query",
Tag: "bytes,50102,opt,name=query",
Filename: "api.proto",
},
{
ExtendedType: (*descriptorpb.FieldOptions)(nil),
ExtensionType: (*string)(nil),
Field: 50103,
Name: "api.header",
Tag: "bytes,50103,opt,name=header",
Filename: "api.proto",
},
{
ExtendedType: (*descriptorpb.FieldOptions)(nil),
ExtensionType: (*string)(nil),
Field: 50104,
Name: "api.cookie",
Tag: "bytes,50104,opt,name=cookie",
Filename: "api.proto",
},
{
ExtendedType: (*descriptorpb.FieldOptions)(nil),
ExtensionType: (*string)(nil),
Field: 50105,
Name: "api.body",
Tag: "bytes,50105,opt,name=body",
Filename: "api.proto",
},
{
ExtendedType: (*descriptorpb.FieldOptions)(nil),
ExtensionType: (*string)(nil),
Field: 50106,
Name: "api.path",
Tag: "bytes,50106,opt,name=path",
Filename: "api.proto",
},
{
ExtendedType: (*descriptorpb.FieldOptions)(nil),
ExtensionType: (*string)(nil),
Field: 50107,
Name: "api.vd",
Tag: "bytes,50107,opt,name=vd",
Filename: "api.proto",
},
{
ExtendedType: (*descriptorpb.FieldOptions)(nil),
ExtensionType: (*string)(nil),
Field: 50108,
Name: "api.form",
Tag: "bytes,50108,opt,name=form",
Filename: "api.proto",
},
{
ExtendedType: (*descriptorpb.FieldOptions)(nil),
ExtensionType: (*string)(nil),
Field: 50109,
Name: "api.js_conv",
Tag: "bytes,50109,opt,name=js_conv",
Filename: "api.proto",
},
{
ExtendedType: (*descriptorpb.FieldOptions)(nil),
ExtensionType: (*string)(nil),
Field: 50110,
Name: "api.file_name",
Tag: "bytes,50110,opt,name=file_name",
Filename: "api.proto",
},
{
ExtendedType: (*descriptorpb.FieldOptions)(nil),
ExtensionType: (*string)(nil),
Field: 50111,
Name: "api.none",
Tag: "bytes,50111,opt,name=none",
Filename: "api.proto",
},
{
ExtendedType: (*descriptorpb.FieldOptions)(nil),
ExtensionType: (*string)(nil),
Field: 50131,
Name: "api.form_compatible",
Tag: "bytes,50131,opt,name=form_compatible",
Filename: "api.proto",
},
{
ExtendedType: (*descriptorpb.FieldOptions)(nil),
ExtensionType: (*string)(nil),
Field: 50132,
Name: "api.js_conv_compatible",
Tag: "bytes,50132,opt,name=js_conv_compatible",
Filename: "api.proto",
},
{
ExtendedType: (*descriptorpb.FieldOptions)(nil),
ExtensionType: (*string)(nil),
Field: 50133,
Name: "api.file_name_compatible",
Tag: "bytes,50133,opt,name=file_name_compatible",
Filename: "api.proto",
},
{
ExtendedType: (*descriptorpb.FieldOptions)(nil),
ExtensionType: (*string)(nil),
Field: 50134,
Name: "api.none_compatible",
Tag: "bytes,50134,opt,name=none_compatible",
Filename: "api.proto",
},
{
ExtendedType: (*descriptorpb.FieldOptions)(nil),
ExtensionType: (*string)(nil),
Field: 51001,
Name: "api.go_tag",
Tag: "bytes,51001,opt,name=go_tag",
Filename: "api.proto",
},
{
ExtendedType: (*descriptorpb.MethodOptions)(nil),
ExtensionType: (*string)(nil),
Field: 50201,
Name: "api.get",
Tag: "bytes,50201,opt,name=get",
Filename: "api.proto",
},
{
ExtendedType: (*descriptorpb.MethodOptions)(nil),
ExtensionType: (*string)(nil),
Field: 50202,
Name: "api.post",
Tag: "bytes,50202,opt,name=post",
Filename: "api.proto",
},
{
ExtendedType: (*descriptorpb.MethodOptions)(nil),
ExtensionType: (*string)(nil),
Field: 50203,
Name: "api.put",
Tag: "bytes,50203,opt,name=put",
Filename: "api.proto",
},
{
ExtendedType: (*descriptorpb.MethodOptions)(nil),
ExtensionType: (*string)(nil),
Field: 50204,
Name: "api.delete",
Tag: "bytes,50204,opt,name=delete",
Filename: "api.proto",
},
{
ExtendedType: (*descriptorpb.MethodOptions)(nil),
ExtensionType: (*string)(nil),
Field: 50205,
Name: "api.patch",
Tag: "bytes,50205,opt,name=patch",
Filename: "api.proto",
},
{
ExtendedType: (*descriptorpb.MethodOptions)(nil),
ExtensionType: (*string)(nil),
Field: 50206,
Name: "api.options",
Tag: "bytes,50206,opt,name=options",
Filename: "api.proto",
},
{
ExtendedType: (*descriptorpb.MethodOptions)(nil),
ExtensionType: (*string)(nil),
Field: 50207,
Name: "api.head",
Tag: "bytes,50207,opt,name=head",
Filename: "api.proto",
},
{
ExtendedType: (*descriptorpb.MethodOptions)(nil),
ExtensionType: (*string)(nil),
Field: 50208,
Name: "api.any",
Tag: "bytes,50208,opt,name=any",
Filename: "api.proto",
},
{
ExtendedType: (*descriptorpb.MethodOptions)(nil),
ExtensionType: (*string)(nil),
Field: 50301,
Name: "api.gen_path",
Tag: "bytes,50301,opt,name=gen_path",
Filename: "api.proto",
},
{
ExtendedType: (*descriptorpb.MethodOptions)(nil),
ExtensionType: (*string)(nil),
Field: 50302,
Name: "api.api_version",
Tag: "bytes,50302,opt,name=api_version",
Filename: "api.proto",
},
{
ExtendedType: (*descriptorpb.MethodOptions)(nil),
ExtensionType: (*string)(nil),
Field: 50303,
Name: "api.tag",
Tag: "bytes,50303,opt,name=tag",
Filename: "api.proto",
},
{
ExtendedType: (*descriptorpb.MethodOptions)(nil),
ExtensionType: (*string)(nil),
Field: 50304,
Name: "api.name",
Tag: "bytes,50304,opt,name=name",
Filename: "api.proto",
},
{
ExtendedType: (*descriptorpb.MethodOptions)(nil),
ExtensionType: (*string)(nil),
Field: 50305,
Name: "api.api_level",
Tag: "bytes,50305,opt,name=api_level",
Filename: "api.proto",
},
{
ExtendedType: (*descriptorpb.MethodOptions)(nil),
ExtensionType: (*string)(nil),
Field: 50306,
Name: "api.serializer",
Tag: "bytes,50306,opt,name=serializer",
Filename: "api.proto",
},
{
ExtendedType: (*descriptorpb.MethodOptions)(nil),
ExtensionType: (*string)(nil),
Field: 50307,
Name: "api.param",
Tag: "bytes,50307,opt,name=param",
Filename: "api.proto",
},
{
ExtendedType: (*descriptorpb.MethodOptions)(nil),
ExtensionType: (*string)(nil),
Field: 50308,
Name: "api.baseurl",
Tag: "bytes,50308,opt,name=baseurl",
Filename: "api.proto",
},
{
ExtendedType: (*descriptorpb.MethodOptions)(nil),
ExtensionType: (*string)(nil),
Field: 50309,
Name: "api.handler_path",
Tag: "bytes,50309,opt,name=handler_path",
Filename: "api.proto",
},
{
ExtendedType: (*descriptorpb.MethodOptions)(nil),
ExtensionType: (*string)(nil),
Field: 50331,
Name: "api.handler_path_compatible",
Tag: "bytes,50331,opt,name=handler_path_compatible",
Filename: "api.proto",
},
{
ExtendedType: (*descriptorpb.EnumValueOptions)(nil),
ExtensionType: (*int32)(nil),
Field: 50401,
Name: "api.http_code",
Tag: "varint,50401,opt,name=http_code",
Filename: "api.proto",
},
{
ExtendedType: (*descriptorpb.ServiceOptions)(nil),
ExtensionType: (*string)(nil),
Field: 50402,
Name: "api.base_domain",
Tag: "bytes,50402,opt,name=base_domain",
Filename: "api.proto",
},
{
ExtendedType: (*descriptorpb.ServiceOptions)(nil),
ExtensionType: (*string)(nil),
Field: 50731,
Name: "api.base_domain_compatible",
Tag: "bytes,50731,opt,name=base_domain_compatible",
Filename: "api.proto",
},
{
ExtendedType: (*descriptorpb.MessageOptions)(nil),
ExtensionType: (*string)(nil),
Field: 50830,
Name: "api.reserve",
Tag: "bytes,50830,opt,name=reserve",
Filename: "api.proto",
},
}
// Extension fields to descriptorpb.FieldOptions.
var (
// optional string raw_body = 50101;
E_RawBody = &file_api_proto_extTypes[0]
// optional string query = 50102;
E_Query = &file_api_proto_extTypes[1]
// optional string header = 50103;
E_Header = &file_api_proto_extTypes[2]
// optional string cookie = 50104;
E_Cookie = &file_api_proto_extTypes[3]
// optional string body = 50105;
E_Body = &file_api_proto_extTypes[4]
// optional string path = 50106;
E_Path = &file_api_proto_extTypes[5]
// optional string vd = 50107;
E_Vd = &file_api_proto_extTypes[6]
// optional string form = 50108;
E_Form = &file_api_proto_extTypes[7]
// optional string js_conv = 50109;
E_JsConv = &file_api_proto_extTypes[8]
// optional string file_name = 50110;
E_FileName = &file_api_proto_extTypes[9]
// optional string none = 50111;
E_None = &file_api_proto_extTypes[10]
// 50131~50160 used to extend field option by hz
//
// optional string form_compatible = 50131;
E_FormCompatible = &file_api_proto_extTypes[11]
// optional string js_conv_compatible = 50132;
E_JsConvCompatible = &file_api_proto_extTypes[12]
// optional string file_name_compatible = 50133;
E_FileNameCompatible = &file_api_proto_extTypes[13]
// optional string none_compatible = 50134;
E_NoneCompatible = &file_api_proto_extTypes[14]
// optional string go_tag = 51001;
E_GoTag = &file_api_proto_extTypes[15]
)
// Extension fields to descriptorpb.MethodOptions.
var (
// optional string get = 50201;
E_Get = &file_api_proto_extTypes[16]
// optional string post = 50202;
E_Post = &file_api_proto_extTypes[17]
// optional string put = 50203;
E_Put = &file_api_proto_extTypes[18]
// optional string delete = 50204;
E_Delete = &file_api_proto_extTypes[19]
// optional string patch = 50205;
E_Patch = &file_api_proto_extTypes[20]
// optional string options = 50206;
E_Options = &file_api_proto_extTypes[21]
// optional string head = 50207;
E_Head = &file_api_proto_extTypes[22]
// optional string any = 50208;
E_Any = &file_api_proto_extTypes[23]
// optional string gen_path = 50301;
E_GenPath = &file_api_proto_extTypes[24] // The path specified by the user when the client code is generated, with a higher priority than api_version
// optional string api_version = 50302;
E_ApiVersion = &file_api_proto_extTypes[25] // Specify the value of the :version variable in path when the client code is generated
// optional string tag = 50303;
E_Tag = &file_api_proto_extTypes[26] // rpc tag, can be multiple, separated by commas
// optional string name = 50304;
E_Name = &file_api_proto_extTypes[27] // Name of rpc
// optional string api_level = 50305;
E_ApiLevel = &file_api_proto_extTypes[28] // Interface Level
// optional string serializer = 50306;
E_Serializer = &file_api_proto_extTypes[29] // Serialization method
// optional string param = 50307;
E_Param = &file_api_proto_extTypes[30] // Whether client requests take public parameters
// optional string baseurl = 50308;
E_Baseurl = &file_api_proto_extTypes[31] // Baseurl used in ttnet routing
// optional string handler_path = 50309;
E_HandlerPath = &file_api_proto_extTypes[32] // handler_path specifies the path to generate the method
// 50331~50360 used to extend method option by hz
//
// optional string handler_path_compatible = 50331;
E_HandlerPathCompatible = &file_api_proto_extTypes[33] // handler_path specifies the path to generate the method
)
// Extension fields to descriptorpb.EnumValueOptions.
var (
// optional int32 http_code = 50401;
E_HttpCode = &file_api_proto_extTypes[34]
)
// Extension fields to descriptorpb.ServiceOptions.
var (
// optional string base_domain = 50402;
E_BaseDomain = &file_api_proto_extTypes[35]
// 50731~50760 used to extend service option by hz
//
// optional string base_domain_compatible = 50731;
E_BaseDomainCompatible = &file_api_proto_extTypes[36]
)
// Extension fields to descriptorpb.MessageOptions.
var (
// optional string reserve = 50830;
E_Reserve = &file_api_proto_extTypes[37]
)
var File_api_proto protoreflect.FileDescriptor
var file_api_proto_rawDesc = []byte{
0x0a, 0x09, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x03, 0x61, 0x70, 0x69,
0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
0x66, 0x2f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x3a, 0x3a, 0x0a, 0x08, 0x72, 0x61, 0x77, 0x5f, 0x62, 0x6f, 0x64, 0x79, 0x12, 0x1d,
0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xb5, 0x87,
0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x61, 0x77, 0x42, 0x6f, 0x64, 0x79, 0x3a, 0x35,
0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x12, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f,
0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xb6, 0x87, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05,
0x71, 0x75, 0x65, 0x72, 0x79, 0x3a, 0x37, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12,
0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xb7,
0x87, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x3a, 0x37,
0x0a, 0x06, 0x63, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x12, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64,
0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xb8, 0x87, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
0x06, 0x63, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x3a, 0x33, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x12,
0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xb9,
0x87, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x3a, 0x33, 0x0a, 0x04,
0x70, 0x61, 0x74, 0x68, 0x12, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69,
0x6f, 0x6e, 0x73, 0x18, 0xba, 0x87, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74,
0x68, 0x3a, 0x2f, 0x0a, 0x02, 0x76, 0x64, 0x12, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f,
0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xbb, 0x87, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02,
0x76, 0x64, 0x3a, 0x33, 0x0a, 0x04, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x1d, 0x2e, 0x67, 0x6f, 0x6f,
0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65,
0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xbc, 0x87, 0x03, 0x20, 0x01, 0x28,
0x09, 0x52, 0x04, 0x66, 0x6f, 0x72, 0x6d, 0x3a, 0x38, 0x0a, 0x07, 0x6a, 0x73, 0x5f, 0x63, 0x6f,
0x6e, 0x76, 0x12, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
0x73, 0x18, 0xbd, 0x87, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6a, 0x73, 0x43, 0x6f, 0x6e,
0x76, 0x3a, 0x3c, 0x0a, 0x09, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1d,
0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xbe, 0x87,
0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x3a,
0x33, 0x0a, 0x04, 0x6e, 0x6f, 0x6e, 0x65, 0x12, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f,
0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xbf, 0x87, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
0x6e, 0x6f, 0x6e, 0x65, 0x3a, 0x48, 0x0a, 0x0f, 0x66, 0x6f, 0x72, 0x6d, 0x5f, 0x63, 0x6f, 0x6d,
0x70, 0x61, 0x74, 0x69, 0x62, 0x6c, 0x65, 0x12, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f,
0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xd3, 0x87, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e,
0x66, 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x74, 0x69, 0x62, 0x6c, 0x65, 0x3a, 0x4d,
0x0a, 0x12, 0x6a, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x76, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x74,
0x69, 0x62, 0x6c, 0x65, 0x12, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69,
0x6f, 0x6e, 0x73, 0x18, 0xd4, 0x87, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x6a, 0x73, 0x43,
0x6f, 0x6e, 0x76, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x74, 0x69, 0x62, 0x6c, 0x65, 0x3a, 0x51, 0x0a,
0x14, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x61,
0x74, 0x69, 0x62, 0x6c, 0x65, 0x12, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74,
0x69, 0x6f, 0x6e, 0x73, 0x18, 0xd5, 0x87, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x66, 0x69,
0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x74, 0x69, 0x62, 0x6c, 0x65,
0x3a, 0x48, 0x0a, 0x0f, 0x6e, 0x6f, 0x6e, 0x65, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x74, 0x69,
0x62, 0x6c, 0x65, 0x12, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f,
0x6e, 0x73, 0x18, 0xd6, 0x87, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6e, 0x6f, 0x6e, 0x65,
0x43, 0x6f, 0x6d, 0x70, 0x61, 0x74, 0x69, 0x62, 0x6c, 0x65, 0x3a, 0x36, 0x0a, 0x06, 0x67, 0x6f,
0x5f, 0x74, 0x61, 0x67, 0x12, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69,
0x6f, 0x6e, 0x73, 0x18, 0xb9, 0x8e, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x67, 0x6f, 0x54,
0x61, 0x67, 0x3a, 0x32, 0x0a, 0x03, 0x67, 0x65, 0x74, 0x12, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x74, 0x68,
0x6f, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x99, 0x88, 0x03, 0x20, 0x01, 0x28,
0x09, 0x52, 0x03, 0x67, 0x65, 0x74, 0x3a, 0x34, 0x0a, 0x04, 0x70, 0x6f, 0x73, 0x74, 0x12, 0x1e,
0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x9a,
0x88, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x6f, 0x73, 0x74, 0x3a, 0x32, 0x0a, 0x03,
0x70, 0x75, 0x74, 0x12, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x4f, 0x70, 0x74, 0x69,
0x6f, 0x6e, 0x73, 0x18, 0x9b, 0x88, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x70, 0x75, 0x74,
0x3a, 0x38, 0x0a, 0x06, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x1e, 0x2e, 0x67, 0x6f, 0x6f,
0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x74,
0x68, 0x6f, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x9c, 0x88, 0x03, 0x20, 0x01,
0x28, 0x09, 0x52, 0x06, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x3a, 0x36, 0x0a, 0x05, 0x70, 0x61,
0x74, 0x63, 0x68, 0x12, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x4f, 0x70, 0x74, 0x69,
0x6f, 0x6e, 0x73, 0x18, 0x9d, 0x88, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x61, 0x74,
0x63, 0x68, 0x3a, 0x3a, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1e, 0x2e,
0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x9e, 0x88,
0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3a, 0x34,
0x0a, 0x04, 0x68, 0x65, 0x61, 0x64, 0x12, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x4f,
0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x9f, 0x88, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
0x68, 0x65, 0x61, 0x64, 0x3a, 0x32, 0x0a, 0x03, 0x61, 0x6e, 0x79, 0x12, 0x1e, 0x2e, 0x67, 0x6f,
0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65,
0x74, 0x68, 0x6f, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xa0, 0x88, 0x03, 0x20,
0x01, 0x28, 0x09, 0x52, 0x03, 0x61, 0x6e, 0x79, 0x3a, 0x3b, 0x0a, 0x08, 0x67, 0x65, 0x6e, 0x5f,
0x70, 0x61, 0x74, 0x68, 0x12, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x4f, 0x70, 0x74,
0x69, 0x6f, 0x6e, 0x73, 0x18, 0xfd, 0x88, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x65,
0x6e, 0x50, 0x61, 0x74, 0x68, 0x3a, 0x41, 0x0a, 0x0b, 0x61, 0x70, 0x69, 0x5f, 0x76, 0x65, 0x72,
0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x4f, 0x70, 0x74,
0x69, 0x6f, 0x6e, 0x73, 0x18, 0xfe, 0x88, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x70,
0x69, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x32, 0x0a, 0x03, 0x74, 0x61, 0x67, 0x12,
0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
0x66, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18,
0xff, 0x88, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x74, 0x61, 0x67, 0x3a, 0x34, 0x0a, 0x04,
0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x4f, 0x70, 0x74,
0x69, 0x6f, 0x6e, 0x73, 0x18, 0x80, 0x89, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61,
0x6d, 0x65, 0x3a, 0x3d, 0x0a, 0x09, 0x61, 0x70, 0x69, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x12,
0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
0x66, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18,
0x81, 0x89, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x61, 0x70, 0x69, 0x4c, 0x65, 0x76, 0x65,
0x6c, 0x3a, 0x40, 0x0a, 0x0a, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x72, 0x12,
0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
0x66, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18,
0x82, 0x89, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69,
0x7a, 0x65, 0x72, 0x3a, 0x36, 0x0a, 0x05, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x1e, 0x2e, 0x67,
0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d,
0x65, 0x74, 0x68, 0x6f, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x83, 0x89, 0x03,
0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x3a, 0x3a, 0x0a, 0x07, 0x62,
0x61, 0x73, 0x65, 0x75, 0x72, 0x6c, 0x12, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x4f,
0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x84, 0x89, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07,
0x62, 0x61, 0x73, 0x65, 0x75, 0x72, 0x6c, 0x3a, 0x43, 0x0a, 0x0c, 0x68, 0x61, 0x6e, 0x64, 0x6c,
0x65, 0x72, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x12, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64,
0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x85, 0x89, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
0x0b, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x50, 0x61, 0x74, 0x68, 0x3a, 0x58, 0x0a, 0x17,
0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x63, 0x6f, 0x6d,
0x70, 0x61, 0x74, 0x69, 0x62, 0x6c, 0x65, 0x12, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64,
0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x9b, 0x89, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
0x15, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x50, 0x61, 0x74, 0x68, 0x43, 0x6f, 0x6d, 0x70,
0x61, 0x74, 0x69, 0x62, 0x6c, 0x65, 0x3a, 0x40, 0x0a, 0x09, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x63,
0x6f, 0x64, 0x65, 0x12, 0x21, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4f,
0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xe1, 0x89, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08,
0x68, 0x74, 0x74, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x3a, 0x42, 0x0a, 0x0b, 0x62, 0x61, 0x73, 0x65,
0x5f, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63,
0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xe2, 0x89, 0x03, 0x20, 0x01, 0x28, 0x09,
0x52, 0x0a, 0x62, 0x61, 0x73, 0x65, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x3a, 0x57, 0x0a, 0x16,
0x62, 0x61, 0x73, 0x65, 0x5f, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x5f, 0x63, 0x6f, 0x6d, 0x70,
0x61, 0x74, 0x69, 0x62, 0x6c, 0x65, 0x12, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xab, 0x8c, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
0x14, 0x62, 0x61, 0x73, 0x65, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x6d, 0x70, 0x61,
0x74, 0x69, 0x62, 0x6c, 0x65, 0x3a, 0x3b, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65,
0x12, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
0x75, 0x66, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
0x73, 0x18, 0x8e, 0x8d, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x73, 0x65, 0x72,
0x76, 0x65, 0x42, 0x3e, 0x5a, 0x3c, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d,
0x2f, 0x73, 0x75, 0x79, 0x69, 0x69, 0x79, 0x69, 0x69, 0x2f, 0x68, 0x65, 0x72, 0x74, 0x7a, 0x31,
0x30, 0x31, 0x2f, 0x72, 0x70, 0x63, 0x5f, 0x67, 0x65, 0x6e, 0x2f, 0x6b, 0x69, 0x74, 0x65, 0x78,
0x5f, 0x67, 0x65, 0x6e, 0x2f, 0x63, 0x77, 0x67, 0x6f, 0x2f, 0x68, 0x74, 0x74, 0x70, 0x2f, 0x61,
0x70, 0x69,
}
var file_api_proto_goTypes = []interface{}{
(*descriptorpb.FieldOptions)(nil), // 0: google.protobuf.FieldOptions
(*descriptorpb.MethodOptions)(nil), // 1: google.protobuf.MethodOptions
(*descriptorpb.EnumValueOptions)(nil), // 2: google.protobuf.EnumValueOptions
(*descriptorpb.ServiceOptions)(nil), // 3: google.protobuf.ServiceOptions
(*descriptorpb.MessageOptions)(nil), // 4: google.protobuf.MessageOptions
}
var file_api_proto_depIdxs = []int32{
0, // 0: api.raw_body:extendee -> google.protobuf.FieldOptions
0, // 1: api.query:extendee -> google.protobuf.FieldOptions
0, // 2: api.header:extendee -> google.protobuf.FieldOptions
0, // 3: api.cookie:extendee -> google.protobuf.FieldOptions
0, // 4: api.body:extendee -> google.protobuf.FieldOptions
0, // 5: api.path:extendee -> google.protobuf.FieldOptions
0, // 6: api.vd:extendee -> google.protobuf.FieldOptions
0, // 7: api.form:extendee -> google.protobuf.FieldOptions
0, // 8: api.js_conv:extendee -> google.protobuf.FieldOptions
0, // 9: api.file_name:extendee -> google.protobuf.FieldOptions
0, // 10: api.none:extendee -> google.protobuf.FieldOptions
0, // 11: api.form_compatible:extendee -> google.protobuf.FieldOptions
0, // 12: api.js_conv_compatible:extendee -> google.protobuf.FieldOptions
0, // 13: api.file_name_compatible:extendee -> google.protobuf.FieldOptions
0, // 14: api.none_compatible:extendee -> google.protobuf.FieldOptions
0, // 15: api.go_tag:extendee -> google.protobuf.FieldOptions
1, // 16: api.get:extendee -> google.protobuf.MethodOptions
1, // 17: api.post:extendee -> google.protobuf.MethodOptions
1, // 18: api.put:extendee -> google.protobuf.MethodOptions
1, // 19: api.delete:extendee -> google.protobuf.MethodOptions
1, // 20: api.patch:extendee -> google.protobuf.MethodOptions
1, // 21: api.options:extendee -> google.protobuf.MethodOptions
1, // 22: api.head:extendee -> google.protobuf.MethodOptions
1, // 23: api.any:extendee -> google.protobuf.MethodOptions
1, // 24: api.gen_path:extendee -> google.protobuf.MethodOptions
1, // 25: api.api_version:extendee -> google.protobuf.MethodOptions
1, // 26: api.tag:extendee -> google.protobuf.MethodOptions
1, // 27: api.name:extendee -> google.protobuf.MethodOptions
1, // 28: api.api_level:extendee -> google.protobuf.MethodOptions
1, // 29: api.serializer:extendee -> google.protobuf.MethodOptions
1, // 30: api.param:extendee -> google.protobuf.MethodOptions
1, // 31: api.baseurl:extendee -> google.protobuf.MethodOptions
1, // 32: api.handler_path:extendee -> google.protobuf.MethodOptions
1, // 33: api.handler_path_compatible:extendee -> google.protobuf.MethodOptions
2, // 34: api.http_code:extendee -> google.protobuf.EnumValueOptions
3, // 35: api.base_domain:extendee -> google.protobuf.ServiceOptions
3, // 36: api.base_domain_compatible:extendee -> google.protobuf.ServiceOptions
4, // 37: api.reserve:extendee -> google.protobuf.MessageOptions
38, // [38:38] is the sub-list for method output_type
38, // [38:38] is the sub-list for method input_type
38, // [38:38] is the sub-list for extension type_name
0, // [0:38] is the sub-list for extension extendee
0, // [0:0] is the sub-list for field type_name
}
func init() { file_api_proto_init() }
func file_api_proto_init() {
if File_api_proto != nil {
return
}
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_api_proto_rawDesc,
NumEnums: 0,
NumMessages: 0,
NumExtensions: 38,
NumServices: 0,
},
GoTypes: file_api_proto_goTypes,
DependencyIndexes: file_api_proto_depIdxs,
ExtensionInfos: file_api_proto_extTypes,
}.Build()
File_api_proto = out.File
file_api_proto_rawDesc = nil
file_api_proto_goTypes = nil
file_api_proto_depIdxs = nil
}
var _ context.Context

View File

@ -1,167 +0,0 @@
// Code generated by Fastpb v0.0.2. DO NOT EDIT.
package facade
import (
fmt "fmt"
fastpb "github.com/cloudwego/fastpb"
api "github.com/suyiiyii/hertz101/rpc_gen/kitex_gen/cwgo/http/api"
)
var (
_ = fmt.Errorf
_ = fastpb.Skip
)
func (x *LoginReq) FastRead(buf []byte, _type int8, number int32) (offset int, err error) {
switch number {
case 1:
offset, err = x.fastReadField1(buf, _type)
if err != nil {
goto ReadFieldError
}
case 2:
offset, err = x.fastReadField2(buf, _type)
if err != nil {
goto ReadFieldError
}
default:
offset, err = fastpb.Skip(buf, _type, number)
if err != nil {
goto SkipFieldError
}
}
return offset, nil
SkipFieldError:
return offset, fmt.Errorf("%T cannot parse invalid wire-format data, error: %s", x, err)
ReadFieldError:
return offset, fmt.Errorf("%T read field %d '%s' error: %s", x, number, fieldIDToName_LoginReq[number], err)
}
func (x *LoginReq) fastReadField1(buf []byte, _type int8) (offset int, err error) {
x.Username, offset, err = fastpb.ReadString(buf, _type)
return offset, err
}
func (x *LoginReq) fastReadField2(buf []byte, _type int8) (offset int, err error) {
x.Password, offset, err = fastpb.ReadString(buf, _type)
return offset, err
}
func (x *LoginResp) FastRead(buf []byte, _type int8, number int32) (offset int, err error) {
switch number {
case 1:
offset, err = x.fastReadField1(buf, _type)
if err != nil {
goto ReadFieldError
}
default:
offset, err = fastpb.Skip(buf, _type, number)
if err != nil {
goto SkipFieldError
}
}
return offset, nil
SkipFieldError:
return offset, fmt.Errorf("%T cannot parse invalid wire-format data, error: %s", x, err)
ReadFieldError:
return offset, fmt.Errorf("%T read field %d '%s' error: %s", x, number, fieldIDToName_LoginResp[number], err)
}
func (x *LoginResp) fastReadField1(buf []byte, _type int8) (offset int, err error) {
x.Token, offset, err = fastpb.ReadString(buf, _type)
return offset, err
}
func (x *LoginReq) FastWrite(buf []byte) (offset int) {
if x == nil {
return offset
}
offset += x.fastWriteField1(buf[offset:])
offset += x.fastWriteField2(buf[offset:])
return offset
}
func (x *LoginReq) fastWriteField1(buf []byte) (offset int) {
if x.Username == "" {
return offset
}
offset += fastpb.WriteString(buf[offset:], 1, x.GetUsername())
return offset
}
func (x *LoginReq) fastWriteField2(buf []byte) (offset int) {
if x.Password == "" {
return offset
}
offset += fastpb.WriteString(buf[offset:], 2, x.GetPassword())
return offset
}
func (x *LoginResp) FastWrite(buf []byte) (offset int) {
if x == nil {
return offset
}
offset += x.fastWriteField1(buf[offset:])
return offset
}
func (x *LoginResp) fastWriteField1(buf []byte) (offset int) {
if x.Token == "" {
return offset
}
offset += fastpb.WriteString(buf[offset:], 1, x.GetToken())
return offset
}
func (x *LoginReq) Size() (n int) {
if x == nil {
return n
}
n += x.sizeField1()
n += x.sizeField2()
return n
}
func (x *LoginReq) sizeField1() (n int) {
if x.Username == "" {
return n
}
n += fastpb.SizeString(1, x.GetUsername())
return n
}
func (x *LoginReq) sizeField2() (n int) {
if x.Password == "" {
return n
}
n += fastpb.SizeString(2, x.GetPassword())
return n
}
func (x *LoginResp) Size() (n int) {
if x == nil {
return n
}
n += x.sizeField1()
return n
}
func (x *LoginResp) sizeField1() (n int) {
if x.Token == "" {
return n
}
n += fastpb.SizeString(1, x.GetToken())
return n
}
var fieldIDToName_LoginReq = map[int32]string{
1: "Username",
2: "Password",
}
var fieldIDToName_LoginResp = map[int32]string{
1: "Token",
}
var _ = api.File_api_proto

View File

@ -1,234 +0,0 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.28.1
// protoc v5.29.2
// source: facade/facade.proto
package facade
import (
context "context"
_ "github.com/suyiiyii/hertz101/rpc_gen/kitex_gen/cwgo/http/api"
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
reflect "reflect"
sync "sync"
)
const (
// Verify that this generated code is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
// Verify that runtime/protoimpl is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)
type LoginReq struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Username string `protobuf:"bytes,1,opt,name=username,proto3" json:"username,omitempty"`
Password string `protobuf:"bytes,2,opt,name=password,proto3" json:"password,omitempty"`
}
func (x *LoginReq) Reset() {
*x = LoginReq{}
if protoimpl.UnsafeEnabled {
mi := &file_facade_facade_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *LoginReq) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*LoginReq) ProtoMessage() {}
func (x *LoginReq) ProtoReflect() protoreflect.Message {
mi := &file_facade_facade_proto_msgTypes[0]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use LoginReq.ProtoReflect.Descriptor instead.
func (*LoginReq) Descriptor() ([]byte, []int) {
return file_facade_facade_proto_rawDescGZIP(), []int{0}
}
func (x *LoginReq) GetUsername() string {
if x != nil {
return x.Username
}
return ""
}
func (x *LoginReq) GetPassword() string {
if x != nil {
return x.Password
}
return ""
}
type LoginResp struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Token string `protobuf:"bytes,1,opt,name=token,proto3" json:"token,omitempty"`
}
func (x *LoginResp) Reset() {
*x = LoginResp{}
if protoimpl.UnsafeEnabled {
mi := &file_facade_facade_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *LoginResp) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*LoginResp) ProtoMessage() {}
func (x *LoginResp) ProtoReflect() protoreflect.Message {
mi := &file_facade_facade_proto_msgTypes[1]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use LoginResp.ProtoReflect.Descriptor instead.
func (*LoginResp) Descriptor() ([]byte, []int) {
return file_facade_facade_proto_rawDescGZIP(), []int{1}
}
func (x *LoginResp) GetToken() string {
if x != nil {
return x.Token
}
return ""
}
var File_facade_facade_proto protoreflect.FileDescriptor
var file_facade_facade_proto_rawDesc = []byte{
0x0a, 0x13, 0x66, 0x61, 0x63, 0x61, 0x64, 0x65, 0x2f, 0x66, 0x61, 0x63, 0x61, 0x64, 0x65, 0x2e,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x08, 0x66, 0x72, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x64, 0x1a,
0x09, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x42, 0x0a, 0x08, 0x4c, 0x6f,
0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61,
0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61,
0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x02,
0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x21,
0x0a, 0x09, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74,
0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65,
0x6e, 0x32, 0x45, 0x0a, 0x0f, 0x46, 0x72, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x64, 0x53, 0x65, 0x72,
0x76, 0x69, 0x63, 0x65, 0x12, 0x32, 0x0a, 0x05, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x12, 0x12, 0x2e,
0x66, 0x72, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x64, 0x2e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65,
0x71, 0x1a, 0x13, 0x2e, 0x66, 0x72, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x64, 0x2e, 0x4c, 0x6f, 0x67,
0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x42, 0x37, 0x5a, 0x35, 0x67, 0x69, 0x74, 0x68,
0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x75, 0x79, 0x69, 0x69, 0x79, 0x69, 0x69, 0x2f,
0x68, 0x65, 0x72, 0x74, 0x7a, 0x31, 0x30, 0x31, 0x2f, 0x72, 0x70, 0x63, 0x5f, 0x67, 0x65, 0x6e,
0x2f, 0x6b, 0x69, 0x74, 0x65, 0x78, 0x5f, 0x67, 0x65, 0x6e, 0x2f, 0x66, 0x61, 0x63, 0x61, 0x64,
0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
file_facade_facade_proto_rawDescOnce sync.Once
file_facade_facade_proto_rawDescData = file_facade_facade_proto_rawDesc
)
func file_facade_facade_proto_rawDescGZIP() []byte {
file_facade_facade_proto_rawDescOnce.Do(func() {
file_facade_facade_proto_rawDescData = protoimpl.X.CompressGZIP(file_facade_facade_proto_rawDescData)
})
return file_facade_facade_proto_rawDescData
}
var file_facade_facade_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
var file_facade_facade_proto_goTypes = []interface{}{
(*LoginReq)(nil), // 0: frontend.LoginReq
(*LoginResp)(nil), // 1: frontend.LoginResp
}
var file_facade_facade_proto_depIdxs = []int32{
0, // 0: frontend.FrontendService.Login:input_type -> frontend.LoginReq
1, // 1: frontend.FrontendService.Login:output_type -> frontend.LoginResp
1, // [1:2] is the sub-list for method output_type
0, // [0:1] is the sub-list for method input_type
0, // [0:0] is the sub-list for extension type_name
0, // [0:0] is the sub-list for extension extendee
0, // [0:0] is the sub-list for field type_name
}
func init() { file_facade_facade_proto_init() }
func file_facade_facade_proto_init() {
if File_facade_facade_proto != nil {
return
}
if !protoimpl.UnsafeEnabled {
file_facade_facade_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*LoginReq); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_facade_facade_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*LoginResp); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
}
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_facade_facade_proto_rawDesc,
NumEnums: 0,
NumMessages: 2,
NumExtensions: 0,
NumServices: 1,
},
GoTypes: file_facade_facade_proto_goTypes,
DependencyIndexes: file_facade_facade_proto_depIdxs,
MessageInfos: file_facade_facade_proto_msgTypes,
}.Build()
File_facade_facade_proto = out.File
file_facade_facade_proto_rawDesc = nil
file_facade_facade_proto_goTypes = nil
file_facade_facade_proto_depIdxs = nil
}
var _ context.Context
// Code generated by Kitex v0.9.1. DO NOT EDIT.
type FrontendService interface {
Login(ctx context.Context, req *LoginReq) (res *LoginResp, err error)
}

View File

@ -1,49 +0,0 @@
// Code generated by Kitex v0.9.1. DO NOT EDIT.
package frontendservice
import (
"context"
client "github.com/cloudwego/kitex/client"
callopt "github.com/cloudwego/kitex/client/callopt"
facade "github.com/suyiiyii/hertz101/rpc_gen/kitex_gen/facade"
)
// Client is designed to provide IDL-compatible methods with call-option parameter for kitex framework.
type Client interface {
Login(ctx context.Context, Req *facade.LoginReq, callOptions ...callopt.Option) (r *facade.LoginResp, err error)
}
// NewClient creates a client for the service defined in IDL.
func NewClient(destService string, opts ...client.Option) (Client, error) {
var options []client.Option
options = append(options, client.WithDestService(destService))
options = append(options, opts...)
kc, err := client.NewClient(serviceInfo(), options...)
if err != nil {
return nil, err
}
return &kFrontendServiceClient{
kClient: newServiceClient(kc),
}, nil
}
// MustNewClient creates a client for the service defined in IDL. It panics if any error occurs.
func MustNewClient(destService string, opts ...client.Option) Client {
kc, err := NewClient(destService, opts...)
if err != nil {
panic(err)
}
return kc
}
type kFrontendServiceClient struct {
*kClient
}
func (p *kFrontendServiceClient) Login(ctx context.Context, Req *facade.LoginReq, callOptions ...callopt.Option) (r *facade.LoginResp, err error) {
ctx = client.NewCtxWithCallOptions(ctx, callOptions)
return p.kClient.Login(ctx, Req)
}

View File

@ -1,262 +0,0 @@
// Code generated by Kitex v0.9.1. DO NOT EDIT.
package frontendservice
import (
"context"
"errors"
client "github.com/cloudwego/kitex/client"
kitex "github.com/cloudwego/kitex/pkg/serviceinfo"
streaming "github.com/cloudwego/kitex/pkg/streaming"
facade "github.com/suyiiyii/hertz101/rpc_gen/kitex_gen/facade"
proto "google.golang.org/protobuf/proto"
)
var errInvalidMessageType = errors.New("invalid message type for service method handler")
var serviceMethods = map[string]kitex.MethodInfo{
"Login": kitex.NewMethodInfo(
loginHandler,
newLoginArgs,
newLoginResult,
false,
kitex.WithStreamingMode(kitex.StreamingUnary),
),
}
var (
frontendServiceServiceInfo = NewServiceInfo()
frontendServiceServiceInfoForClient = NewServiceInfoForClient()
frontendServiceServiceInfoForStreamClient = NewServiceInfoForStreamClient()
)
// for server
func serviceInfo() *kitex.ServiceInfo {
return frontendServiceServiceInfo
}
// for client
func serviceInfoForStreamClient() *kitex.ServiceInfo {
return frontendServiceServiceInfoForStreamClient
}
// for stream client
func serviceInfoForClient() *kitex.ServiceInfo {
return frontendServiceServiceInfoForClient
}
// NewServiceInfo creates a new ServiceInfo containing all methods
func NewServiceInfo() *kitex.ServiceInfo {
return newServiceInfo(false, true, true)
}
// NewServiceInfo creates a new ServiceInfo containing non-streaming methods
func NewServiceInfoForClient() *kitex.ServiceInfo {
return newServiceInfo(false, false, true)
}
func NewServiceInfoForStreamClient() *kitex.ServiceInfo {
return newServiceInfo(true, true, false)
}
func newServiceInfo(hasStreaming bool, keepStreamingMethods bool, keepNonStreamingMethods bool) *kitex.ServiceInfo {
serviceName := "FrontendService"
handlerType := (*facade.FrontendService)(nil)
methods := map[string]kitex.MethodInfo{}
for name, m := range serviceMethods {
if m.IsStreaming() && !keepStreamingMethods {
continue
}
if !m.IsStreaming() && !keepNonStreamingMethods {
continue
}
methods[name] = m
}
extra := map[string]interface{}{
"PackageName": "frontend",
}
if hasStreaming {
extra["streaming"] = hasStreaming
}
svcInfo := &kitex.ServiceInfo{
ServiceName: serviceName,
HandlerType: handlerType,
Methods: methods,
PayloadCodec: kitex.Protobuf,
KiteXGenVersion: "v0.9.1",
Extra: extra,
}
return svcInfo
}
func loginHandler(ctx context.Context, handler interface{}, arg, result interface{}) error {
switch s := arg.(type) {
case *streaming.Args:
st := s.Stream
req := new(facade.LoginReq)
if err := st.RecvMsg(req); err != nil {
return err
}
resp, err := handler.(facade.FrontendService).Login(ctx, req)
if err != nil {
return err
}
return st.SendMsg(resp)
case *LoginArgs:
success, err := handler.(facade.FrontendService).Login(ctx, s.Req)
if err != nil {
return err
}
realResult := result.(*LoginResult)
realResult.Success = success
return nil
default:
return errInvalidMessageType
}
}
func newLoginArgs() interface{} {
return &LoginArgs{}
}
func newLoginResult() interface{} {
return &LoginResult{}
}
type LoginArgs struct {
Req *facade.LoginReq
}
func (p *LoginArgs) FastRead(buf []byte, _type int8, number int32) (n int, err error) {
if !p.IsSetReq() {
p.Req = new(facade.LoginReq)
}
return p.Req.FastRead(buf, _type, number)
}
func (p *LoginArgs) FastWrite(buf []byte) (n int) {
if !p.IsSetReq() {
return 0
}
return p.Req.FastWrite(buf)
}
func (p *LoginArgs) Size() (n int) {
if !p.IsSetReq() {
return 0
}
return p.Req.Size()
}
func (p *LoginArgs) Marshal(out []byte) ([]byte, error) {
if !p.IsSetReq() {
return out, nil
}
return proto.Marshal(p.Req)
}
func (p *LoginArgs) Unmarshal(in []byte) error {
msg := new(facade.LoginReq)
if err := proto.Unmarshal(in, msg); err != nil {
return err
}
p.Req = msg
return nil
}
var LoginArgs_Req_DEFAULT *facade.LoginReq
func (p *LoginArgs) GetReq() *facade.LoginReq {
if !p.IsSetReq() {
return LoginArgs_Req_DEFAULT
}
return p.Req
}
func (p *LoginArgs) IsSetReq() bool {
return p.Req != nil
}
func (p *LoginArgs) GetFirstArgument() interface{} {
return p.Req
}
type LoginResult struct {
Success *facade.LoginResp
}
var LoginResult_Success_DEFAULT *facade.LoginResp
func (p *LoginResult) FastRead(buf []byte, _type int8, number int32) (n int, err error) {
if !p.IsSetSuccess() {
p.Success = new(facade.LoginResp)
}
return p.Success.FastRead(buf, _type, number)
}
func (p *LoginResult) FastWrite(buf []byte) (n int) {
if !p.IsSetSuccess() {
return 0
}
return p.Success.FastWrite(buf)
}
func (p *LoginResult) Size() (n int) {
if !p.IsSetSuccess() {
return 0
}
return p.Success.Size()
}
func (p *LoginResult) Marshal(out []byte) ([]byte, error) {
if !p.IsSetSuccess() {
return out, nil
}
return proto.Marshal(p.Success)
}
func (p *LoginResult) Unmarshal(in []byte) error {
msg := new(facade.LoginResp)
if err := proto.Unmarshal(in, msg); err != nil {
return err
}
p.Success = msg
return nil
}
func (p *LoginResult) GetSuccess() *facade.LoginResp {
if !p.IsSetSuccess() {
return LoginResult_Success_DEFAULT
}
return p.Success
}
func (p *LoginResult) SetSuccess(x interface{}) {
p.Success = x.(*facade.LoginResp)
}
func (p *LoginResult) IsSetSuccess() bool {
return p.Success != nil
}
func (p *LoginResult) GetResult() interface{} {
return p.Success
}
type kClient struct {
c client.Client
}
func newServiceClient(c client.Client) *kClient {
return &kClient{
c: c,
}
}
func (p *kClient) Login(ctx context.Context, Req *facade.LoginReq) (r *facade.LoginResp, err error) {
var _args LoginArgs
_args.Req = Req
var _result LoginResult
if err = p.c.Call(ctx, "Login", &_args, &_result); err != nil {
return
}
return _result.GetSuccess(), nil
}

View File

@ -1,24 +0,0 @@
// Code generated by Kitex v0.9.1. DO NOT EDIT.
package frontendservice
import (
server "github.com/cloudwego/kitex/server"
facade "github.com/suyiiyii/hertz101/rpc_gen/kitex_gen/facade"
)
// NewInvoker creates a server.Invoker with the given handler and options.
func NewInvoker(handler facade.FrontendService, opts ...server.Option) server.Invoker {
var options []server.Option
options = append(options, opts...)
s := server.NewInvoker(options...)
if err := s.RegisterService(serviceInfo(), handler); err != nil {
panic(err)
}
if err := s.Init(); err != nil {
panic(err)
}
return s
}

View File

@ -1,24 +0,0 @@
// Code generated by Kitex v0.9.1. DO NOT EDIT.
package frontendservice
import (
server "github.com/cloudwego/kitex/server"
facade "github.com/suyiiyii/hertz101/rpc_gen/kitex_gen/facade"
)
// NewServer creates a server.Server with the given handler and options.
func NewServer(handler facade.FrontendService, opts ...server.Option) server.Server {
var options []server.Option
options = append(options, opts...)
svr := server.NewServer(options...)
if err := svr.RegisterService(serviceInfo(), handler); err != nil {
panic(err)
}
return svr
}
func RegisterService(svr server.Server, handler facade.FrontendService, opts ...server.RegisterOption) error {
return svr.RegisterService(serviceInfo(), handler, opts...)
}

View File

@ -1,46 +0,0 @@
package facade
import (
"context"
facade "github.com/suyiiyii/hertz101/rpc_gen/kitex_gen/facade"
"github.com/suyiiyii/hertz101/rpc_gen/kitex_gen/facade/frontendservice"
"github.com/cloudwego/kitex/client"
"github.com/cloudwego/kitex/client/callopt"
)
type RPCClient interface {
KitexClient() frontendservice.Client
Service() string
Login(ctx context.Context, Req *facade.LoginReq, callOptions ...callopt.Option) (r *facade.LoginResp, err error)
}
func NewRPCClient(dstService string, opts ...client.Option) (RPCClient, error) {
kitexClient, err := frontendservice.NewClient(dstService, opts...)
if err != nil {
return nil, err
}
cli := &clientImpl{
service: dstService,
kitexClient: kitexClient,
}
return cli, nil
}
type clientImpl struct {
service string
kitexClient frontendservice.Client
}
func (c *clientImpl) Service() string {
return c.service
}
func (c *clientImpl) KitexClient() frontendservice.Client {
return c.kitexClient
}
func (c *clientImpl) Login(ctx context.Context, Req *facade.LoginReq, callOptions ...callopt.Option) (r *facade.LoginResp, err error) {
return c.kitexClient.Login(ctx, Req, callOptions...)
}

View File

@ -1,17 +0,0 @@
package facade
import (
"context"
facade "github.com/suyiiyii/hertz101/rpc_gen/kitex_gen/facade"
"github.com/cloudwego/kitex/client/callopt"
"github.com/cloudwego/kitex/pkg/klog"
)
func Login(ctx context.Context, req *facade.LoginReq, callOptions ...callopt.Option) (resp *facade.LoginResp, err error) {
resp, err = defaultClient.Login(ctx, req, callOptions...)
if err != nil {
klog.CtxErrorf(ctx, "Login call failed,err =%+v", err)
return nil, err
}
return resp, nil
}

View File

@ -1,40 +0,0 @@
package facade
import (
"sync"
"github.com/cloudwego/kitex/client"
)
var (
// todo edit custom config
defaultClient RPCClient
defaultDstService = "facade"
defaultClientOpts = []client.Option{
client.WithHostPorts("127.0.0.1:8888"),
}
once sync.Once
)
func init() {
DefaultClient()
}
func DefaultClient() RPCClient {
once.Do(func() {
defaultClient = newClient(defaultDstService, defaultClientOpts...)
})
return defaultClient
}
func newClient(dstService string, opts ...client.Option) RPCClient {
c, err := NewRPCClient(dstService, opts...)
if err != nil {
panic("failed to init client: " + err.Error())
}
return c
}
func InitClient(dstService string, opts ...client.Option) {
defaultClient = newClient(dstService, opts...)
}