gateway

package
v0.2.27 Latest Latest
Warning

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

Go to latest
Published: Dec 18, 2024 License: Apache-2.0 Imports: 54 Imported by: 0

Documentation

Index

Constants

View Source
const MetadataHeaderPrefix = "Grpc-Metadata-"

MetadataHeaderPrefix is the http prefix that represents custom metadata parameters to or from a gRPC call.

View Source
const MetadataPrefix = "grpcgateway-"

MetadataPrefix is prepended to permanent HTTP header keys (as specified by the IANA) when added to the gRPC context.

View Source
const MetadataTrailerPrefix = "Grpc-Trailer-"

MetadataTrailerPrefix is prepended to gRPC metadata as it is converted to HTTP headers in a response handled by grpc-gateway

Variables

View Source
var DefaultContextTimeout = 0 * time.Second

DefaultContextTimeout is used for gRPC call context.WithTimeout whenever a Grpc-Timeout inbound header isn't present. If the value is 0 the sent `context` will not have a timeout.

Functions

func FieldMaskFromRequestBody

func FieldMaskFromRequestBody(r io.Reader, msg proto.Message) (*fieldmask.FieldMask, error)

FieldMaskFromRequestBody creates a FieldMask printing all complete paths from the JSON body.

func HTTPPathPattern added in v0.2.21

func HTTPPathPattern(ctx context.Context) (string, bool)

HTTPPathPattern returns the HTTP path pattern string relating to the HTTP handler, if one exists. The format of the returned string is defined by the google.api.http path template type.

func HTTPStatusCode

func HTTPStatusCode(c codes.Code) int

func HTTPStatusFromCode

func HTTPStatusFromCode(code codes.Code) int

HTTPStatusFromCode converts a gRPC error code into the corresponding HTTP response status. See: https://github.com/googleapis/googleapis/blob/master/google/rpc/code.proto

func NewContextWithServerTransportStream added in v0.2.21

func NewContextWithServerTransportStream(ctx context.Context, s grpc.ServerStream, method string) context.Context

func NewServerMetadataContext added in v0.2.21

func NewServerMetadataContext(ctx context.Context, md ServerMetadata) context.Context

NewServerMetadataContext creates a new context with ServerMetadata

func PopulateFieldFromPath

func PopulateFieldFromPath(msg proto.Message, fieldPathString, value string) error

PopulateFieldFromPath sets a value in a nested Protobuf structure.

func PopulateQueryParameters

func PopulateQueryParameters(msg proto.Message, values url.Values, filter *utilities.DoubleArray) error

PopulateQueryParameters parses query parameters into "msg" using current query parser

func RPCMethod added in v0.2.21

func RPCMethod(ctx context.Context) (string, bool)

RPCMethod returns the method string for the server context. The returned string is in the format of "/package.service/method".

func TransparentHandler added in v0.2.21

func TransparentHandler(cli grpc.ClientConnInterface, inType, outType protoreflect.MessageType, opts ...grpc.CallOption) grpc.StreamHandler

Types

type AnnotateContextOption added in v0.2.21

type AnnotateContextOption func(ctx context.Context) context.Context

func WithHTTPPathPattern added in v0.2.21

func WithHTTPPathPattern(pattern string) AnnotateContextOption

type Codec

type Codec interface {
	encoding.Codec
	// MarshalAppend appends the marshaled form of v to b and returns the result.
	MarshalAppend([]byte, interface{}) ([]byte, error)
}

Codec defines the interface used to encode and decode messages.

type CodecJSON

CodecJSON is a Codec implementation with protobuf json format.

func (CodecJSON) Marshal

func (c CodecJSON) Marshal(v interface{}) ([]byte, error)

func (CodecJSON) MarshalAppend

func (c CodecJSON) MarshalAppend(b []byte, v interface{}) ([]byte, error)

func (CodecJSON) Name

func (CodecJSON) Name() string

func (CodecJSON) ReadNext

func (c CodecJSON) ReadNext(b []byte, r io.Reader, limit int) ([]byte, int, error)

ReadNext reads the length of the message around the json object. It reads until it finds a matching number of braces. It does not validate the JSON.

func (CodecJSON) Unmarshal

func (c CodecJSON) Unmarshal(data []byte, v interface{}) error

func (CodecJSON) WriteNext

func (c CodecJSON) WriteNext(w io.Writer, b []byte) (int, error)

WriteNext writes the raw JSON message to w without any size prefix.

type CodecProto

type CodecProto struct {
	proto.MarshalOptions
}

CodecProto is a Codec implementation with protobuf binary format.

func (CodecProto) Marshal

func (c CodecProto) Marshal(v interface{}) ([]byte, error)

func (CodecProto) MarshalAppend

func (c CodecProto) MarshalAppend(b []byte, v interface{}) ([]byte, error)

func (CodecProto) Name

func (CodecProto) Name() string

Name == "proto" overwritting internal proto codec

func (CodecProto) ReadNext

func (c CodecProto) ReadNext(b []byte, r io.Reader, limit int) ([]byte, int, error)

ReadNext reads a varint size-delimited wire-format message from r.

func (CodecProto) Unmarshal

func (CodecProto) Unmarshal(data []byte, v interface{}) error

func (CodecProto) WriteNext

func (c CodecProto) WriteNext(w io.Writer, b []byte) (int, error)

WriteNext writes the length of the message encoded as 4 byte unsigned integer and then writes the message to w.

type Compressor

type Compressor interface {
	encoding.Compressor
}

Compressor is used to compress and decompress messages. Based on grpc/encoding.

type CompressorGzip

type CompressorGzip struct {
	Level *int
	// contains filtered or unexported fields
}

CompressorGzip implements the Compressor interface. Based on grpc/encoding/gzip.

func (*CompressorGzip) Compress

func (c *CompressorGzip) Compress(w io.Writer) (io.WriteCloser, error)

Compress implements the Compressor interface.

func (*CompressorGzip) Decompress

func (c *CompressorGzip) Decompress(r io.Reader) (io.Reader, error)

Decompress implements the Compressor interface.

func (*CompressorGzip) Name

func (*CompressorGzip) Name() string

Name returns gzip.

type DefaultQueryParser

type DefaultQueryParser struct{}

DefaultQueryParser is a QueryParameterParser which implements the default query parameters parsing behavior.

See https://github.com/grpc-ecosystem/grpc-gateway/issues/2632 for more context.

func (*DefaultQueryParser) Parse

func (*DefaultQueryParser) Parse(msg proto.Message, values url.Values, filter *utilities.DoubleArray) error

Parse populates "values" into "msg". A value is ignored if its key starts with one of the elements in "filter".

type Gateway

type Gateway interface {
	grpc.ClientConnInterface
	SetUnaryInterceptor(interceptor grpc.UnaryServerInterceptor)
	SetStreamInterceptor(interceptor grpc.StreamServerInterceptor)

	SetRequestDecoder(protoreflect.FullName, func(ctx *fiber.Ctx, msg proto.Message) error)
	SetResponseEncoder(protoreflect.FullName, func(ctx *fiber.Ctx, msg proto.Message) error)
	RegisterService(sd *grpc.ServiceDesc, ss interface{})

	GetOperation(operation string) *GrpcMethod
	Handler(*fiber.Ctx) error
	ServeHTTP(http.ResponseWriter, *http.Request)
	GetRouteMethods() []RouteOperation
}

type GrpcMethod added in v0.2.21

type GrpcMethod struct {
	Srv     any
	SrvDesc *grpc.ServiceDesc

	GrpcMethodDesc *grpc.MethodDesc
	GrpcStreamDesc *grpc.StreamDesc
	MethodDesc     protoreflect.MethodDescriptor

	GrpcFullMethod string
	Meta           *lavapbv1.RpcMeta
}

type GrpcMethodHandler added in v0.2.21

type GrpcMethodHandler = func(srv any, ctx context.Context, dec func(any) error, interceptor grpc.UnaryServerInterceptor) (any, error)

type GrpcStreamHandler added in v0.2.21

type GrpcStreamHandler = grpc.StreamHandler

type MatchOperation added in v0.2.21

type MatchOperation = routertree.MatchOperation

func GetRouterTarget

func GetRouterTarget(mux *Mux, kind, path string) (*MatchOperation, error)

type Mux

type Mux struct {
	// contains filtered or unexported fields
}

func NewMux

func NewMux(opts ...MuxOption) *Mux

func (*Mux) GetOperation added in v0.2.21

func (m *Mux) GetOperation(operation string) *GrpcMethod

func (*Mux) GetOperationByName added in v0.2.21

func (m *Mux) GetOperationByName(name string) *GrpcMethod

func (*Mux) GetRouteMethods

func (m *Mux) GetRouteMethods() []RouteOperation

func (*Mux) Handler

func (m *Mux) Handler(ctx *fiber.Ctx) error

func (*Mux) Invoke

func (m *Mux) Invoke(ctx context.Context, method string, args, reply any, opts ...grpc.CallOption) error

func (*Mux) MatchOperation added in v0.2.21

func (m *Mux) MatchOperation(method string, path string) (r result.Result[*MatchOperation])

func (*Mux) NewStream

func (m *Mux) NewStream(ctx context.Context, desc *grpc.StreamDesc, method string, opts ...grpc.CallOption) (grpc.ClientStream, error)

func (*Mux) RegisterProxy added in v0.2.21

func (m *Mux) RegisterProxy(sd *grpc.ServiceDesc, proxy lava.GrpcRouter, cli grpc.ClientConnInterface)

func (*Mux) RegisterService

func (m *Mux) RegisterService(sd *grpc.ServiceDesc, ss interface{})

RegisterService satisfies grpc.ServiceRegistrar for generated service code hooks.

func (*Mux) ServeHTTP

func (m *Mux) ServeHTTP(writer http.ResponseWriter, request *http.Request)

func (*Mux) SetRequestDecoder

func (m *Mux) SetRequestDecoder(name protoreflect.FullName, f func(ctx *fiber.Ctx, msg proto.Message) error)

func (*Mux) SetResponseEncoder

func (m *Mux) SetResponseEncoder(name protoreflect.FullName, f func(ctx *fiber.Ctx, msg proto.Message) error)

func (*Mux) SetStreamInterceptor

func (m *Mux) SetStreamInterceptor(interceptor grpc.StreamServerInterceptor)

SetStreamInterceptor configures the in-process channel to use the given server interceptor for streaming RPCs when dispatching.

func (*Mux) SetUnaryInterceptor

func (m *Mux) SetUnaryInterceptor(interceptor grpc.UnaryServerInterceptor)

type MuxOption

type MuxOption func(*muxOptions)

MuxOption is an option for a mux.

func CodecOption

func CodecOption(contentType string, c Codec) MuxOption

CodecOption registers a codec for the given content type.

func CompressorOption

func CompressorOption(contentEncoding string, c Compressor) MuxOption

CompressorOption registers a compressor for the given content encoding.

func ConnectionTimeoutOption

func ConnectionTimeoutOption(d time.Duration) MuxOption

func FilesOption

func FilesOption(f *protoregistry.Files) MuxOption

func MaxReceiveMessageSizeOption

func MaxReceiveMessageSizeOption(s int) MuxOption

func MaxSendMessageSizeOption

func MaxSendMessageSizeOption(s int) MuxOption

type PathFieldVar added in v0.2.21

type PathFieldVar = routertree.PathFieldVar

type QueryParameterParser

type QueryParameterParser interface {
	Parse(msg proto.Message, values url.Values, filter *utilities.DoubleArray) error
}

QueryParameterParser defines interface for all query parameter parsers

type RouteOperation added in v0.2.21

type RouteOperation = routertree.RouteOperation

type ServerMetadata added in v0.2.21

type ServerMetadata struct {
	HeaderMD  metadata.MD
	TrailerMD metadata.MD
}

ServerMetadata consists of metadata sent from gRPC server.

func ServerMetadataFromContext added in v0.2.21

func ServerMetadataFromContext(ctx context.Context) (md ServerMetadata, ok bool)

ServerMetadataFromContext returns the ServerMetadata in ctx

type ServerTransportStream added in v0.2.21

type ServerTransportStream struct {
	// contains filtered or unexported fields
}

ServerTransportStream implements grpc.ServerTransportStream. It should only be used by the generated files to support grpc.SendHeader outside of gRPC server use.

func (*ServerTransportStream) Header added in v0.2.21

func (s *ServerTransportStream) Header() metadata.MD

Header returns the header metadata of the stream.

func (*ServerTransportStream) Method added in v0.2.21

func (s *ServerTransportStream) Method() string

Method returns the method for the stream.

func (*ServerTransportStream) SendHeader added in v0.2.21

func (s *ServerTransportStream) SendHeader(md metadata.MD) error

SendHeader sets the header metadata.

func (*ServerTransportStream) SetHeader added in v0.2.21

func (s *ServerTransportStream) SetHeader(md metadata.MD) error

SetHeader sets the header metadata.

func (*ServerTransportStream) SetTrailer added in v0.2.21

func (s *ServerTransportStream) SetTrailer(md metadata.MD) error

SetTrailer sets the trailer metadata.

func (*ServerTransportStream) Trailer added in v0.2.21

func (s *ServerTransportStream) Trailer() metadata.MD

Trailer returns the cached trailer metadata.

type StreamCodec

type StreamCodec interface {
	Codec

	// ReadNext returns the size of the next message appended to buf.
	// ReadNext reads from r until either it has read a complete message or
	// encountered an error and returns all the data read from r.
	// The message is contained in dst[:n].
	// Excess data read from r is stored in dst[n:].
	ReadNext(buf []byte, r io.Reader, limit int) (dst []byte, n int, err error)
	// WriteNext writes the message to w with a size aware encoding
	// returning the number of bytes written.
	WriteNext(w io.Writer, src []byte) (n int, err error)
}

StreamCodec is used in streaming RPCs where the message boundaries are determined by the codec.

type StreamDirector added in v0.2.21

type StreamDirector func(ctx context.Context, fullMethodName string) (context.Context, grpc.ClientConnInterface, error)

Directories

Path Synopsis
internal

Jump to

Keyboard shortcuts

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