Documentation ¶
Index ¶
- Constants
- func CopyHeaders(dst, src http.Header)
- func CopyURL(i *url.URL) *url.URL
- func HasHeaders(names []string, headers http.Header) bool
- func NopWriteCloser(w io.Writer) io.WriteCloser
- func RemoveHeaders(headers http.Header, names ...string)
- type BasicAuth
- type BufferWriter
- type ErrorHandler
- type ErrorHandlerFunc
- type ExtractSource
- type ExtractorFunc
- type FileLogger
- type LogLevel
- type Logger
- type NOPLogger
- type ProxyWriter
- type SourceExtractor
- type StdHandler
Constants ¶
const ( INFO = iota WARN ERROR )
Variables ¶
This section is empty.
Functions ¶
func CopyHeaders ¶
CopyHeaders copies http headers from source to destination, it does not overide, but adds multiple headers
func HasHeaders ¶
HasHeaders determines whether any of the header names is present in the http headers
func NopWriteCloser ¶
func NopWriteCloser(w io.Writer) io.WriteCloser
NopCloser returns a WriteCloser with a no-op Close method wrapping the provided Writer w.
func RemoveHeaders ¶
RemoveHeaders removes the header with the given names from the headers map
Types ¶
type BasicAuth ¶
func ParseAuthHeader ¶
type BufferWriter ¶
type BufferWriter struct { H http.Header Code int W io.WriteCloser }
func NewBufferWriter ¶
func NewBufferWriter(w io.WriteCloser) *BufferWriter
func (*BufferWriter) Close ¶
func (b *BufferWriter) Close() error
func (*BufferWriter) Header ¶
func (b *BufferWriter) Header() http.Header
func (*BufferWriter) WriteHeader ¶
func (b *BufferWriter) WriteHeader(code int)
WriteHeader sets rw.Code.
type ErrorHandler ¶
type ErrorHandler interface {
ServeHTTP(w http.ResponseWriter, req *http.Request, err error)
}
var DefaultHandler ErrorHandler = &StdHandler{}
type ErrorHandlerFunc ¶
type ErrorHandlerFunc func(http.ResponseWriter, *http.Request, error)
func (ErrorHandlerFunc) ServeHTTP ¶
func (f ErrorHandlerFunc) ServeHTTP(w http.ResponseWriter, r *http.Request, err error)
ServeHTTP calls f(w, r).
type ExtractSource ¶
type ExtractorFunc ¶
type FileLogger ¶
type FileLogger struct {
// contains filtered or unexported fields
}
func NewFileLogger ¶
func NewFileLogger(w io.Writer, lvl LogLevel) *FileLogger
func (*FileLogger) Errorf ¶
func (f *FileLogger) Errorf(format string, args ...interface{})
func (*FileLogger) Infof ¶
func (f *FileLogger) Infof(format string, args ...interface{})
func (*FileLogger) Warningf ¶
func (f *FileLogger) Warningf(format string, args ...interface{})
type Logger ¶
type Logger interface { Infof(format string, args ...interface{}) Warningf(format string, args ...interface{}) Errorf(format string, args ...interface{}) }
Logger defines a simple logging interface
type ProxyWriter ¶
type ProxyWriter struct { W http.ResponseWriter Code int }
ProxyWriter helps to capture response headers and status code from the ServeHTTP. It can be safely passed to ServeHTTP handler, wrapping the real response writer.
func (*ProxyWriter) Flush ¶
func (p *ProxyWriter) Flush()
func (*ProxyWriter) Header ¶
func (p *ProxyWriter) Header() http.Header
func (*ProxyWriter) StatusCode ¶
func (p *ProxyWriter) StatusCode() int
func (*ProxyWriter) WriteHeader ¶
func (p *ProxyWriter) WriteHeader(code int)
type SourceExtractor ¶
type SourceExtractor interface {
Extract(req *http.Request) (token string, amount int64, err error)
}
ExtractSource extracts the source from the request, e.g. that may be client ip, or particular header that identifies the source. amount stands for amount of connections the source consumes, usually 1 for connection limiters error should be returned when source can not be identified
func NewExtractor ¶
func NewExtractor(variable string) (SourceExtractor, error)
type StdHandler ¶
type StdHandler struct { }
func (*StdHandler) ServeHTTP ¶
func (e *StdHandler) ServeHTTP(w http.ResponseWriter, req *http.Request, err error)