Documentation ¶
Index ¶
- func LoggerMiddleware(h http.Handler) http.Handler
- func RecoverMiddleware(h http.Handler) http.Handler
- type AccountShowAction
- 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) Context(ctx context.Context) context.Context
- func (a *App) CoreQ() *core.Q
- func (a *App) CoreSession(ctx context.Context) *db.Session
- func (a *App) DeleteUnretainedHistory() error
- func (a *App) HistoryQ() *history.Q
- func (a *App) HorizonSession(ctx context.Context) *db.Session
- func (a *App) IsHistoryStale() bool
- func (app *App) Middleware(h http.Handler) http.Handler
- func (a *App) Serve()
- func (a *App) Tick()
- func (a *App) UpdateLedgerState()
- func (a *App) UpdateMetrics()
- func (a *App) UpdateStellarCoreInfo()
- type AssetsAction
- type Config
- type DataShowAction
- type EffectIndexAction
- type InitFn
- type LedgerIndexAction
- type LedgerShowAction
- type MetricsAction
- type NotFoundAction
- type NotImplementedAction
- type OffersByAccountAction
- type OperationIndexAction
- type OperationShowAction
- type OrderBookShowAction
- func (action OrderBookShowAction) Handle(w http.ResponseWriter, r *http.Request)
- func (action *OrderBookShowAction) JSON()
- func (action *OrderBookShowAction) LoadQuery()
- func (action *OrderBookShowAction) LoadRecord()
- func (action *OrderBookShowAction) LoadResource()
- func (action *OrderBookShowAction) SSE(stream sse.Stream)
- type PathIndexAction
- type PaymentsIndexAction
- type RateLimitExceededAction
- type RootAction
- type TradeAggregateIndexAction
- type TradeIndexAction
- type TransactionCreateAction
- type TransactionIndexAction
- type TransactionShowAction
- type Web
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func LoggerMiddleware ¶
LoggerMiddleware is the middleware that logs http requests and resposnes to the logging subsytem of horizon.
Types ¶
type AccountShowAction ¶
type AccountShowAction struct { Action Address string HistoryRecord history.Account CoreData []core.AccountData CoreRecord core.Account CoreSigners []core.Signer CoreTrustlines []core.Trustline Resource horizon.Account }
AccountShowAction renders a account summary found by its address.
func (AccountShowAction) Handle ¶
func (action AccountShowAction) Handle(w http.ResponseWriter, r *http.Request)
func (*AccountShowAction) JSON ¶
func (action *AccountShowAction) JSON()
JSON is a method for actions.JSON
func (*AccountShowAction) SSE ¶
func (action *AccountShowAction) SSE(stream sse.Stream)
SSE is a method for actions.SSE
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.
Additionally, this type is a trigger for go-codegen and causes the file at Action.tmpl to be instantiated for each struct that embeds Action.
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 and forces the closure of db connections
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) 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) Middleware ¶
Adds the "app" context into every request, so that subsequence middleware or handlers can retrieve a horizon.App instance
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) 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 and networkPassphrase from the Stellar core API.
type AssetsAction ¶
type AssetsAction struct { Action AssetCode string AssetIssuer string PagingParams db2.PageQuery Records []assets.AssetStatsR Page hal.Page }
AssetsAction renders a page of Assets
func (AssetsAction) Handle ¶
func (action AssetsAction) Handle(w http.ResponseWriter, r *http.Request)
type Config ¶
type Config struct { DatabaseURL string StellarCoreDatabaseURL string StellarCoreURL string Port int RateLimit throttled.Quota RedisURL string FriendbotURL *url.URL LogLevel logrus.Level LogFile string SentryDSN string LogglyTag string LogglyToken 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 is a boolean that indicates whether or not this horizon instance // should run the data ingestion subsystem. Ingest bool // 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 // DisableAssetStats is a feature flag that determines whether to calculate // asset stats during the ingestion and expose `/assets` endpoint. // Disabling it will save CPU when ingesting ledgers full of many different // assets related operations. DisableAssetStats bool // AllowEmptyLedgerDataResponses is a feature flag that sets unavailable // ledger data (like `close_time`) to `nil` instead of returning 500 error // response. AllowEmptyLedgerDataResponses bool }
Config is the configuration for horizon. It get's populated by the app's main function and is provided to NewApp.
type DataShowAction ¶
type DataShowAction struct { Action Address string Key string Data core.AccountData }
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()
JSON is a method for actions.JSON
func (*DataShowAction) SSE ¶
func (action *DataShowAction) SSE(stream sse.Stream)
SSE is a method for actions.SSE
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()
JSON is a method for actions.JSON
func (*EffectIndexAction) SSE ¶
func (action *EffectIndexAction) SSE(stream sse.Stream)
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 InitFn ¶
type InitFn func(*App)
InitFn is a function that contributes to the initialization of an App struct
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()
JSON is a method for actions.JSON
func (*LedgerIndexAction) SSE ¶
func (action *LedgerIndexAction) SSE(stream sse.Stream)
SSE is a method for actions.SSE
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()
JSON is a method for actions.JSON
type MetricsAction ¶
MetricsAction collects and renders a snapshot from the metrics system that will inlude any previously registered metrics.
func (MetricsAction) Handle ¶
func (action MetricsAction) Handle(w http.ResponseWriter, r *http.Request)
func (*MetricsAction) LoadSnapshot ¶
func (action *MetricsAction) LoadSnapshot()
LoadSnapshot populates action.Snapshot
Original code copied from github.com/rcrowley/go-metrics MarshalJSON
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()
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()
JSON is a method for actions.JSON
type OffersByAccountAction ¶
type OffersByAccountAction struct { Action Address string PageQuery db2.PageQuery Records []core.Offer Ledgers history.LedgerCache Page hal.Page }
OffersByAccountAction renders a page of offer resources, for a given account. These offers are present in the ledger as of the latest validated ledger.
func (OffersByAccountAction) Handle ¶
func (action OffersByAccountAction) Handle(w http.ResponseWriter, r *http.Request)
func (*OffersByAccountAction) JSON ¶
func (action *OffersByAccountAction) JSON()
JSON is a method for actions.JSON
func (*OffersByAccountAction) SSE ¶
func (action *OffersByAccountAction) SSE(stream sse.Stream)
SSE is a method for actions.SSE
type OperationIndexAction ¶
type OperationIndexAction struct { Action LedgerFilter int32 AccountFilter string TransactionFilter string PagingParams db2.PageQuery Records []history.Operation Ledgers history.LedgerCache Page hal.Page }
OperationIndexAction renders a page of operations resources, identified by a normal page query and optionally filtered by an account, ledger, or transaction.
func (OperationIndexAction) Handle ¶
func (action OperationIndexAction) Handle(w http.ResponseWriter, r *http.Request)
func (*OperationIndexAction) JSON ¶
func (action *OperationIndexAction) JSON()
JSON is a method for actions.JSON
func (*OperationIndexAction) SSE ¶
func (action *OperationIndexAction) SSE(stream sse.Stream)
SSE is a method for actions.SSE
type OperationShowAction ¶
type OperationShowAction struct { Action ID int64 Record history.Operation Ledger history.Ledger Resource interface{} }
OperationShowAction renders a ledger found by its sequence number.
func (OperationShowAction) Handle ¶
func (action OperationShowAction) Handle(w http.ResponseWriter, r *http.Request)
func (*OperationShowAction) JSON ¶
func (action *OperationShowAction) JSON()
JSON is a method for actions.JSON
type OrderBookShowAction ¶
type OrderBookShowAction struct { Action Selling xdr.Asset Buying xdr.Asset Record core.OrderBookSummary Resource horizon.OrderBookSummary Limit uint64 }
OrderBookShowAction renders a account summary found by its address.
func (OrderBookShowAction) Handle ¶
func (action OrderBookShowAction) Handle(w http.ResponseWriter, r *http.Request)
func (*OrderBookShowAction) JSON ¶
func (action *OrderBookShowAction) JSON()
JSON is a method for actions.JSON
func (*OrderBookShowAction) LoadQuery ¶
func (action *OrderBookShowAction) LoadQuery()
LoadQuery sets action.Query from the request params
func (*OrderBookShowAction) LoadRecord ¶
func (action *OrderBookShowAction) LoadRecord()
LoadRecord populates action.Record
func (*OrderBookShowAction) LoadResource ¶
func (action *OrderBookShowAction) LoadResource()
LoadResource populates action.Record
func (*OrderBookShowAction) SSE ¶
func (action *OrderBookShowAction) SSE(stream sse.Stream)
SSE is a method for actions.SSE
type PathIndexAction ¶
PathIndexAction provides path finding
func (PathIndexAction) Handle ¶
func (action PathIndexAction) Handle(w http.ResponseWriter, r *http.Request)
type PaymentsIndexAction ¶
type PaymentsIndexAction struct { Action LedgerFilter int32 AccountFilter string TransactionFilter string PagingParams db2.PageQuery Records []history.Operation Ledgers history.LedgerCache Page hal.Page }
PaymentsIndexAction returns a paged slice of payments based upon the provided filters
func (PaymentsIndexAction) Handle ¶
func (action PaymentsIndexAction) Handle(w http.ResponseWriter, r *http.Request)
func (*PaymentsIndexAction) JSON ¶
func (action *PaymentsIndexAction) JSON()
JSON is a method for actions.JSON
func (*PaymentsIndexAction) SSE ¶
func (action *PaymentsIndexAction) SSE(stream sse.Stream)
SSE is a method for actions.SSE
type RateLimitExceededAction ¶
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()
JSON renders the json response for RootAction
type TradeAggregateIndexAction ¶
type TradeAggregateIndexAction struct { Action BaseAssetFilter xdr.Asset CounterAssetFilter xdr.Asset StartTimeFilter time.Millis EndTimeFilter time.Millis 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()
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()
JSON is a method for actions.JSON
type TransactionCreateAction ¶
type TransactionCreateAction struct { Action TX string Result txsub.Result Resource horizon.TransactionSuccess }
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()
JSON format action handler
type TransactionIndexAction ¶
type TransactionIndexAction struct { Action LedgerFilter int32 AccountFilter string PagingParams db2.PageQuery Records []history.Transaction Page hal.Page }
TransactionIndexAction renders a page of ledger resources, identified by a normal page query.
func (TransactionIndexAction) Handle ¶
func (action TransactionIndexAction) Handle(w http.ResponseWriter, r *http.Request)
func (*TransactionIndexAction) JSON ¶
func (action *TransactionIndexAction) JSON()
JSON is a method for actions.JSON
func (*TransactionIndexAction) SSE ¶
func (action *TransactionIndexAction) SSE(stream sse.Stream)
SSE is a method for actions.SSE
type TransactionShowAction ¶
type TransactionShowAction struct { Action Hash string Record history.Transaction Resource horizon.Transaction }
TransactionShowAction renders a ledger found by its sequence number.
func (TransactionShowAction) Handle ¶
func (action TransactionShowAction) Handle(w http.ResponseWriter, r *http.Request)
func (*TransactionShowAction) JSON ¶
func (action *TransactionShowAction) JSON()
JSON is a method for actions.JSON
Source Files ¶
- action.go
- actions_account.go
- actions_assets.go
- actions_data.go
- actions_effects.go
- actions_ledger.go
- actions_metrics.go
- actions_not_found.go
- actions_not_implemented.go
- actions_offer.go
- actions_operation.go
- actions_order_book.go
- actions_path.go
- actions_payment.go
- actions_rate_limit_exceeded.go
- actions_root.go
- actions_trade.go
- actions_transaction.go
- app.go
- config.go
- init.go
- init_app_context.go
- init_core_info.go
- init_db.go
- init_ingester.go
- init_log.go
- init_metrics.go
- init_path_finder.go
- init_reaper.go
- init_redis.go
- init_txsub.go
- init_web.go
- main.go
- main_generated.go
- middleware_app.go
- middleware_cache_headers.go
- middleware_context.go
- middleware_logger.go
- middleware_rate_limit.go
- middleware_recover.go
- middleware_request_metrics.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 ingest contains the ingestion system for horizon.
|
Package ingest contains the ingestion system for horizon. |
participants
Package participants contains functions to derive a set of "participant" addresses for various data structures in the Stellar network's ledger.
|
Package participants contains functions to derive a set of "participant" addresses for various data structures in the Stellar network's 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 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 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.Finder that performs a breadth first search for paths against a stellar-core's database
|
Package simplepath provides an implementation of paths.Finder that performs a breadth first search for paths against a stellar-core's database |
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 |
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. |