api

package
v0.0.3 Latest Latest
Warning

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

Go to latest
Published: Apr 13, 2022 License: Apache-2.0 Imports: 24 Imported by: 0

Documentation

Index

Constants

View Source
const (
	InternalKeyPrefix = "internal-"
	TenantKey         = InternalKeyPrefix + "tenant"
	TenantInfoKey     = InternalKeyPrefix + "tenant-info"
	TenantFilterKey   = InternalKeyPrefix + "tenant-data-filter"
	TenantAutoSetKey  = InternalKeyPrefix + "tenant-data-autoset"
	UserKey           = InternalKeyPrefix + "user"
	ClientKey         = InternalKeyPrefix + "client"
)

Variables

Functions

func ClientPropagation added in v0.0.2

func ClientPropagation(client *conf.Client, opt *Option, tokenMgr TokenManager, logger log.Logger) middleware.Middleware

func NewGrpcConn

func NewGrpcConn(
	clientName ClientName,
	serviceName string,
	services *conf.Services,
	opt *Option,
	tokenMgr TokenManager,
	logger log.Logger,
	opts ...grpc.ClientOption,
) (grpcx.ClientConnInterface, func())

NewGrpcConn create new grpc client from name

func NewHttpClient

func NewHttpClient(clientName ClientName, serviceName string,
	services *conf.Services, opt *Option, tokenMgr TokenManager,
	logger log.Logger,
	opts ...http.ClientOption) (*http.Client, func())

NewHttpClient create new http client from name

func ServerPropagation added in v0.0.2

func ServerPropagation(opt *Option, validator TrustedContextValidator, logger log.Logger) middleware.Middleware

Types

type ClientName

type ClientName string

type ClientPropagator added in v0.0.2

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

func NewClientPropagator added in v0.0.2

func NewClientPropagator(extractOnly bool, logger log.Logger) *ClientPropagator

func (*ClientPropagator) Extract added in v0.0.2

func (u *ClientPropagator) Extract(ctx context.Context, headers Header) (context.Context, error)

func (*ClientPropagator) Fields added in v0.0.2

func (u *ClientPropagator) Fields() []string

func (*ClientPropagator) Inject added in v0.0.2

func (u *ClientPropagator) Inject(ctx context.Context, carrier Header) error

type ClientTrustedContextValidator added in v0.0.2

type ClientTrustedContextValidator struct {
}

func (*ClientTrustedContextValidator) Trusted added in v0.0.2

type Header interface {
	Get(key string) string
	Set(key, value string)
	HasKey(key string) bool
}

type HeaderCarrier added in v0.0.2

type HeaderCarrier map[string]string

func (HeaderCarrier) Get added in v0.0.2

func (h HeaderCarrier) Get(key string) string

func (HeaderCarrier) HasKey added in v0.0.2

func (h HeaderCarrier) HasKey(key string) bool

func (HeaderCarrier) Set added in v0.0.2

func (h HeaderCarrier) Set(key, value string)

type InMemoryTokenManager

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

InMemoryTokenManager TODO should use centralize authorization server to get jwt

func NewInMemoryTokenManager

func NewInMemoryTokenManager(tokenizer jwt.Tokenizer, logger log.Logger) *InMemoryTokenManager

func (*InMemoryTokenManager) GetOrGenerateToken

func (i *InMemoryTokenManager) GetOrGenerateToken(ctx context.Context, client *conf.Client) (string, error)

type Option

type Option struct {
	Propagators []Propagator
	BypassToken bool
	Insecure    bool
}

func NewDefaultOption

func NewDefaultOption(logger log.Logger) *Option

func NewOption

func NewOption(bypassToken bool, propagators ...Propagator) *Option

func (*Option) WithInsecure added in v0.0.3

func (o *Option) WithInsecure() *Option

type Propagator added in v0.0.2

type Propagator interface {
	Extract(ctx context.Context, carrier Header) (context.Context, error)
	Inject(ctx context.Context, carrier Header) error
	Fields() []string
}

Propagator propagates cross-cutting concerns as key-value text pairs within a carrier that travels in-band across process boundaries to keep same state across services

type SaasPropagator added in v0.0.2

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

func NewSaasPropagator added in v0.0.2

func NewSaasPropagator(logger log.Logger) *SaasPropagator

func (*SaasPropagator) Extract added in v0.0.2

func (s *SaasPropagator) Extract(ctx context.Context, headers Header) (context.Context, error)

func (*SaasPropagator) Fields added in v0.0.2

func (s *SaasPropagator) Fields() []string

func (*SaasPropagator) Inject added in v0.0.2

func (s *SaasPropagator) Inject(ctx context.Context, headers Header) error

type TokenManager

type TokenManager interface {
	GetOrGenerateToken(ctx context.Context, client *conf.Client) (token string, err error)
}

type TrustedContextValidator added in v0.0.2

type TrustedContextValidator interface {
	Trusted(ctx context.Context) (bool, error)
}

TrustedContextValidator validate whether the communication is behind authed gateway or server to server communication

func NewClientTrustedContextValidator added in v0.0.2

func NewClientTrustedContextValidator() TrustedContextValidator

type UserPropagator added in v0.0.2

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

func NewUserPropagator added in v0.0.2

func NewUserPropagator(logger log.Logger) *UserPropagator

func (*UserPropagator) Extract added in v0.0.2

func (u *UserPropagator) Extract(ctx context.Context, headers Header) (context.Context, error)

func (*UserPropagator) Fields added in v0.0.2

func (u *UserPropagator) Fields() []string

func (*UserPropagator) Inject added in v0.0.2

func (u *UserPropagator) Inject(ctx context.Context, carrier Header) error

Jump to

Keyboard shortcuts

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