Documentation ¶
Index ¶
- Constants
- func HandleMetrics(action metricsAction) http.HandlerFunc
- func NewHistoryMiddleware(staleThreshold int32, session *db.Session) func(http.Handler) http.Handler
- type Action
- func (action *Action) CoreQ() *core.Q
- func (action *Action) EnsureHistoryFreshness()
- func (action *Action) FullURL() *url.URL
- func (action *Action) HistoryQ() *history.Q
- func (action *Action) Prepare(w http.ResponseWriter, r *http.Request)
- func (action *Action) ValidateCursorAsDefault()
- func (action *Action) ValidateCursorWithinHistory()
- type App
- func (a *App) Close()
- func (a *App) CloseDB()
- func (a *App) CoreQ() *core.Q
- func (a *App) CoreSession(ctx context.Context) *db.Session
- func (a *App) DeleteUnretainedHistory() error
- func (a *App) GetRateLimiter() *throttled.HTTPRateLimiter
- func (a *App) HistoryQ() *history.Q
- func (a *App) HorizonSession(ctx context.Context) *db.Session
- func (a *App) IsHistoryStale() bool
- func (a *App) Serve()
- func (a *App) Tick()
- func (a *App) UpdateFeeStatsState()
- func (a *App) UpdateLedgerState()
- func (a *App) UpdateMetrics()
- func (a *App) UpdateStellarCoreInfo()
- type Config
- type DataShowAction
- type EffectIndexAction
- type FeeStatsAction
- type FindFixedPathsHandler
- type FindFixedPathsQuery
- type FindPathsHandler
- type LedgerIndexAction
- type LedgerShowAction
- type NotFoundAction
- type NotImplementedAction
- type OperationShowAction
- type RateLimitExceededAction
- type RootAction
- type StateMiddleware
- type StrictReceivePathsQuery
- type TradeAggregateIndexAction
- type TradeIndexAction
- type TransactionCreateAction
- type VaryByRemoteIP
Constants ¶
const (
LRUCacheSize = 50000
)
Variables ¶
This section is empty.
Functions ¶
func HandleMetrics ¶
func HandleMetrics(action metricsAction) http.HandlerFunc
func NewHistoryMiddleware ¶
func NewHistoryMiddleware(staleThreshold int32, session *db.Session) 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
Types ¶
type Action ¶
type Action struct { actions.Base App *App Log *log.Entry // contains filtered or unexported fields }
Action is the "base type" for all actions in horizon. It provides structs that embed it with access to the App struct.
func (*Action) EnsureHistoryFreshness ¶
func (action *Action) EnsureHistoryFreshness()
EnsureHistoryFreshness halts processing and raises
func (*Action) HistoryQ ¶
HistoryQ provides access to queries that access the history portion of horizon's database.
func (*Action) Prepare ¶
func (action *Action) Prepare(w http.ResponseWriter, r *http.Request)
Prepare sets the action's App field based upon the context
func (*Action) ValidateCursorAsDefault ¶
func (action *Action) ValidateCursorAsDefault()
ValidateCursorAsDefault ensures that the cursor parameter is valid in the way it is normally used, i.e. it is either the string "now" or a string of numerals that can be parsed as an int64.
func (*Action) ValidateCursorWithinHistory ¶
func (action *Action) ValidateCursorWithinHistory()
ValidateCursorWithinHistory compares the requested page of data against the ledger state of the history database. In the event that the cursor is guaranteed to return no results, we return a 410 GONE http response.
type App ¶
type App struct {
// contains filtered or unexported fields
}
App represents the root of the state of a horizon instance.
func AppFromContext ¶
AppFromContext returns the set app, if one has been set, from the provided context returns nil if no app has been set.
func (*App) Close ¶
func (a *App) Close()
Close cancels the app. It does not close DB connections - use App.CloseDB().
func (*App) CloseDB ¶
func (a *App) CloseDB()
CloseDB closes DB connections. When using during web server shut down make sure all requests are first properly finished to avoid "sql: database is closed" errors.
func (*App) CoreQ ¶
CoreQ returns a helper object for performing sql queries aginst the stellar core database.
func (*App) CoreSession ¶
CoreSession returns a new session that loads data from the stellar core database. The returned session is bound to `ctx`.
func (*App) DeleteUnretainedHistory ¶
DeleteUnretainedHistory forwards to the app's reaper. See `reap.DeleteUnretainedHistory` for details
func (*App) GetRateLimiter ¶
func (a *App) GetRateLimiter() *throttled.HTTPRateLimiter
GetRateLimiter returns the HTTPRateLimiter of the App.
func (*App) HistoryQ ¶
HistoryQ returns a helper object for performing sql queries against the history portion of horizon's database.
func (*App) HorizonSession ¶
HorizonSession returns a new session that loads data from the horizon database. The returned session is bound to `ctx`.
func (*App) IsHistoryStale ¶
IsHistoryStale returns true if the latest history ledger is more than `StaleThreshold` ledgers behind the latest core ledger
func (*App) Serve ¶
func (a *App) Serve()
Serve starts the horizon web server, binding it to a socket, setting up the shutdown signals.
func (*App) Tick ¶
func (a *App) Tick()
Tick triggers horizon to update all of it's background processes such as transaction submission, metrics, ingestion and reaping.
func (*App) UpdateFeeStatsState ¶
func (a *App) UpdateFeeStatsState()
UpdateFeeStatsState triggers a refresh of several operation fee metrics.
func (*App) UpdateLedgerState ¶
func (a *App) UpdateLedgerState()
UpdateLedgerState triggers a refresh of several metrics gauges, such as open db connections and ledger state
func (*App) UpdateMetrics ¶
func (a *App) UpdateMetrics()
UpdateMetrics triggers a refresh of several metrics gauges, such as open db connections and ledger state
func (*App) UpdateStellarCoreInfo ¶
func (a *App) UpdateStellarCoreInfo()
UpdateStellarCoreInfo updates the value of coreVersion, currentProtocolVersion, and coreSupportedProtocolVersion from the Stellar core API.
type Config ¶
type Config struct { DatabaseURL string StellarCoreDatabaseURL string StellarCoreURL string HistoryArchiveURLs []string Port uint AdminPort uint // MaxDBConnections has a priority over all 4 values below. MaxDBConnections int HorizonDBMaxOpenConnections int HorizonDBMaxIdleConnections int CoreDBMaxOpenConnections int CoreDBMaxIdleConnections int SSEUpdateFrequency time.Duration ConnectionTimeout time.Duration RateQuota *throttled.RateQuota FriendbotURL *url.URL LogLevel logrus.Level LogFile string // MaxPathLength is the maximum length of the path returned by `/paths` endpoint. MaxPathLength uint NetworkPassphrase string SentryDSN string LogglyToken string LogglyTag string // TLSCert is a path to a certificate file to use for horizon's TLS config TLSCert string // TLSKey is the path to a private key file to use for horizon's TLS config TLSKey string // Ingest toggles whether this horizon instance should run the data ingestion subsystem. Ingest bool // IngestFailedTransactions toggles whether to ingest failed transactions IngestFailedTransactions bool // CursorName is the cursor used for ingesting from stellar-core. // Setting multiple cursors in different Horizon instances allows multiple // Horizons to ingest from the same stellar-core instance without cursor // collisions. CursorName string // HistoryRetentionCount represents the minimum number of ledgers worth of // history data to retain in the horizon database. For the purposes of // determining a "retention duration", each ledger roughly corresponds to 10 // seconds of real time. HistoryRetentionCount uint // StaleThreshold represents the number of ledgers a history database may be // out-of-date by before horizon begins to respond with an error to history // requests. StaleThreshold uint // SkipCursorUpdate causes the ingestor to skip reporting the "last imported // ledger" state to stellar-core. SkipCursorUpdate bool // IngestDisableStateVerification disables state verification // `System.verifyState()` when set to `true`. IngestDisableStateVerification bool // ApplyMigrations will apply pending migrations to the horizon database // before starting the horizon service ApplyMigrations bool }
Config is the configuration for horizon. It gets populated by the app's main function and is provided to NewApp.
type DataShowAction ¶
DataShowAction renders a account summary found by its address.
func (DataShowAction) Handle ¶
func (action DataShowAction) Handle(w http.ResponseWriter, r *http.Request)
func (*DataShowAction) JSON ¶
func (action *DataShowAction) JSON() error
JSON is a method for actions.JSON
func (*DataShowAction) Raw ¶
func (action *DataShowAction) Raw() error
Raw is a method for actions.Raw
type EffectIndexAction ¶
type EffectIndexAction struct { Action AccountFilter string LedgerFilter int32 TransactionFilter string OperationFilter int64 PagingParams db2.PageQuery Records []history.Effect Page hal.Page Ledgers *history.LedgerCache }
EffectIndexAction renders a page of effect resources, identified by a normal page query and optionally filtered by an account, ledger, transaction, or operation.
func (EffectIndexAction) Handle ¶
func (action EffectIndexAction) Handle(w http.ResponseWriter, r *http.Request)
func (*EffectIndexAction) JSON ¶
func (action *EffectIndexAction) JSON() error
JSON is a method for actions.JSON
func (*EffectIndexAction) SSE ¶
func (action *EffectIndexAction) SSE(stream *sse.Stream) error
SSE is a method for actions.SSE
func (*EffectIndexAction) ValidateCursor ¶
func (action *EffectIndexAction) ValidateCursor()
ValidateCursor ensures that the provided cursor parameter is of the form OPERATIONID-INDEX (such as 1234-56) or is the special value "now" that represents the the cursor directly after the last closed ledger
type FeeStatsAction ¶
type FeeStatsAction struct { Action // contains filtered or unexported fields }
FeeStatsAction renders a few useful statistics that describe the current state of operation fees on the network.
func (FeeStatsAction) Handle ¶
func (action FeeStatsAction) Handle(w http.ResponseWriter, r *http.Request)
func (*FeeStatsAction) JSON ¶
func (action *FeeStatsAction) JSON() error
JSON is a method for actions.JSON
type FindFixedPathsHandler ¶
type FindFixedPathsHandler struct {
// contains filtered or unexported fields
}
FindFixedPathsHandler is the http handler for the find fixed payment paths endpoint Fixed payment paths are payment paths where both the source and destination asset are fixed
func (FindFixedPathsHandler) ServeHTTP ¶
func (handler FindFixedPathsHandler) ServeHTTP(w http.ResponseWriter, r *http.Request)
ServeHTTP implements the http.Handler interface
type FindFixedPathsQuery ¶
type FindFixedPathsQuery struct { DestinationAccount string `schema:"destination_account" valid:"accountID,optional"` DestinationAssets string `schema:"destination_assets" valid:"-"` SourceAssetType string `schema:"source_asset_type" valid:"assetType"` SourceAssetIssuer string `schema:"source_asset_issuer" valid:"accountID,optional"` SourceAssetCode string `schema:"source_asset_code" valid:"-"` SourceAmount string `schema:"source_amount" valid:"amount"` }
FindFixedPathsQuery query struct for paths/strict-send end-point
func (FindFixedPathsQuery) Amount ¶
func (q FindFixedPathsQuery) Amount() xdr.Int64
Amount returns source amount
func (FindFixedPathsQuery) Assets ¶
func (q FindFixedPathsQuery) Assets() ([]xdr.Asset, error)
Assets returns a list of xdr.Asset
func (FindFixedPathsQuery) SourceAsset ¶
func (q FindFixedPathsQuery) SourceAsset() xdr.Asset
SourceAsset returns an xdr.Asset
func (FindFixedPathsQuery) URITemplate ¶
func (q FindFixedPathsQuery) URITemplate() string
URITemplate returns a rfc6570 URI template for the query struct
func (FindFixedPathsQuery) Validate ¶
func (q FindFixedPathsQuery) Validate() error
Validate runs custom validations.
type FindPathsHandler ¶
type FindPathsHandler struct {
// contains filtered or unexported fields
}
FindPathsHandler is the http handler for the find payment paths endpoint
func (FindPathsHandler) ServeHTTP ¶
func (handler FindPathsHandler) ServeHTTP(w http.ResponseWriter, r *http.Request)
ServeHTTP implements the http.Handler interface
type LedgerIndexAction ¶
type LedgerIndexAction struct { Action PagingParams db2.PageQuery Records []history.Ledger Page hal.Page }
LedgerIndexAction renders a page of ledger resources, identified by a normal page query.
func (LedgerIndexAction) Handle ¶
func (action LedgerIndexAction) Handle(w http.ResponseWriter, r *http.Request)
func (*LedgerIndexAction) JSON ¶
func (action *LedgerIndexAction) JSON() error
JSON is a method for actions.JSON
type LedgerShowAction ¶
LedgerShowAction renders a ledger found by its sequence number.
func (LedgerShowAction) Handle ¶
func (action LedgerShowAction) Handle(w http.ResponseWriter, r *http.Request)
func (*LedgerShowAction) JSON ¶
func (action *LedgerShowAction) JSON() error
JSON is a method for actions.JSON
type NotFoundAction ¶
type NotFoundAction struct {
Action
}
NotFoundAction renders a 404 response
func (NotFoundAction) Handle ¶
func (action NotFoundAction) Handle(w http.ResponseWriter, r *http.Request)
func (*NotFoundAction) JSON ¶
func (action *NotFoundAction) JSON() error
JSON is a method for actions.JSON
type NotImplementedAction ¶
type NotImplementedAction struct {
Action
}
NotImplementedAction renders a NotImplemented prblem
func (NotImplementedAction) Handle ¶
func (action NotImplementedAction) Handle(w http.ResponseWriter, r *http.Request)
func (*NotImplementedAction) JSON ¶
func (action *NotImplementedAction) JSON() error
JSON is a method for actions.JSON
type OperationShowAction ¶
type OperationShowAction struct { Action ID int64 OperationRecord history.Operation TransactionRecord *history.Transaction Ledger history.Ledger IncludeTransactions bool Resource interface{} }
OperationShowAction renders a page of operation resources.
func (OperationShowAction) Handle ¶
func (action OperationShowAction) Handle(w http.ResponseWriter, r *http.Request)
func (*OperationShowAction) JSON ¶
func (action *OperationShowAction) JSON() error
JSON is a method for actions.JSON
type RateLimitExceededAction ¶
type RateLimitExceededAction struct {
Action
}
RateLimitExceededAction renders a 429 response
func (RateLimitExceededAction) Handle ¶
func (action RateLimitExceededAction) Handle(w http.ResponseWriter, r *http.Request)
func (RateLimitExceededAction) ServeHTTP ¶
func (action RateLimitExceededAction) ServeHTTP(w http.ResponseWriter, r *http.Request)
type RootAction ¶
type RootAction struct {
Action
}
RootAction provides a summary of the horizon instance and links to various useful endpoints
func (RootAction) Handle ¶
func (action RootAction) Handle(w http.ResponseWriter, r *http.Request)
func (*RootAction) JSON ¶
func (action *RootAction) JSON() error
JSON renders the json response for RootAction
type StateMiddleware ¶
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 ¶
func (m *StateMiddleware) Wrap(h http.Handler) http.Handler
WrapFunc executes the middleware on a given HTTP handler function
func (*StateMiddleware) WrapFunc ¶
func (m *StateMiddleware) WrapFunc(h http.HandlerFunc) http.HandlerFunc
WrapFunc executes the middleware on a given HTTP handler function
type StrictReceivePathsQuery ¶
type StrictReceivePathsQuery struct { SourceAssets string `schema:"source_assets" valid:"-"` SourceAccount string `schema:"source_account" valid:"accountID,optional"` DestinationAccount string `schema:"destination_account" valid:"accountID,optional"` DestinationAssetType string `schema:"destination_asset_type" valid:"assetType"` DestinationAssetIssuer string `schema:"destination_asset_issuer" valid:"accountID,optional"` DestinationAssetCode string `schema:"destination_asset_code" valid:"-"` DestinationAmount string `schema:"destination_amount" valid:"amount"` }
StrictReceivePathsQuery query struct for paths/strict-send end-point
func (StrictReceivePathsQuery) Amount ¶
func (q StrictReceivePathsQuery) Amount() xdr.Int64
Amount returns source amount
func (StrictReceivePathsQuery) Assets ¶
func (q StrictReceivePathsQuery) Assets() ([]xdr.Asset, error)
Assets returns a list of xdr.Asset
func (StrictReceivePathsQuery) DestinationAsset ¶
func (q StrictReceivePathsQuery) DestinationAsset() xdr.Asset
DestinationAsset returns an xdr.Asset
func (StrictReceivePathsQuery) URITemplate ¶
func (q StrictReceivePathsQuery) URITemplate() string
URITemplate returns a rfc6570 URI template for the query struct
func (StrictReceivePathsQuery) Validate ¶
func (q StrictReceivePathsQuery) Validate() error
Validate runs custom validations.
type TradeAggregateIndexAction ¶
type TradeAggregateIndexAction struct { Action BaseAssetFilter xdr.Asset CounterAssetFilter xdr.Asset StartTimeFilter time.Millis EndTimeFilter time.Millis OffsetFilter int64 ResolutionFilter int64 PagingParams db2.PageQuery Records []history.TradeAggregation Page hal.Page }
func (TradeAggregateIndexAction) Handle ¶
func (action TradeAggregateIndexAction) Handle(w http.ResponseWriter, r *http.Request)
func (*TradeAggregateIndexAction) JSON ¶
func (action *TradeAggregateIndexAction) JSON() error
JSON is a method for actions.JSON
type TradeIndexAction ¶
type TradeIndexAction struct { Action BaseAssetFilter xdr.Asset HasBaseAssetFilter bool CounterAssetFilter xdr.Asset HasCounterAssetFilter bool OfferFilter int64 AccountFilter string PagingParams db2.PageQuery Records []history.Trade Page hal.Page }
func (TradeIndexAction) Handle ¶
func (action TradeIndexAction) Handle(w http.ResponseWriter, r *http.Request)
func (*TradeIndexAction) JSON ¶
func (action *TradeIndexAction) JSON() error
JSON is a method for actions.JSON
type TransactionCreateAction ¶
type TransactionCreateAction struct { Action TX envelopeInfo Result txsub.Result Resource horizon.Transaction }
TransactionCreateAction submits a transaction to the stellar-core network on behalf of the requesting client.
func (TransactionCreateAction) Handle ¶
func (action TransactionCreateAction) Handle(w http.ResponseWriter, r *http.Request)
func (*TransactionCreateAction) JSON ¶
func (action *TransactionCreateAction) JSON() error
JSON format action handler
type VaryByRemoteIP ¶
type VaryByRemoteIP struct{}
Source Files ¶
- action.go
- actions.go
- actions_data.go
- actions_effects.go
- actions_ledger.go
- actions_not_found.go
- actions_not_implemented.go
- actions_operation.go
- actions_operation_fee_stats.go
- actions_path.go
- actions_rate_limit_exceeded.go
- actions_root.go
- actions_trade.go
- actions_transaction.go
- app.go
- config.go
- handler.go
- helpers.go
- init.go
- middleware.go
- urlparams.go
- web.go
Directories ¶
Path | Synopsis |
---|---|
Package actions provides the infrastructure for defining and executing actions (code that is triggered in response to an client request) on horizon.
|
Package actions provides the infrastructure for defining and executing actions (code that is triggered in response to an client request) on horizon. |
Package assets is a simple helper package to help convert to/from xdr.AssetType values
|
Package assets is a simple helper package to help convert to/from xdr.AssetType values |
Package codes is a helper package to help convert to transaction and operation result codes to strings used in horizon.
|
Package codes is a helper package to help convert to transaction and operation result codes to strings used in horizon. |
Package db2 is the replacement for db.
|
Package db2 is the replacement for db. |
core
Package core contains database record definitions useable for reading rows from a Stellar Core db
|
Package core contains database record definitions useable for reading rows from a Stellar Core db |
history
Package history contains database record definitions useable for reading rows from a the history portion of horizon's database
|
Package history contains database record definitions useable for reading rows from a the history portion of horizon's database |
sqx
Package sqx contains utilities and extensions for the squirrel package which is used by horizon to generate sql statements.
|
Package sqx contains utilities and extensions for the squirrel package which is used by horizon to generate sql statements. |
Package expingest contains the new ingestion system for horizon.
|
Package expingest contains the new ingestion system for horizon. |
Package hchi provides functions to support embedded and retrieving a request id from a go context tree
|
Package hchi provides functions to support embedded and retrieving a request id from a go context tree |
Package ledger provides useful utilities concerning ledgers within stellar, specifically as a central location to store a cached snapshot of the state of both horizon's and stellar-core's views of the ledger.
|
Package ledger provides useful utilities concerning ledgers within stellar, specifically as a central location to store a cached snapshot of the state of both horizon's and stellar-core's views of the ledger. |
Package operationfeestats provides useful utilities concerning operation fee stats within stellar,specifically as a central location to store a cached snapshot of the state of network per operation fees and surge pricing.
|
Package operationfeestats provides useful utilities concerning operation fee stats within stellar,specifically as a central location to store a cached snapshot of the state of network per operation fees and surge pricing. |
Package paths provides utilities and facilities for payment paths as needed by horizon.
|
Package paths provides utilities and facilities for payment paths as needed by horizon. |
Package reap contains the history reaping subsystem for horizon.
|
Package reap contains the history reaping subsystem for horizon. |
sse
This package contains the Server Sent Events implementation used by horizon.
|
This package contains the Server Sent Events implementation used by horizon. |
Package simplepath provides an implementation of paths.
|
Package simplepath provides an implementation of paths. |
Package test contains simple test helpers that should not have any dependencies on horizon's packages.
|
Package test contains simple test helpers that should not have any dependencies on horizon's packages. |
db
Package db provides helpers to connect to test databases.
|
Package db provides helpers to connect to test databases. |
trades
Common infrastructure for testing Trades
|
Common infrastructure for testing Trades |
transactions
Package transactions offers common infrastructure for testing Transactions
|
Package transactions offers common infrastructure for testing Transactions |
Package txsub provides the machinery that horizon uses to submit transactions to the stellar network and track their progress.
|
Package txsub provides the machinery that horizon uses to submit transactions to the stellar network and track their progress. |
results/db
Package results provides an implementation of the txsub.ResultProvider interface backed using the SQL databases used by both stellar core and horizon
|
Package results provides an implementation of the txsub.ResultProvider interface backed using the SQL databases used by both stellar core and horizon |
sequence
Package sequence providers helpers to manage sequence numbers on behalf of horizon clients.
|
Package sequence providers helpers to manage sequence numbers on behalf of horizon clients. |
Package utf8 contains utilities for working with utf8 data.
|
Package utf8 contains utilities for working with utf8 data. |