httpx

package
v0.0.0-...-2e41b90 Latest Latest
Warning

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

Go to latest
Published: Dec 9, 2022 License: Apache-2.0, Apache-2.0 Imports: 42 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func HandleRaw

func HandleRaw(action rawAction) http.HandlerFunc

func NewHistoryMiddleware

func NewHistoryMiddleware(ledgerState *ledger.State, staleThreshold int32, session db.SessionInterface) func(http.Handler) http.Handler

NewHistoryMiddleware adds session to the request context and ensures Horizon is not in a stale state, which is when the difference between latest core ledger and latest history ledger is higher than the given threshold

func WrapRaw

func WrapRaw(next http.Handler, action rawAction) http.Handler

Types

type ObjectActionHandler

type ObjectActionHandler struct {
	Action objectAction
}

func (ObjectActionHandler) ServeHTTP

func (handler ObjectActionHandler) ServeHTTP(
	w http.ResponseWriter,
	r *http.Request,
)

type ReplicaSyncCheckMiddleware

type ReplicaSyncCheckMiddleware struct {
	PrimaryHistoryQ *history.Q
	ReplicaHistoryQ *history.Q
	ServerMetrics   *ServerMetrics
}

func (*ReplicaSyncCheckMiddleware) Wrap

func (*ReplicaSyncCheckMiddleware) WrapFunc

WrapFunc executes the middleware on a given HTTP handler function

type Router

type Router struct {
	*chi.Mux
	Internal *chi.Mux
}

func NewRouter

func NewRouter(config *RouterConfig, serverMetrics *ServerMetrics, ledgerState *ledger.State) (*Router, error)

type RouterConfig

type RouterConfig struct {
	DBSession        db.SessionInterface
	PrimaryDBSession db.SessionInterface
	TxSubmitter      *txsub.System
	RateQuota        *throttled.RateQuota

	BehindCloudflare         bool
	BehindAWSLoadBalancer    bool
	SSEUpdateFrequency       time.Duration
	StaleThreshold           uint
	ConnectionTimeout        time.Duration
	NetworkPassphrase        string
	MaxPathLength            uint
	MaxAssetsPerPathRequest  int
	PathFinder               paths.Finder
	PrometheusRegistry       *prometheus.Registry
	CoreGetter               actions.CoreStateGetter
	HorizonVersion           string
	FriendbotURL             *url.URL
	HealthCheck              http.Handler
	EnableIngestionFiltering bool
}

type Server

type Server struct {
	Router  *Router
	Metrics *ServerMetrics
	// contains filtered or unexported fields
}

Server contains the http server related fields for horizon: the Router, rate limiter, etc.

func NewServer

func NewServer(serverConfig ServerConfig, routerConfig RouterConfig, ledgerState *ledger.State) (*Server, error)

func (*Server) RegisterMetrics

func (s *Server) RegisterMetrics(registry *prometheus.Registry)

RegisterMetrics registers the prometheus metrics

func (*Server) Serve

func (s *Server) Serve() error

func (*Server) Shutdown

func (s *Server) Shutdown(ctx context.Context) error

type ServerConfig

type ServerConfig struct {
	Port      uint16
	TLSConfig *TLSConfig
	AdminPort uint16
}

type ServerMetrics

type ServerMetrics struct {
	RequestDurationSummary  *prometheus.SummaryVec
	ReplicaLagErrorsCounter prometheus.Counter
}

type StateMiddleware

type StateMiddleware struct {
	HorizonSession      db.SessionInterface
	NoStateVerification bool
}

StateMiddleware is a middleware which enables a state handler if the state has been initialized. Unless NoStateVerification is set, it ensures that the state (ledger entries) has been verified and is correct (Otherwise returns `500 Internal Server Error` to prevent returning invalid data to the user)

func (*StateMiddleware) Wrap

WrapFunc executes the middleware on a given HTTP handler function

func (*StateMiddleware) WrapFunc

WrapFunc executes the middleware on a given HTTP handler function

type TLSConfig

type TLSConfig struct {
	CertPath, KeyPath string
}

type VaryByRemoteIP

type VaryByRemoteIP struct{}

func (VaryByRemoteIP) Key

func (v VaryByRemoteIP) Key(r *http.Request) string

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL