requestid

package module
v0.0.0-...-69cac0e Latest Latest
Warning

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

Go to latest
Published: Oct 22, 2015 License: MIT Imports: 7 Imported by: 0

README

go-requestid-middleware

Request id migglevare for Negroni

Documentation

Index

Constants

View Source
const (
	// DefaultIDHeader is where command ID is stored.
	DefaultIDHeader = "X-Request-ID"
)

Variables

This section is empty.

Functions

func GetRequestID

func GetRequestID(r *http.Request) string

GetRequestID extracts command ID from the request header.

Types

type IDGenerator

type IDGenerator interface {
	Generate() string
}

IDGenerator interface for various implementations to generate request ID

func NewRandomIDGenerator

func NewRandomIDGenerator() IDGenerator

NewRandomIDGenerator does what it says on the tin.

func NewTimestampIDGenerator

func NewTimestampIDGenerator() IDGenerator

NewTimestampIDGenerator does what it says on the tin.

type IDInjectorOptions

type IDInjectorOptions struct {
	IDGenerator     IDGenerator
	IDSource        IDSource
	IDSaveHandler   IDSaveHandler
	IDPostProcessor IDPostProcessor
}

IDInjectorOptions contains options for initialization requestIDInjector

type IDPostProcessor

type IDPostProcessor interface {
	Process(rw http.ResponseWriter, r *http.Request, id string)
}

IDPostProcessor (E.g.: header, custom)

func NewPostProcessorCustom

func NewPostProcessorCustom(fn func(rw http.ResponseWriter, r *http.Request, id string)) IDPostProcessor

NewPostProcessorCustom returns new postProcessorCustom (IDPostProcessor interface)

func NewPostProcessorHeader

func NewPostProcessorHeader(field string) IDPostProcessor

NewPostProcessorHeader returns new postProcessorHeader (IDPostProcessor interface)

type IDSaveHandler

type IDSaveHandler interface {
	SaveID(rw http.ResponseWriter, r *http.Request, id string)
}

IDSaveHandler (E.g.: header, context, custom)

func NewSaveHandlerContext

func NewSaveHandlerContext(field interface{}) IDSaveHandler

NewSaveHandlerContext returns new saveHandlerContext (IDSaveHandler interface)

func NewSaveHandlerCustom

func NewSaveHandlerCustom(fn func(rw http.ResponseWriter, r *http.Request, id string)) IDSaveHandler

NewSaveHandlerCustom returns new saveHandlerCustom (IDSaveHandler interface)

func NewSaveHandlerHeader

func NewSaveHandlerHeader(header string) IDSaveHandler

NewSaveHandlerHeader returns new saveHandlerHeader (IDSaveHandler interface)

type IDSource

type IDSource interface {
	GetID(r *http.Request) string
}

IDSource (E.g.: header, custom)

func NewSourceCustom

func NewSourceCustom(fn func(r *http.Request) string) IDSource

NewSourceCustom returns new sourceCustom

func NewSourceHeader

func NewSourceHeader(header string) IDSource

NewSourceHeader returns new sourceHeader

type RequestIDInjector

type RequestIDInjector interface {
	negroni.Handler
}

RequestIDInjector injects random command ID into request and response.

func NewRequestIDInjector

func NewRequestIDInjector(o *IDInjectorOptions) RequestIDInjector

NewRequestIDInjector does what it says on the tin. Usage:

app := negroni.New()
app.Use(requestid.NewRequestIDInjector(&requestid.IDInjectorOptions{}))
return context.ClearHandler(app)

Is the same as:

app := negroni.New()
app.Use(requestid.NewRequestIDInjector(&requestid.IDInjectorOptions{
  IDGenerator :     NewTimestampIDGenerator(),
  IDSource :        requestid.NewSourceHeader(requestid.DefaultIDHeader),
  IDSaveHandler :   requestid.NewSaveHandlerHeader(requestid.DefaultIDHeader),
  IDPostProcessor : requestid.NewPostProcessorHeader(requestid.DefaultIDHeader),
}))
return context.ClearHandler(app)

Jump to

Keyboard shortcuts

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