common

package
v0.6.0 Latest Latest
Warning

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

Go to latest
Published: Apr 3, 2020 License: Apache-2.0 Imports: 22 Imported by: 9

Documentation

Index

Constants

View Source
const DefaultReplacementText = "****************"

Variables

View Source
var ErrHandlerTimeout = errors.New("http: Handler timeout")

ErrHandlerTimeout is returned on ResponseWriter Write calls in handlers which have timed out.

Functions

func AddTraceIDToContext

func AddTraceIDToContext(ctx context.Context, id uuid.UUID, wasProvided bool) context.Context

func CheckContextTimeout

func CheckContextTimeout(ctx context.Context, message string, cause error) error

func CoreRequestContextMiddleware

func CoreRequestContextMiddleware(logger *logrus.Logger) func(next http.Handler) http.Handler

func CreateDownstreamError

func CreateDownstreamError(ctx context.Context, kind Kind, response *http.Response, body []byte, cause error) error

func CreateError

func CreateError(ctx context.Context, kind Kind, message string, cause error) error

func FindConfigFilename

func FindConfigFilename(cfgDir, prefix string) string

func GetLogEntryFromContext

func GetLogEntryFromContext(ctx context.Context) *logrus.Entry

func GetLoggerFromContext

func GetLoggerFromContext(ctx context.Context) *logrus.Logger

func GetTraceIDFromContext

func GetTraceIDFromContext(ctx context.Context) uuid.UUID

func HandleError

func HandleError(ctx context.Context, w http.ResponseWriter, kind Kind, message string, cause error, httpErrorMapper func(context.Context, error) *HTTPError)

func LoadAndValidateFromYAMLFileName

func LoadAndValidateFromYAMLFileName(filename string, out validator.Validator) error

func LoggerToContext

func LoggerToContext(ctx context.Context, logger *logrus.Logger, entry *logrus.Entry) context.Context

LoggerToContext create a new context containing the logger

func NewBool

func NewBool(b bool) *bool

func NewLoggingRoundTripper

func NewLoggingRoundTripper(name string, base http.RoundTripper) http.RoundTripper

func NewString

func NewString(s string) *string

func NewTestCoreRequestContext

func NewTestCoreRequestContext() (*logrus.Logger, *test.Hook, context.Context)

func NewTestCoreRequestContextWithLogger

func NewTestCoreRequestContextWithLogger(logger *logrus.Logger) context.Context

func RequestHeaderFromContext

func RequestHeaderFromContext(ctx context.Context) http.Header

RequestHeaderFromContext retrieve the request header from the context

func RequestHeaderToContext

func RequestHeaderToContext(ctx context.Context, header http.Header) context.Context

RequestHeaderToContext create a new context containing the request header

func RespHeaderAndStatusFromContext

func RespHeaderAndStatusFromContext(ctx context.Context) (header http.Header, status int)

RespHeaderAndStatusFromContext retrieve response header and status from the context

func RespHeaderAndStatusToContext

func RespHeaderAndStatusToContext(ctx context.Context, header http.Header, status int) context.Context

RespHeaderAndStatusToContext create a new context containing the response header and status

func Timeout

func Timeout(ctx context.Context, timeout time.Duration, timeoutHandler http.Handler) func(next http.Handler) http.Handler

Timeout is a middleware that cancels ctx after a given timeout or call a special handler on timeout

func TimeoutHandler

func TimeoutHandler(ctx context.Context, h http.Handler, dt time.Duration, timeout http.Handler) http.Handler

TimeoutHandler returns a Handler that runs h with the given time limit.

The new Handler calls h.ServeHTTP to handle each request, but if a call runs for longer than its time limit, the handler calls the error handler which can then return a HTTP result however is deems correct. After such a timeout, writes by h to its ResponseWriter will return ErrHandlerTimeout.

TimeoutHandler buffers all Handler writes to memory and does not support the Hijacker or Flusher interfaces.

func TraceabilityMiddleware

func TraceabilityMiddleware(logger *logrus.Logger) func(next http.Handler) http.Handler

Injects a traceId UUID into the request context

func TryGetTraceIDFromContext

func TryGetTraceIDFromContext(ctx context.Context) (uuid.UUID, bool)

func UpdateResponseStatus

func UpdateResponseStatus(ctx context.Context, status int) error

Types

type Callback

type Callback struct {
	UpstreamTimeout   time.Duration
	DownstreamTimeout time.Duration
	RouterBasePath    string
	UpstreamConfig    validator.Validator
}

func DefaultCallback

func DefaultCallback() Callback

func (Callback) AddMiddleware

func (g Callback) AddMiddleware(ctx context.Context, r chi.Router)

func (Callback) BasePath

func (g Callback) BasePath() string

func (Callback) Config

func (g Callback) Config() validator.Validator

func (Callback) DownstreamTimeoutContext

func (g Callback) DownstreamTimeoutContext(ctx context.Context) (context.Context, context.CancelFunc)

func (Callback) HandleError

func (g Callback) HandleError(ctx context.Context, w http.ResponseWriter, kind Kind, message string, cause error)

type Config

type Config struct{}

func (Config) Validate

func (c Config) Validate() error

type CustomError added in v0.5.0

type CustomError map[string]string

func (CustomError) Error added in v0.5.0

func (e CustomError) Error() string

func (CustomError) HTTPError added in v0.5.0

func (e CustomError) HTTPError(ctx context.Context) *HTTPError

type DownstreamError

type DownstreamError struct {
	Kind     Kind
	Response *http.Response
	Body     []byte
	Cause    error
}

func (*DownstreamError) Error

func (e *DownstreamError) Error() string

func (*DownstreamError) ErrorKind

func (e *DownstreamError) ErrorKind() Kind

func (*DownstreamError) Unwrap

func (e *DownstreamError) Unwrap() error

type ErrorKinder

type ErrorKinder interface {
	ErrorKind() Kind
}

type HTTPError

type HTTPError struct {
	HTTPCode    int    `json:"-"`
	Code        string `json:"code,omitempty"`
	Description string `json:"description,omitempty"`
}

func MapError added in v0.5.0

func MapError(ctx context.Context, err error) HTTPError

func (*HTTPError) WriteError

func (httpError *HTTPError) WriteError(ctx context.Context, w http.ResponseWriter)

type Kind

type Kind int
const (
	UnknownError Kind = iota
	BadRequestError
	InternalError
	UnauthorizedError
	DownstreamUnavailableError
	DownstreamTimeoutError
	DownstreamUnauthorizedError       // 401 from downstream
	DownstreamUnexpectedResponseError // unexpected response from downstream
	DownstreamResponseError           // application-leve error response from downstream
)

func (Kind) String

func (k Kind) String() string

type MockRoundTripper

type MockRoundTripper struct {
	mock.Mock
}

func (*MockRoundTripper) RoundTrip

func (m *MockRoundTripper) RoundTrip(req *http.Request) (*http.Response, error)

type SensitiveString

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

func NewSensitiveString

func NewSensitiveString(from string) SensitiveString

func (*SensitiveString) MarshalJSON

func (s *SensitiveString) MarshalJSON() ([]byte, error)

func (SensitiveString) MarshalYAML

func (s SensitiveString) MarshalYAML() (interface{}, error)

Note, this one needs to be an object receiver NOT a pointer receiver

func (SensitiveString) String

func (s SensitiveString) String() string

func (*SensitiveString) UnmarshalJSON

func (s *SensitiveString) UnmarshalJSON(data []byte) error

func (*SensitiveString) UnmarshalYAML

func (s *SensitiveString) UnmarshalYAML(unmarshal func(interface{}) error) error

func (*SensitiveString) Value

func (s *SensitiveString) Value() string

type ServerError

type ServerError struct {
	Kind    Kind
	Message string
	Cause   error
}

func (*ServerError) Error

func (e *ServerError) Error() string

func (*ServerError) ErrorKind

func (e *ServerError) ErrorKind() Kind

func (*ServerError) Unwrap

func (e *ServerError) Unwrap() error

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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