Documentation ¶
Index ¶
- func IsWellKnownType(typeName string) bool
- type Binding
- type Body
- type Enum
- type Field
- type FieldPath
- type FieldPathComponent
- type File
- type GoPackage
- type Message
- type Method
- type Parameter
- type Registry
- func (r *Registry) AddExternalHTTPRule(qualifiedMethodName string, rule *annotations.HttpRule)
- func (r *Registry) AddPkgMap(file, protoPkg string)
- func (r *Registry) CheckDuplicateAnnotation(httpMethod string, httpTemplate string) error
- func (r *Registry) FieldName(f *Field) string
- func (r *Registry) GetAllFQENs() []string
- func (r *Registry) GetAllFQMNs() []string
- func (r *Registry) GetDisableDefaultErrors() bool
- func (r *Registry) GetEnumsAsInts() bool
- func (r *Registry) GetMergeFileName() string
- func (r *Registry) GetOmitPackageDoc() bool
- func (r *Registry) GetOpenAPIFieldOption(qualifiedField string) (*options.JSONSchema, bool)
- func (r *Registry) GetOpenAPIFileOption(file string) (*options.Swagger, bool)
- func (r *Registry) GetOpenAPIMessageOption(qualifiedMessage string) (*options.Schema, bool)
- func (r *Registry) GetOpenAPIMethodOption(qualifiedMethod string) (*options.Operation, bool)
- func (r *Registry) GetOpenAPINamingStrategy() string
- func (r *Registry) GetOpenAPIServiceOption(qualifiedService string) (*options.Tag, bool)
- func (r *Registry) GetProto3OptionalNullable() bool
- func (r *Registry) GetRecursiveDepth() int
- func (r *Registry) GetRepeatedPathParamSeparator() rune
- func (r *Registry) GetRepeatedPathParamSeparatorName() string
- func (r *Registry) GetSimpleOperationIDs() bool
- func (r *Registry) GetUseFQNForOpenAPIName() bool
- func (r *Registry) GetUseGoTemplate() bool
- func (r *Registry) GetUseJSONNamesForFields() bool
- func (r *Registry) IsAllowMerge() bool
- func (r *Registry) IsAllowRepeatedFieldsInBody() bool
- func (r *Registry) IsIncludePackageInTags() bool
- func (r *Registry) Load(req *pluginpb.CodeGeneratorRequest) error
- func (r *Registry) LoadFromPlugin(gen *protogen.Plugin) error
- func (r *Registry) LoadGrpcAPIServiceFromYAML(yamlFile string) error
- func (r *Registry) LoadOpenAPIConfigFromYAML(yamlFile string) error
- func (r *Registry) LookupEnum(location, name string) (*Enum, error)
- func (r *Registry) LookupExternalHTTPRules(qualifiedMethodName string) []*annotations.HttpRule
- func (r *Registry) LookupFile(name string) (*File, error)
- func (r *Registry) LookupMsg(location, name string) (*Message, error)
- func (r *Registry) RegisterOpenAPIOptions(opts *openapiconfig.OpenAPIOptions) error
- func (r *Registry) ReserveGoPackageAlias(alias, pkgpath string) error
- func (r *Registry) SetAllowDeleteBody(allow bool)
- func (r *Registry) SetAllowMerge(allow bool)
- func (r *Registry) SetAllowRepeatedFieldsInBody(allow bool)
- func (r *Registry) SetDisableDefaultErrors(use bool)
- func (r *Registry) SetEnumsAsInts(enumsAsInts bool)
- func (r *Registry) SetGenerateUnboundMethods(generate bool)
- func (r *Registry) SetIncludePackageInTags(allow bool)
- func (r *Registry) SetMergeFileName(mergeFileName string)
- func (r *Registry) SetOmitPackageDoc(omit bool)
- func (r *Registry) SetOpenAPINamingStrategy(strategy string)
- func (r *Registry) SetPrefix(prefix string)
- func (r *Registry) SetProto3OptionalNullable(proto3OtionalNullable bool)
- func (r *Registry) SetRecursiveDepth(count int)
- func (r *Registry) SetRepeatedPathParamSeparator(name string) error
- func (r *Registry) SetSimpleOperationIDs(use bool)
- func (r *Registry) SetStandalone(standalone bool)
- func (r *Registry) SetUseFQNForOpenAPIName(use bool)
- func (r *Registry) SetUseGoTemplate(use bool)
- func (r *Registry) SetUseJSONNamesForFields(use bool)
- func (r *Registry) SetWarnOnUnboundMethods(warn bool)
- func (r *Registry) UnboundExternalHTTPRules() []string
- type ResponseFile
- type Service
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func IsWellKnownType ¶
IsWellKnownType returns true if the provided fully qualified type name is considered 'well-known'.
Types ¶
type Binding ¶
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 }
Binding describes how an HTTP endpoint is bound to a gRPC method.
func (*Binding) ExplicitParams ¶
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.
type Body ¶
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 }
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
func (Body) AssignableExpr ¶
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.
type Enum ¶
type Enum struct { *descriptorpb.EnumDescriptorProto // 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 // Index is a enum index value. Index int // ForcePrefixedName when set to true, prefixes a type with a package prefix. ForcePrefixedName bool }
Enum describes a protocol buffer enum types.
type Field ¶
type Field struct { *descriptorpb.FieldDescriptorProto // Message is the message type which this field belongs to. Message *Message // FieldMessage is the message type of the field. FieldMessage *Message // ForcePrefixedName when set to true, prefixes a type with a package prefix. ForcePrefixedName bool }
Field wraps descriptorpb.FieldDescriptorProto for richer features.
type FieldPath ¶
type FieldPath []FieldPathComponent
FieldPath is a path to a field from a request message.
func (FieldPath) AssignableExpr ¶
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 (FieldPath) IsNestedProto3 ¶
IsNestedProto3 indicates whether the FieldPath is a nested Proto3 path.
func (FieldPath) IsOptionalProto3 ¶
IsOptionalProto3 indicates whether the FieldPath is a proto3 optional field.
type FieldPathComponent ¶
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 }
FieldPathComponent is a path component in FieldPath
func (FieldPathComponent) AssignableExpr ¶
func (c FieldPathComponent) AssignableExpr() string
AssignableExpr returns an assignable expression in go for this field.
func (FieldPathComponent) ValueExpr ¶
func (c FieldPathComponent) ValueExpr() string
ValueExpr returns an expression in go for this field.
type File ¶
type File struct { *descriptorpb.FileDescriptorProto // GoPkg is the go package of the go file generated from this file. GoPkg GoPackage // GeneratedFilenamePrefix is used to construct filenames for generated // files associated with this source file. // // For example, the source file "dir/foo.proto" might have a filename prefix // of "dir/foo". Appending ".pb.go" produces an output file of "dir/foo.pb.go". GeneratedFilenamePrefix string // 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 }
File wraps descriptorpb.FileDescriptorProto for richer features.
type GoPackage ¶
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 invocation of gRPC-Gateway generator. Alias string }
GoPackage represents a golang package.
type Message ¶
type Message struct { *descriptorpb.DescriptorProto // 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 // Fields is a list of message fields. Fields []*Field // Index is proto path index of this message in File. Index int // ForcePrefixedName when set to true, prefixes a type with a package prefix. ForcePrefixedName bool }
Message describes a protocol buffer message types.
type Method ¶
type Method struct { *descriptorpb.MethodDescriptorProto // Service is the service which this method belongs to. Service *Service // 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 }
Method wraps descriptorpb.MethodDescriptorProto for richer features.
type Parameter ¶
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 }
Parameter is a parameter provided in http requests
func (Parameter) ConvertFuncExpr ¶
ConvertFuncExpr returns a go expression of a converter function. The converter function converts a string into a value for the parameter.
func (Parameter) IsEnum ¶
IsEnum returns true if the field is an enum type, otherwise false is returned.
func (Parameter) IsProto2 ¶
IsProto2 returns true if the field is proto2, otherwise false is returned.
func (Parameter) IsRepeated ¶
IsRepeated returns true if the field is repeated, otherwise false is returned.
type Registry ¶
type Registry struct {
// contains filtered or unexported fields
}
Registry is a registry of information extracted from pluginpb.CodeGeneratorRequest.
func (*Registry) AddExternalHTTPRule ¶
func (r *Registry) AddExternalHTTPRule(qualifiedMethodName string, rule *annotations.HttpRule)
AddExternalHTTPRule adds an external http rule for the given fully qualified service method name
func (*Registry) CheckDuplicateAnnotation ¶
func (*Registry) GetAllFQENs ¶
GetAllFQENs returns a list of all FQENs
func (*Registry) GetAllFQMNs ¶
GetAllFQMNs returns a list of all FQMNs
func (*Registry) GetDisableDefaultErrors ¶
GetDisableDefaultErrors returns disableDefaultErrors
func (*Registry) GetEnumsAsInts ¶
GetEnumsAsInts returns enumsAsInts
func (*Registry) GetMergeFileName ¶
GetMergeFileName return the target merge OpenAPI file name
func (*Registry) GetOmitPackageDoc ¶
GetOmitPackageDoc returns whether a package comment will be omitted from the generated code
func (*Registry) GetOpenAPIFieldOption ¶
func (r *Registry) GetOpenAPIFieldOption(qualifiedField string) (*options.JSONSchema, bool)
GetOpenAPIFieldOption returns a registered OpenAPI option for a field
func (*Registry) GetOpenAPIFileOption ¶
GetOpenAPIFileOption returns a registered OpenAPI option for a file
func (*Registry) GetOpenAPIMessageOption ¶
GetOpenAPIMessageOption returns a registered OpenAPI option for a message
func (*Registry) GetOpenAPIMethodOption ¶
GetOpenAPIMethodOption returns a registered OpenAPI option for a method
func (*Registry) GetOpenAPINamingStrategy ¶
GetOpenAPINamingStrategy retrieves the naming strategy that is in use.
func (*Registry) GetOpenAPIServiceOption ¶
GetOpenAPIServiceOption returns a registered OpenAPI option for a service
func (*Registry) GetProto3OptionalNullable ¶
GetProto3OptionalNullable returns proto3OtionalNullable
func (*Registry) GetRecursiveDepth ¶
GetRecursiveDepth returns the max recursion count
func (*Registry) GetRepeatedPathParamSeparator ¶
GetRepeatedPathParamSeparator returns a rune spcifying how path parameter repeated fields are separated.
func (*Registry) GetRepeatedPathParamSeparatorName ¶
GetRepeatedPathParamSeparatorName returns the name path parameter repeated fields repeatedFieldSeparator. I.e. 'csv', 'pipe', 'ssv' or 'tsv'
func (*Registry) GetSimpleOperationIDs ¶
GetSimpleOperationIDs returns simpleOperationIDs
func (*Registry) GetUseFQNForOpenAPIName ¶
GetUseFQNForOpenAPIName returns useFQNForOpenAPIName Deprecated: Use GetOpenAPINamingStrategy().
func (*Registry) GetUseGoTemplate ¶
GetUseGoTemplate returns useGoTemplate
func (*Registry) GetUseJSONNamesForFields ¶
GetUseJSONNamesForFields returns useJSONNamesForFields
func (*Registry) IsAllowMerge ¶
IsAllowMerge whether generation one OpenAPI file out of multiple protos
func (*Registry) IsAllowRepeatedFieldsInBody ¶
IsAllowRepeatedFieldsInBody checks if repeated field can be used in `body` and `response_body` (`google.api.http` annotation option) field path or not
func (*Registry) IsIncludePackageInTags ¶
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 (*Registry) Load ¶
func (r *Registry) Load(req *pluginpb.CodeGeneratorRequest) error
Load loads definitions of services, methods, messages, enumerations and fields from "req".
func (*Registry) LoadGrpcAPIServiceFromYAML ¶
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 (*Registry) LoadOpenAPIConfigFromYAML ¶
LoadOpenAPIConfigFromYAML loads an OpenAPI Configuration from the given YAML file and registers the OpenAPI options the given registry. This must be done after loading the proto file.
func (*Registry) LookupEnum ¶
LookupEnum looks up a enum type by "name". It tries to resolve "name" from "location" if "name" is a relative enum name.
func (*Registry) LookupExternalHTTPRules ¶
func (r *Registry) LookupExternalHTTPRules(qualifiedMethodName string) []*annotations.HttpRule
LookupExternalHTTPRules looks up external http rules by fully qualified service method name
func (*Registry) LookupFile ¶
LookupFile looks up a file by name.
func (*Registry) LookupMsg ¶
LookupMsg looks up a message type by "name". It tries to resolve "name" from "location" if "name" is a relative message name.
func (*Registry) RegisterOpenAPIOptions ¶
func (r *Registry) RegisterOpenAPIOptions(opts *openapiconfig.OpenAPIOptions) error
RegisterOpenAPIOptions registers OpenAPI options
func (*Registry) ReserveGoPackageAlias ¶
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 (*Registry) SetAllowDeleteBody ¶
SetAllowDeleteBody controls whether http delete methods may have a body or fail loading if encountered.
func (*Registry) SetAllowMerge ¶
SetAllowMerge controls whether generation one OpenAPI file out of multiple protos
func (*Registry) SetAllowRepeatedFieldsInBody ¶
SetAllowRepeatedFieldsInBody controls whether repeated field can be used in `body` and `response_body` (`google.api.http` annotation option) field path or not
func (*Registry) SetDisableDefaultErrors ¶
SetDisableDefaultErrors sets disableDefaultErrors
func (*Registry) SetEnumsAsInts ¶
SetEnumsAsInts set enumsAsInts
func (*Registry) SetGenerateUnboundMethods ¶
SetGenerateUnboundMethods sets generateUnboundMethods
func (*Registry) SetIncludePackageInTags ¶
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 (*Registry) SetMergeFileName ¶
SetMergeFileName controls the target OpenAPI file name out of multiple protos
func (*Registry) SetOmitPackageDoc ¶
SetOmitPackageDoc controls whether the generated code contains a package comment (if set to false, it will contain one)
func (*Registry) SetOpenAPINamingStrategy ¶
SetOpenAPINamingStrategy sets the naming strategy to be used.
func (*Registry) SetPrefix ¶
SetPrefix registers the prefix to be added to go package paths generated from proto package names.
func (*Registry) SetProto3OptionalNullable ¶
SetProto3OptionalNullable set proto3OtionalNullable
func (*Registry) SetRecursiveDepth ¶
SetRecursiveDepth records the max recursion count
func (*Registry) SetRepeatedPathParamSeparator ¶
SetRepeatedPathParamSeparator sets how path parameter repeated fields are separated. Allowed names are 'csv', 'pipe', 'ssv' and 'tsv'.
func (*Registry) SetSimpleOperationIDs ¶
SetSimpleOperationIDs sets simpleOperationIDs
func (*Registry) SetStandalone ¶
SetStandalone registers standalone flag to control package prefix
func (*Registry) SetUseFQNForOpenAPIName ¶
SetUseFQNForOpenAPIName sets useFQNForOpenAPIName Deprecated: use SetOpenAPINamingStrategy instead.
func (*Registry) SetUseGoTemplate ¶
SetUseGoTemplate sets useGoTemplate
func (*Registry) SetUseJSONNamesForFields ¶
SetUseJSONNamesForFields sets useJSONNamesForFields
func (*Registry) SetWarnOnUnboundMethods ¶
SetWarnOnUnboundMethods sets warnOnUnboundMethods
func (*Registry) UnboundExternalHTTPRules ¶
UnboundExternalHTTPRules returns the list of External HTTPRules which does not have a matching method in the registry
type ResponseFile ¶
type ResponseFile struct { *pluginpb.CodeGeneratorResponse_File // GoPkg is the Go package of the generated file. GoPkg GoPackage }
ResponseFile wraps pluginpb.CodeGeneratorResponse_File.
type Service ¶
type Service struct { *descriptorpb.ServiceDescriptorProto // File is the file where this service is defined. File *File // Methods is the list of methods defined in this service. Methods []*Method // ForcePrefixedName when set to true, prefixes a type with a package prefix. ForcePrefixedName bool }
Service wraps descriptorpb.ServiceDescriptorProto for richer features.
func (*Service) ClientConstructorName ¶
ClientConstructorName returns name of the Client constructor with package prefix if needed
func (*Service) InstanceName ¶
InstanceName returns object name of the service with package prefix if needed