func IsWellKnownType(typeName string) bool
IsWellKnownType returns true if the provided fully qualified type name is considered 'well-known'.
Binding describes how an HTTP endpoint is bound to a gRPC method.
type Binding struct { // Method is the method which the endpoint is bound to. Method *Method // Index is a zero-origin index of the binding in the target method Index int // PathTmpl is path template where this method is mapped to. PathTmpl httprule.Template // HTTPMethod is the HTTP method which this method is mapped to. HTTPMethod string // PathParams is the list of parameters provided in HTTP request paths. PathParams []Parameter // Body describes parameters provided in HTTP request body. Body *Body // ResponseBody describes field in response struct to marshal in HTTP response body. ResponseBody *Body }
func (b *Binding) ExplicitParams() []string
ExplicitParams returns a list of explicitly bound parameters of "b", i.e. a union of field path for body and field paths for path parameters.
Body describes a http (request|response) body to be sent to the (method|client). This is used in body and response_body options in google.api.HttpRule
type Body struct { // FieldPath is a path to a proto field which the (request|response) body is mapped to. // The (request|response) body is mapped to the (request|response) type itself if FieldPath is empty. FieldPath FieldPath }
func (b Body) AssignableExpr(msgExpr string) string
AssignableExpr returns an assignable expression in Go to be used to initialize method request object. It starts with "msgExpr", which is the go expression of the method request object.
Enum describes a protocol buffer enum types
type Enum struct { // File is the file where the enum is defined File *File // Outers is a list of outer messages if this enum is a nested type. Outers []string *descriptor.EnumDescriptorProto Index int }
func (e *Enum) FQEN() string
FQEN returns a fully qualified enum name of this enum.
func (e *Enum) GoType(currentPackage string) string
GoType returns a go type name for the enum type. It prefixes the type name with the package alias if its belonging package is not "currentPackage".
Field wraps descriptor.FieldDescriptorProto for richer features.
type Field struct { // Message is the message type which this field belongs to. Message *Message // FieldMessage is the message type of the field. FieldMessage *Message *descriptor.FieldDescriptorProto }
FieldPath is a path to a field from a request message.
type FieldPath []FieldPathComponent
func (p FieldPath) AssignableExpr(msgExpr string) string
AssignableExpr is an assignable expression in Go to be used to assign a value to the target field. It starts with "msgExpr", which is the go expression of the method request object.
func (p FieldPath) IsNestedProto3() bool
IsNestedProto3 indicates whether the FieldPath is a nested Proto3 path.
func (p FieldPath) String() string
String returns a string representation of the field path.
FieldPathComponent is a path component in FieldPath
type FieldPathComponent struct { // Name is a name of the proto field which this component corresponds to. // TODO(yugui) is this necessary? Name string // Target is the proto field which this component corresponds to. Target *Field }
func (c FieldPathComponent) AssignableExpr() string
AssignableExpr returns an assignable expression in go for this field.
func (c FieldPathComponent) ValueExpr() string
ValueExpr returns an expression in go for this field.
File wraps descriptor.FileDescriptorProto for richer features.
type File struct { *descriptor.FileDescriptorProto // GoPkg is the go package of the go file generated from this file.. GoPkg GoPackage // Messages is the list of messages defined in this file. Messages []*Message // Enums is the list of enums defined in this file. Enums []*Enum // Services is the list of services defined in this file. Services []*Service }
GoPackage represents a golang package
type GoPackage struct { // Path is the package path to the package. Path string // Name is the package name of the package Name string // Alias is an alias of the package unique within the current invokation of grpc-gateway generator. Alias string }
func (p GoPackage) Standard() bool
Standard returns whether the import is a golang standard package.
func (p GoPackage) String() string
String returns a string representation of this package in the form of import line in golang.
GrpcAPIService represents a stripped down version of google.api.Service . Compare to https://github.com/googleapis/googleapis/blob/master/google/api/service.proto The original imports 23 other protobuf files we are not interested in. If a significant subset (>50%) of these start being reproduced in this file we should swap to using the full generated version instead.
For the purposes of the gateway generator we only consider a small subset of all available features google supports in their service descriptions. Thanks to backwards compatibility guarantees by protobuf it is safe for us to remove the other fields. We also only implement the absolute minimum of protobuf generator boilerplate to use our simplified version. These should be pretty stable too.
type GrpcAPIService struct { // Http Rule. Named Http in the actual proto. Changed to suppress linter warning. HTTP *annotations.Http `protobuf:"bytes,9,opt,name=http" json:"http,omitempty"` }
func (*GrpcAPIService) ProtoMessage()
ProtoMessage returns an empty GrpcAPIService element
func (m *GrpcAPIService) Reset()
Reset resets the GrpcAPIService
func (m *GrpcAPIService) String() string
String returns the string representation of the GrpcAPIService
Message describes a protocol buffer message types
type Message struct { // File is the file where the message is defined File *File // Outers is a list of outer messages if this message is a nested type. Outers []string *descriptor.DescriptorProto Fields []*Field // Index is proto path index of this message in File. Index int }
func (m *Message) FQMN() string
FQMN returns a fully qualified message name of this message.
func (m *Message) GoType(currentPackage string) string
GoType returns a go type name for the message type. It prefixes the type name with the package alias if its belonging package is not "currentPackage".
Method wraps descriptor.MethodDescriptorProto for richer features.
type Method struct { // Service is the service which this method belongs to. Service *Service *descriptor.MethodDescriptorProto // RequestType is the message type of requests to this method. RequestType *Message // ResponseType is the message type of responses from this method. ResponseType *Message Bindings []*Binding }
func (m *Method) FQMN() string
FQMN returns a fully qualified rpc method name of this method.
Parameter is a parameter provided in http requests
type Parameter struct { // FieldPath is a path to a proto field which this parameter is mapped to. FieldPath // Target is the proto field which this parameter is mapped to. Target *Field // Method is the method which this parameter is used for. Method *Method }
func (p Parameter) ConvertFuncExpr() (string, error)
ConvertFuncExpr returns a go expression of a converter function. The converter function converts a string into a value for the parameter.
func (p Parameter) IsEnum() bool
IsEnum returns true if the field is an enum type, otherwise false is returned.
func (p Parameter) IsProto2() bool
IsProto2 returns true if the field is proto2, otherwise false is returned.
func (p Parameter) IsRepeated() bool
IsRepeated returns true if the field is repeated, otherwise false is returned.
Registry is a registry of information extracted from plugin.CodeGeneratorRequest.
type Registry struct {
// contains filtered or unexported fields
}
func NewRegistry() *Registry
NewRegistry returns a new Registry.
func (r *Registry) AddExternalHTTPRule(qualifiedMethodName string, rule *annotations.HttpRule)
AddExternalHTTPRule adds an external http rule for the given fully qualified service method name
func (r *Registry) AddPkgMap(file, protoPkg string)
AddPkgMap adds a mapping from a .proto file to proto package name.
func (r *Registry) GetAllFQENs() []string
GetAllFQENs returns a list of all FQENs
func (r *Registry) GetAllFQMNs() []string
GetAllFQMNs returns a list of all FQMNs
func (r *Registry) GetAllowColonFinalSegments() bool
GetAllowColonFinalSegments returns allowColonFinalSegments
func (r *Registry) GetDisableDefaultErrors() bool
GetDisableDefaultErrors returns disableDefaultErrors
func (r *Registry) GetEnumsAsInts() bool
GetEnumsAsInts returns enumsAsInts
func (r *Registry) GetMergeFileName() string
GetMergeFileName return the target merge swagger file name
func (r *Registry) GetOmitPackageDoc() bool
GetOmitPackageDoc returns whether a package comment will be omitted from the generated code
func (r *Registry) GetRepeatedPathParamSeparator() rune
GetRepeatedPathParamSeparator returns a rune spcifying how path parameter repeated fields are separated.
func (r *Registry) GetRepeatedPathParamSeparatorName() string
GetRepeatedPathParamSeparatorName returns the name path parameter repeated fields repeatedFieldSeparator. I.e. 'csv', 'pipe', 'ssv' or 'tsv'
func (r *Registry) GetSimpleOperationIDs() bool
GetSimpleOperationIDs returns simpleOperationIDs
func (r *Registry) GetUseFQNForSwaggerName() bool
GetUseFQNForSwaggerName returns useFQNForSwaggerName
func (r *Registry) GetUseGoTemplate() bool
GetUseGoTemplate returns useGoTemplate
func (r *Registry) GetUseJSONNamesForFields() bool
GetUseJSONNamesForFields returns useJSONNamesForFields
func (r *Registry) IsAllowMerge() bool
IsAllowMerge whether generation one swagger file out of multiple protos
func (r *Registry) IsAllowRepeatedFieldsInBody() bool
IsAllowRepeatedFieldsInBody checks if repeated field can be used in `body` and `response_body` (`google.api.http` annotation option) field path or not
func (r *Registry) IsIncludePackageInTags() bool
IsIncludePackageInTags checks whether the package name defined in the `package` directive in the proto file can be prepended to the gRPC service name in the `Tags` field of every operation.
func (r *Registry) Load(req *plugin.CodeGeneratorRequest) error
Load loads definitions of services, methods, messages, enumerations and fields from "req".
func (r *Registry) LoadGrpcAPIServiceFromYAML(yamlFile string) error
LoadGrpcAPIServiceFromYAML loads a gRPC API Configuration from the given YAML file and registers the HttpRule descriptions contained in it as externalHTTPRules in the given registry. This must be done before loading the proto file.
You can learn more about gRPC API Service descriptions from google's documentation at https://cloud.google.com/endpoints/docs/grpc/grpc-service-config
Note that for the purposes of the gateway generator we only consider a subset of all available features google supports in their service descriptions.
func (r *Registry) LookupEnum(location, name string) (*Enum, error)
LookupEnum looks up a enum type by "name". It tries to resolve "name" from "location" if "name" is a relative enum name.
func (r *Registry) LookupExternalHTTPRules(qualifiedMethodName string) []*annotations.HttpRule
LookupExternalHTTPRules looks up external http rules by fully qualified service method name
func (r *Registry) LookupFile(name string) (*File, error)
LookupFile looks up a file by name.
func (r *Registry) LookupMsg(location, name string) (*Message, error)
LookupMsg looks up a message type by "name". It tries to resolve "name" from "location" if "name" is a relative message name.
func (r *Registry) ReserveGoPackageAlias(alias, pkgpath string) error
ReserveGoPackageAlias reserves the unique alias of go package. If succeeded, the alias will be never used for other packages in generated go files. If failed, the alias is already taken by another package, so you need to use another alias for the package in your go files.
func (r *Registry) SetAllowColonFinalSegments(use bool)
SetAllowColonFinalSegments sets allowColonFinalSegments
func (r *Registry) SetAllowDeleteBody(allow bool)
SetAllowDeleteBody controls whether http delete methods may have a body or fail loading if encountered.
func (r *Registry) SetAllowMerge(allow bool)
SetAllowMerge controls whether generation one swagger file out of multiple protos
func (r *Registry) SetAllowRepeatedFieldsInBody(allow bool)
SetAllowRepeatedFieldsInBody controls whether repeated field can be used in `body` and `response_body` (`google.api.http` annotation option) field path or not
func (r *Registry) SetDisableDefaultErrors(use bool)
SetDisableDefaultErrors sets disableDefaultErrors
func (r *Registry) SetEnumsAsInts(enumsAsInts bool)
SetEnumsAsInts set enumsAsInts
func (r *Registry) SetGenerateUnboundMethods(generate bool)
SetGenerateUnboundMethods sets generateUnboundMethods
func (r *Registry) SetImportPath(importPath string)
SetImportPath registers the importPath which is used as the package if no input files declare go_package. If it contains slashes, everything up to the rightmost slash is ignored.
func (r *Registry) SetIncludePackageInTags(allow bool)
SetIncludePackageInTags controls whether the package name defined in the `package` directive in the proto file can be prepended to the gRPC service name in the `Tags` field of every operation.
func (r *Registry) SetMergeFileName(mergeFileName string)
SetMergeFileName controls the target swagger file name out of multiple protos
func (r *Registry) SetOmitPackageDoc(omit bool)
SetOmitPackageDoc controls whether the generated code contains a package comment (if set to false, it will contain one)
func (r *Registry) SetPrefix(prefix string)
SetPrefix registers the prefix to be added to go package paths generated from proto package names.
func (r *Registry) SetRepeatedPathParamSeparator(name string) error
SetRepeatedPathParamSeparator sets how path parameter repeated fields are separated. Allowed names are 'csv', 'pipe', 'ssv' and 'tsv'.
func (r *Registry) SetSimpleOperationIDs(use bool)
SetSimpleOperationIDs sets simpleOperationIDs
func (r *Registry) SetUseFQNForSwaggerName(use bool)
SetUseFQNForSwaggerName sets useFQNForSwaggerName
func (r *Registry) SetUseGoTemplate(use bool)
SetUseGoTemplate sets useGoTemplate
func (r *Registry) SetUseJSONNamesForFields(use bool)
SetUseJSONNamesForFields sets useJSONNamesForFields
func (r *Registry) SetWarnOnUnboundMethods(warn bool)
SetWarnOnUnboundMethods sets warnOnUnboundMethods
func (r *Registry) UnboundExternalHTTPRules() []string
UnboundExternalHTTPRules returns the list of External HTTPRules which does not have a matching method in the registry
Service wraps descriptor.ServiceDescriptorProto for richer features.
type Service struct { // File is the file where this service is defined. File *File *descriptor.ServiceDescriptorProto // Methods is the list of methods defined in this service. Methods []*Method }
func (s *Service) FQSN() string
FQSN returns the fully qualified service name of this service.