Documentation ¶
Index ¶
- Constants
- func CopyHeaders(dst http.Header, src http.Header)
- func CopyURL(i *url.URL) *url.URL
- func DumpHTTPRequest(req *http.Request) string
- 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 Logger
- type NoopLogger
- type ProxyWriter
- func (p *ProxyWriter) CloseNotify() <-chan bool
- func (p *ProxyWriter) Flush()
- func (p *ProxyWriter) GetLength() int64
- func (p *ProxyWriter) Header() http.Header
- func (p *ProxyWriter) Hijack() (net.Conn, *bufio.ReadWriter, error)
- func (p *ProxyWriter) StatusCode() int
- func (p *ProxyWriter) Write(buf []byte) (int, error)
- func (p *ProxyWriter) WriteHeader(code int)
- type SerializableHTTPRequest
- type SourceExtractor
- type StdHandler
Constants ¶
const StatusClientClosedRequest = 499
StatusClientClosedRequest non-standard HTTP status code for client disconnection.
const StatusClientClosedRequestText = "Client Closed Request"
StatusClientClosedRequestText non-standard HTTP status for client disconnection.
Variables ¶
This section is empty.
Functions ¶
func CopyHeaders ¶
CopyHeaders copies http headers from source to destination, it does not override, but adds multiple headers.
func DumpHTTPRequest ¶
DumpHTTPRequest dump a HTTP request to JSON.
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
NopWriteCloser 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 ¶
BasicAuth basic auth information.
func ParseAuthHeader ¶
ParseAuthHeader creates a new BasicAuth from header values.
type BufferWriter ¶
type BufferWriter struct { H http.Header Code int W io.WriteCloser // contains filtered or unexported fields }
BufferWriter buffer writer.
func NewBufferWriter ¶
func NewBufferWriter(w io.WriteCloser, l Logger) *BufferWriter
NewBufferWriter creates a new BufferWriter.
func (*BufferWriter) CloseNotify ¶
func (b *BufferWriter) CloseNotify() <-chan bool
CloseNotify returns a channel that receives at most a single value (true) when the client connection has gone away.
func (*BufferWriter) Header ¶
func (b *BufferWriter) Header() http.Header
Header gets response header.
func (*BufferWriter) Hijack ¶
func (b *BufferWriter) Hijack() (net.Conn, *bufio.ReadWriter, error)
Hijack lets the caller take over the connection.
func (*BufferWriter) WriteHeader ¶
func (b *BufferWriter) WriteHeader(code int)
WriteHeader writes status code.
type ErrorHandler ¶
type ErrorHandler interface {
ServeHTTP(w http.ResponseWriter, req *http.Request, err error)
}
ErrorHandler error handler.
var DefaultHandler ErrorHandler = &StdHandler{log: &NoopLogger{}}
DefaultHandler default error handler.
type ErrorHandlerFunc ¶
type ErrorHandlerFunc func(http.ResponseWriter, *http.Request, error)
ErrorHandlerFunc error handler function type.
func (ErrorHandlerFunc) ServeHTTP ¶
func (f ErrorHandlerFunc) ServeHTTP(w http.ResponseWriter, r *http.Request, err error)
ServeHTTP calls f(w, r).
type ExtractSource ¶
ExtractSource extract source function type.
type ExtractorFunc ¶
ExtractorFunc extractor function type.
type Logger ¶
type Logger interface { Debug(msg string, args ...any) Info(msg string, args ...any) Warn(msg string, args ...any) Error(msg string, args ...any) }
Logger the logger interface.
type ProxyWriter ¶
type ProxyWriter struct {
// contains filtered or unexported fields
}
ProxyWriter calls recorder, used to debug logs.
func NewProxyWriter ¶
func NewProxyWriter(w http.ResponseWriter) *ProxyWriter
NewProxyWriter creates a new ProxyWriter.
func NewProxyWriterWithLogger ¶
func NewProxyWriterWithLogger(w http.ResponseWriter, l Logger) *ProxyWriter
NewProxyWriterWithLogger creates a new ProxyWriter.
func (*ProxyWriter) CloseNotify ¶
func (p *ProxyWriter) CloseNotify() <-chan bool
CloseNotify returns a channel that receives at most a single value (true) when the client connection has gone away.
func (*ProxyWriter) GetLength ¶
func (p *ProxyWriter) GetLength() int64
GetLength gets content length.
func (*ProxyWriter) Header ¶
func (p *ProxyWriter) Header() http.Header
Header gets response header.
func (*ProxyWriter) Hijack ¶
func (p *ProxyWriter) Hijack() (net.Conn, *bufio.ReadWriter, error)
Hijack lets the caller take over the connection.
func (*ProxyWriter) StatusCode ¶
func (p *ProxyWriter) StatusCode() int
StatusCode gets status code.
func (*ProxyWriter) WriteHeader ¶
func (p *ProxyWriter) WriteHeader(code int)
WriteHeader writes status code.
type SerializableHTTPRequest ¶
type SerializableHTTPRequest struct { Method string URL *url.URL Proto string // "HTTP/1.0" ProtoMajor int // 1 ProtoMinor int // 0 Header http.Header ContentLength int64 TransferEncoding []string Host string Form url.Values PostForm url.Values MultipartForm *multipart.Form Trailer http.Header RemoteAddr string RequestURI string TLS *tls.ConnectionState }
SerializableHTTPRequest serializable HTTP request.
func (*SerializableHTTPRequest) ToJSON ¶
func (s *SerializableHTTPRequest) ToJSON() string
ToJSON serializes to JSON.
type SourceExtractor ¶
type SourceExtractor interface {
Extract(req *http.Request) (token string, amount int64, err error)
}
SourceExtractor 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)
NewExtractor creates a new SourceExtractor.
type StdHandler ¶
type StdHandler struct {
// contains filtered or unexported fields
}
StdHandler Standard error handler.
func (*StdHandler) ServeHTTP ¶
func (e *StdHandler) ServeHTTP(w http.ResponseWriter, _ *http.Request, err error)