Version: v1.5.0 Latest Latest

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

Go to latest
Published: May 6, 2020 License: Apache-2.0, Apache-2.0, Apache-2.0 Imports: 25 Imported by: 0



Commons for HTTP handling



View Source
const (
	MinReturnParamNum = iota + 2
	MaxReturnParamNum = MinReturnParamNum + 1
View Source
const MaxAuditLogContentSize = 50


View Source
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 + `)$`)


func GetParam

func GetParam(r *http.Request, param string) string

func GetParamByteSlice

func GetParamByteSlice(r *http.Request, param string) ([]byte, error)

func GetParamFloat64

func GetParamFloat64(r *http.Request, param string) (float64, error)

func GetParamInt32

func GetParamInt32(r *http.Request, param string) (int32, error)

func GetParamInt64

func GetParamInt64(r *http.Request, param string) (int64, error)

func GetParamRegexp

func GetParamRegexp(r *http.Request, param string, re *regexp.Regexp) (string, error)

func GetParamUint

func GetParamUint(r *http.Request, param string) (uint, error)

func GetParamUint64

func GetParamUint64(r *http.Request, param string) (uint64, error)

func NewWSConnection

func NewWSConnection(baseConn *websocket.Conn, funcMap map[string]*RPCFunc, evsw events.EventSwitch) *wsConnection

new websocket connection wrapper

func RecoverAndLogHandler

func RecoverAndLogHandler(handler http.Handler) http.Handler

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

func RegisterRPCFuncs(mux *http.ServeMux, funcMap map[string]*RPCFunc)

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 StartHTTPServer(listenAddr string, handler http.Handler) (listener net.Listener, err error)

func WriteRPCResponseHTTP

func WriteRPCResponseHTTP(w http.ResponseWriter, res gtypes.RPCResponse)


type RPCFunc

type RPCFunc struct {
	// contains filtered or unexported fields

holds all type information for each function

func NewRPCFunc

func NewRPCFunc(f interface{}, args string) *RPCFunc

wraps a function for quicker introspection f is the function, args are comma separated argument names

func NewWSRPCFunc

func NewWSRPCFunc(f interface{}, args string) *RPCFunc

type ResponseWriterWrapper

type ResponseWriterWrapper struct {
	Status int
	// 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

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

type WebsocketManager struct {
	// contains filtered or unexported fields

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.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
t or T : Toggle theme light dark auto
y or Y : Canonical URL