parse

package
v1.1.38 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 26, 2024 License: MIT Imports: 8 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func GetImportPkg

func GetImportPkg(services []*PbService) []byte

GetImportPkg 获取导入包 参数:

  • services: []*PbService, 服务列表

返回值:

  • []byte, 导入包字符串

func GetSourceImportPkg

func GetSourceImportPkg(services []*PbService) []byte

GetSourceImportPkg 获取源导入包 参数:

  • services: []*PbService, 服务列表

返回值:

  • []byte, 源导入包字符串

Types

type Field

type Field struct {
	Name      string // 字段名称
	FieldType string // 字段类型
	Comment   string // 字段注释
}

Field 表示消息字段

func (Field) GoTypeZero

func (r Field) GoTypeZero() string

GoTypeZero 返回给定类型的默认零值

type HTTPPbService

type HTTPPbService struct {
	Name      string // 服务名称,例如 Greeter
	LowerName string // 服务名称首字母小写,例如 greeter

	Methods       []*RPCMethod // 服务的方法
	UniqueMethods []*RPCMethod

	ImportPkgMap map[string]string // 导入包映射,例如 [userV1]:[userV1 "user/api/user/v1"]
}

HTTPPbService 表示 HTTP 服务的字段

func ParseHTTPPbServices

func ParseHTTPPbServices(file *protogen.File) []*HTTPPbService

ParseHTTPPbServices 解析所有 HTTP 服务 参数:

  • file: *protogen.File, 即当前解析的 proto 文件

返回值:

  • []*HTTPPbService, 解析后的所有 HTTP 服务对象

type HTTPPbServices

type HTTPPbServices []*HTTPPbService

func (HTTPPbServices) MergeImportPkgPath

func (services HTTPPbServices) MergeImportPkgPath() string

MergeImportPkgPath merge import package path

type PbService

type PbService struct {
	Name      string           // 服务名称,例如 Greeter
	LowerName string           // 服务名称首字母小写,例如 greeter
	Methods   []*ServiceMethod // 服务的方法

	CutServiceName      string // 去掉 Service 后缀的服务名称,例如 GreeterService --> Greeter
	LowerCutServiceName string // 去掉 Service 后缀的服务名称首字母小写,例如 GreeterService --> greeter

	ImportPkgMap map[string]string // 导入包映射,例如 [userV1]:[userV1 "user/api/user/v1"]

	ProtoFileDir string // proto 文件目录,例如 api/user/v1
	ProtoPkgName string // proto 文件的包名称,例如 userV1
	ModuleName   string // 模块名称
}

PbService 表示服务的字段

func GetServices

func GetServices(file *protogen.File, moduleName string) []*PbService

GetServices 解析所有服务 参数:

  • file: *protogen.File, 即当前解析的 proto 文件
  • moduleName: string, 模块名称

返回值:

  • []*PbService, 解析后的所有服务对象

func (*PbService) RandNumber

func (s *PbService) RandNumber() int

RandNumber 返回 1 到 100 之间的随机数

type RPCMethod

type RPCMethod struct {
	Name       string // 方法名称,例如 SayHello
	Num        int    // 一个 RPC 方法可以对应多个 HTTP 请求
	Request    string // 请求消息类型,例如 SayHelloReq
	Reply      string // 响应消息类型,例如 SayHelloResp
	InvokeType int    // 调用类型: 0-单次调用, 1-客户端流式, 2-服务端流式, 3-双向流式

	// HTTP 规则相关信息
	Path         string // 请求路径
	Method       string // HTTP 方法
	Body         string
	ResponseBody string

	CustomKind string
	Selector   string
	// 如果 Selector 是 [ctx], 则 IsPassGinContext 为 true
	// 如果 Selector 是 [no_bind], 则 IsPassGinContext 和 IsIgnoreShouldBind 都为 true
	IsPassGinContext bool
	// 如果 Selector 是 [no_bind], 则忽略 c.ShouldBindXXX,必须在 RPC 方法中手动调用 c.ShouldBindXXX()
	IsIgnoreShouldBind bool

	RequestImportPkgName string // 例如空或 userV1
	ReplyImportPkgName   string // 例如空或 userV1

	ProtoSelfPkgPath string              // 例如 "module/api/user/v1"
	ImportPkgPaths   map[string]struct{} // 排除 ProtoSelfPkgPath
}

RPCMethod 描述一个 RPC 方法

func GetMethods

func GetMethods(m *protogen.Method, protoSelfPkgPath string) []*RPCMethod

GetMethods 获取 RPC 方法描述 参数:

  • m: *protogen.Method, 即当前解析的 RPC 方法
  • protoSelfPkgPath: string, 当前 proto 文件的包路径

返回值:

  • []*RPCMethod, 包含所有解析出的 HTTP 规则对应的 RPC 方法描述

func (*RPCMethod) HandlerName

func (m *RPCMethod) HandlerName() string

HandlerName 返回 gin 处理器名称

func (*RPCMethod) HasPathParams

func (m *RPCMethod) HasPathParams() bool

HasPathParams 判断路径是否包含路由参数

func (*RPCMethod) InitPathParams

func (m *RPCMethod) InitPathParams()

InitPathParams 将路径参数转换为 Gin 支持的格式

type ServiceMethod

type ServiceMethod struct {
	MethodName    string // 方法名称,例如 Create
	Request       string // 请求消息类型,例如 CreateRequest
	RequestFields []*Field
	Reply         string // 响应消息类型,例如 CreateReply
	ReplyFields   []*Field
	Comment       string // 注释,例如 Create a record
	InvokeType    int    // 调用类型: 0-单次调用, 1-客户端流式, 2-服务端流式, 3-双向流式

	ServiceName         string // 服务名称,例如 Greeter
	LowerServiceName    string // 服务名称首字母小写,例如 greeter
	LowerCutServiceName string // 去掉 Service 后缀的服务名称首字母小写,例如 GreeterService --> greeter

	// HTTP 规则
	Path   string // 请求路径
	Method string // HTTP 方法
	Body   string

	IsPassGinContext   bool // 是否传递 gin.Context
	IsIgnoreShouldBind bool // 是否忽略 ShouldBindXXX

	RequestImportPkgName string // 请求消息的导入包名称,例如 userV1
	ReplyImportPkgName   string // 响应消息的导入包名称,例如 userV1
	ProtoPkgName         string // proto 文件的包名称,例如 userV1
}

ServiceMethod 表示 RPC 方法的字段

func (*ServiceMethod) AddOne

func (t *ServiceMethod) AddOne(i int) int

AddOne 计数器加一

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL