Documentation ¶
Index ¶
Constants ¶
const (
// DefaultIDHeader is where command ID is stored.
DefaultIDHeader = "X-Request-ID"
)
Variables ¶
This section is empty.
Functions ¶
func GetRequestID ¶
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 ¶
IDSource (E.g.: header, custom)
func NewSourceCustom ¶
NewSourceCustom returns new sourceCustom
func NewSourceHeader ¶
NewSourceHeader returns new sourceHeader
type RequestIDInjector ¶
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)