Documentation ¶
Overview ¶
Commons for HTTP handling
Index ¶
- Constants
- Variables
- func GetParam(r *http.Request, param string) string
- func GetParamByteSlice(r *http.Request, param string) ([]byte, error)
- func GetParamFloat64(r *http.Request, param string) (float64, error)
- func GetParamInt32(r *http.Request, param string) (int32, error)
- func GetParamInt64(r *http.Request, param string) (int64, error)
- func GetParamRegexp(r *http.Request, param string, re *regexp.Regexp) (string, error)
- func GetParamUint(r *http.Request, param string) (uint, error)
- func GetParamUint64(r *http.Request, param string) (uint64, error)
- func NewWSConnection(baseConn *websocket.Conn, funcMap map[string]*RPCFunc, evsw events.EventSwitch) *wsConnection
- func RecoverAndLogHandler(handler http.Handler) http.Handler
- func RegisterRPCFuncs(mux *http.ServeMux, funcMap map[string]*RPCFunc)
- func StartHTTPServer(listenAddr string, handler http.Handler) (listener net.Listener, err error)
- func WriteRPCResponseHTTP(w http.ResponseWriter, res gtypes.RPCResponse)
- type RPCFunc
- type ResponseWriterWrapper
- func (w *ResponseWriterWrapper) Data() (b []byte)
- func (w *ResponseWriterWrapper) Flush()
- func (w *ResponseWriterWrapper) Hijack() (net.Conn, *bufio.ReadWriter, error)
- func (w *ResponseWriterWrapper) SetLogFields(fields map[string]string)
- func (w *ResponseWriterWrapper) Write(b []byte) (int, error)
- func (w *ResponseWriterWrapper) WriteHeader(status int)
- type WebsocketManager
Constants ¶
const ( MinReturnParamNum = iota + 2 MaxReturnParamNum = MinReturnParamNum + 1 )
const MaxAuditLogContentSize = 50
Variables ¶
var ( RE_HEX = regexp.MustCompile(`^(?i)[a-f0-9]+$`) RE_EMAIL = regexp.MustCompile(`^(?i)(` + dotAtom + `)@(` + dotAtom + `)$`) RE_ADDRESS = regexp.MustCompile(`^(?i)[a-z0-9]{25,34}$`) RE_HOST = regexp.MustCompile(`^(?i)(` + domain + `)$`) )
Functions ¶
func GetParamRegexp ¶
func NewWSConnection ¶
func NewWSConnection(baseConn *websocket.Conn, funcMap map[string]*RPCFunc, evsw events.EventSwitch) *wsConnection
new websocket connection wrapper
func RecoverAndLogHandler ¶
Wraps an HTTP handler, adding error logging. If the inner function panics, the outer function recovers, logs, sends an HTTP 500 error response.
func RegisterRPCFuncs ¶
Adds a route for each function in the funcMap, as well as general jsonrpc and websocket handlers for all functions. "result" is the interface on which the result objects are registered, and is popualted with every RPCResponse
func StartHTTPServer ¶
func WriteRPCResponseHTTP ¶
func WriteRPCResponseHTTP(w http.ResponseWriter, res gtypes.RPCResponse)
Types ¶
type RPCFunc ¶
type RPCFunc struct {
// contains filtered or unexported fields
}
holds all type information for each function
func NewRPCFunc ¶
wraps a function for quicker introspection f is the function, args are comma separated argument names
func NewWSRPCFunc ¶
type ResponseWriterWrapper ¶
type ResponseWriterWrapper struct { Status int http.ResponseWriter // contains filtered or unexported fields }
Remember the status for logging
func (*ResponseWriterWrapper) Data ¶ added in v1.4.2
func (w *ResponseWriterWrapper) Data() (b []byte)
func (*ResponseWriterWrapper) Flush ¶ added in v1.4.2
func (w *ResponseWriterWrapper) Flush()
func (*ResponseWriterWrapper) Hijack ¶
func (w *ResponseWriterWrapper) Hijack() (net.Conn, *bufio.ReadWriter, error)
implements http.Hijacker
func (*ResponseWriterWrapper) SetLogFields ¶ added in v1.4.3
func (w *ResponseWriterWrapper) SetLogFields(fields map[string]string)
func (*ResponseWriterWrapper) Write ¶ added in v1.4.2
func (w *ResponseWriterWrapper) Write(b []byte) (int, error)
func (*ResponseWriterWrapper) WriteHeader ¶
func (w *ResponseWriterWrapper) WriteHeader(status int)
type WebsocketManager ¶
Main manager for all websocket connections Holds the event switch NOTE: The websocket path is defined externally, e.g. in node/node.go
func NewWebsocketManager ¶
func NewWebsocketManager(funcMap map[string]*RPCFunc, evsw events.EventSwitch) *WebsocketManager
func (*WebsocketManager) WebsocketHandler ¶
func (wm *WebsocketManager) WebsocketHandler(w http.ResponseWriter, r *http.Request)
Upgrade the request/response (via http.Hijack) and starts the wsConnection.