grpcx

package
v0.5.2 Latest Latest
Warning

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

Go to latest
Published: May 29, 2021 License: MIT Imports: 28 Imported by: 0

Documentation

Overview

Package grpcx provide helpers for typical gRPC client/server.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func AccessToken added in v0.5.0

func AccessToken(ctx Ctx) string

AccessToken returns "Bearer" AccessToken from authorization metadata, if any.

func AccessTokenCreds added in v0.5.0

func AccessTokenCreds(accessToken string) grpc.CallOption

AccessTokenCreds returns a CallOption that sets credentials.PerRPCCredentials using OAuth2 "Bearer" AccessToken.

func Dial

func Dial(ctx Ctx, addr, service string, metrics *grpc_prometheus.ClientMetrics, ca *x509.CertPool) (*grpc.ClientConn, error)

Dial creates a gRPC client connection to the given target.

func DialOptions

func DialOptions(ca *x509.CertPool) []grpc.DialOption

DialOptions returns default connection options without interceptors.

func MakeStreamClientLogger

func MakeStreamClientLogger(service string, skip int) grpc.StreamClientInterceptor

MakeStreamClientLogger returns a new stream client interceptor that contains request logger.

func MakeStreamServerAuthn

func MakeStreamServerAuthn(authn AuthnFunc) grpc.StreamServerInterceptor

MakeStreamServerAuthn returns a new stream server interceptor that checks authentication.

func MakeStreamServerLogger

func MakeStreamServerLogger(service string, skip int) grpc.StreamServerInterceptor

MakeStreamServerLogger returns a new stream server interceptor that contains request logger.

func MakeStreamServerRecover

func MakeStreamServerRecover(metric def.Metrics) grpc.StreamServerInterceptor

MakeStreamServerRecover returns a new stream server interceptor that recover and logs panic.

func MakeUnaryClientLogger

func MakeUnaryClientLogger(service string, skip int) grpc.UnaryClientInterceptor

MakeUnaryClientLogger returns a new unary client interceptor that contains request logger.

func MakeUnaryServerAuthn

func MakeUnaryServerAuthn(authn AuthnFunc) grpc.UnaryServerInterceptor

MakeUnaryServerAuthn returns a new unary server interceptor that checks authentication.

func MakeUnaryServerLogger

func MakeUnaryServerLogger(service string, skip int) grpc.UnaryServerInterceptor

MakeUnaryServerLogger returns a new unary server interceptor that contains request logger.

func MakeUnaryServerRecover

func MakeUnaryServerRecover(metric def.Metrics) grpc.UnaryServerInterceptor

MakeUnaryServerRecover returns a new unary server interceptor that recover and logs panic.

func NewClientMetrics

func NewClientMetrics(reg *prometheus.Registry, namespace, subsystem string) *grpc_prometheus.ClientMetrics

NewClientMetrics returns gRPC client metrics.

func NewServer

func NewServer(
	service string,
	metric def.Metrics,
	serverMetrics *grpc_prometheus.ServerMetrics,
	cert *tls.Certificate,
	extraUnary []grpc.UnaryServerInterceptor,
	extraStream []grpc.StreamServerInterceptor,
) (server *grpc.Server, healthServer *health.Server)

NewServer creates and returns a gRPC server which:

  • has configured TLS,
  • has configured keep-alive,
  • setup interceptor to provide prometheus metrics,
  • setup interceptor to store request-scooped logger inside context,
  • setup interceptor to recover from panics,
  • setup interceptor to log method access/result,
  • has reflection service registered,
  • has health service registered,
  • has not started to accept requests yet.

It also returns health server which may be used to control status returned by health service (set to SERVING by default).

func NewServerMetrics

func NewServerMetrics(reg *prometheus.Registry, namespace, subsystem string) *grpc_prometheus.ServerMetrics

NewServerMetrics returns gRPC server metrics. Do not forget to call .InitializeMetrics(server) on returned value.

func RemoteIP added in v0.5.0

func RemoteIP(ctx Ctx, xffAllowedFrom func(peerIP string) bool) string

RemoteIP returns either peer IP, or IP from X-Forwarded-For metadata key provided by allowed peer, or empty string if neither is available.

func StreamClientAccessLog

func StreamClientAccessLog(ctx Ctx, desc *grpc.StreamDesc, cc *grpc.ClientConn, method string, streamer grpc.Streamer, opts ...grpc.CallOption) (grpc.ClientStream, error)

StreamClientAccessLog returns a new stream client interceptor that logs request status.

func StreamServerAccessLog

func StreamServerAccessLog(srv interface{}, stream grpc.ServerStream, info *grpc.StreamServerInfo, handler grpc.StreamHandler) (err error)

StreamServerAccessLog returns a new stream server interceptor that logs request status.

func UnaryClientAccessLog

func UnaryClientAccessLog(ctx Ctx, method string, req, reply interface{}, cc *grpc.ClientConn, invoker grpc.UnaryInvoker, opts ...grpc.CallOption) error

UnaryClientAccessLog returns a new unary client interceptor that logs request status.

func UnaryServerAccessLog

func UnaryServerAccessLog(ctx Ctx, req interface{}, info *grpc.UnaryServerInfo, handler grpc.UnaryHandler) (_ interface{}, err error)

UnaryServerAccessLog returns a new unary server interceptor that logs request status.

Types

type AuthnFunc

type AuthnFunc func(_ Ctx, fullMethod string) (Ctx, error)

AuthnFunc provides a way to check authentication using interceptor. FullMethod is the full RPC method string, i.e., /package.service/method. It usually either returns error with codes.Unauthenticated or Ctx with extra value describing current authentication for use in handlers.

type Ctx

type Ctx = context.Context

Ctx is a synonym for convenience.

func AppendXFF added in v0.5.0

func AppendXFF(ctx Ctx, xff string) Ctx

AppendXFF returns a new context with the provided X-Forwarded-For value merged with any existing metadata in the outgoing context.

Jump to

Keyboard shortcuts

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