Documentation
¶
Index ¶
- Constants
- 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) AuroraSession(ctx context.Context) *db.Session
- 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) IsHistoryStale() bool
- func (a *App) Serve()
- func (a *App) Tick()
- func (a *App) UpdateDiamNetCoreInfo()
- func (a *App) UpdateLedgerState()
- func (a *App) UpdateMetrics()
- func (a *App) UpdateOperationFeeStatsState()
- type AssetsAction
- type Config
- type DataShowAction
- type EffectIndexAction
- type FixedPathIndexAction
- type LedgerIndexAction
- type LedgerShowAction
- type MetricsAction
- type NotFoundAction
- type NotImplementedAction
- type OffersByAccountAction
- type OperationFeeStatsAction
- type OperationIndexAction
- type OperationShowAction
- type OrderBookShowAction
- func (action OrderBookShowAction) Handle(w http.ResponseWriter, r *http.Request)
- func (action *OrderBookShowAction) JSON() error
- func (action *OrderBookShowAction) LoadEvent() (sse.Event, error)
- func (action *OrderBookShowAction) LoadQuery()
- func (action *OrderBookShowAction) LoadRecord()
- func (action *OrderBookShowAction) LoadResource()
- type PathIndexAction
- type RateLimitExceededAction
- type RootAction
- type TradeAggregateIndexAction
- type TradeIndexAction
- type TransactionCreateAction
- type VaryByRemoteIP
Constants ¶
const LRUCacheSize = 50000
Variables ¶
This section is empty.
Functions ¶
This section is empty.
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 aurora. 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 aurora'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 aurora 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) AuroraSession ¶
AuroraSession returns a new session that loads data from the aurora database. The returned session is bound to `ctx`.
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 diamnet core database.
func (*App) CoreSession ¶
CoreSession returns a new session that loads data from the diamnet 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 aurora's database.
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 aurora web server, binding it to a socket, setting up the shutdown signals.
func (*App) Tick ¶
func (a *App) Tick()
Tick triggers aurora to update all of it's background processes such as transaction submission, metrics, ingestion and reaping.
func (*App) UpdateDiamNetCoreInfo ¶
func (a *App) UpdateDiamNetCoreInfo()
UpdateDiamNetCoreInfo updates the value of coreVersion, currentProtocolVersion, and coreSupportedProtocolVersion from the DiamNet core API.
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) UpdateOperationFeeStatsState ¶
func (a *App) UpdateOperationFeeStatsState()
UpdateOperationFeeStatsState triggers a refresh of several operation fee metrics.
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)
func (*AssetsAction) JSON ¶
func (action *AssetsAction) JSON() error
JSON is a method for actions.JSON
type Config ¶
type Config struct {
DatabaseURL string
DiamNetCoreDatabaseURL string
DiamNetCoreURL string
HistoryArchiveURLs []string
Port uint
// MaxDBConnections has a priority over all 4 values below.
MaxDBConnections int
AuroraDBMaxOpenConnections int
AuroraDBMaxIdleConnections int
CoreDBMaxOpenConnections int
CoreDBMaxIdleConnections int
SSEUpdateFrequency time.Duration
ConnectionTimeout time.Duration
RateQuota *throttled.RateQuota
RateLimitRedisKey string
RedisURL string
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 aurora's TLS config
TLSCert string
// TLSKey is the path to a private key file to use for aurora's TLS config
TLSKey string
// Ingest toggles whether this aurora instance should run the data ingestion subsystem.
Ingest bool
// EnableExperimentalIngestion a feature flag that enables the exprimental ingestion subsystem.
// If this flag is true then the following features in aurora will be available:
// * In-Memory path finding
// * Accounts for signers endpoint
EnableExperimentalIngestion bool
// IngestStateReaderTempSet defines where to store temporary objects during state
// ingestion. Possible options are `memory` and `postgres`.
IngestStateReaderTempSet string
// IngestFailedTransactions toggles whether to ingest failed transactions
IngestFailedTransactions bool
// CursorName is the cursor used for ingesting from diamnet-core.
// Setting multiple cursors in different Aurora instances allows multiple
// Auroras to ingest from the same diamnet-core instance without cursor
// collisions.
CursorName string
// HistoryRetentionCount represents the minimum number of ledgers worth of
// history data to retain in the aurora 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 aurora begins to respond with an error to history
// requests.
StaleThreshold uint
// SkipCursorUpdate causes the ingestor to skip reporting the "last imported
// ledger" state to diamnet-core.
SkipCursorUpdate bool
// EnableAssetStats is a feature flag that determines whether to calculate
// asset stats during the ingestion and expose `/assets` endpoint.
// Enabling it has a negative impact on CPU when ingesting ledgers full of
// many different assets related operations.
EnableAssetStats bool
}
Config is the configuration for aurora. It gets 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() 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 FixedPathIndexAction ¶
type FixedPathIndexAction struct {
Action
Records []paths.Path
Page hal.BasePage
// contains filtered or unexported fields
}
FixedPathIndexAction provides path finding where the source asset and destination asset is fixed
func (FixedPathIndexAction) Handle ¶
func (action FixedPathIndexAction) Handle(w http.ResponseWriter, r *http.Request)
func (*FixedPathIndexAction) JSON ¶
func (action *FixedPathIndexAction) JSON() error
JSON implements actions.JSON
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 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) JSON ¶
func (action *MetricsAction) JSON() error
JSON is a method for actions.JSON
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() 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 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() error
JSON is a method for actions.JSON
type OperationFeeStatsAction ¶
type OperationFeeStatsAction struct {
Action
FeeMin int64
FeeMode int64
FeeP10 int64
FeeP20 int64
FeeP30 int64
FeeP40 int64
FeeP50 int64
FeeP60 int64
FeeP70 int64
FeeP80 int64
FeeP90 int64
FeeP95 int64
FeeP99 int64
LedgerCapacityUsage string
LastBaseFee int64
LastLedger int64
}
OperationFeeStatsAction renders a few useful statistics that describe the current state of operation fees on the network.
func (OperationFeeStatsAction) Handle ¶
func (action OperationFeeStatsAction) Handle(w http.ResponseWriter, r *http.Request)
func (*OperationFeeStatsAction) JSON ¶
func (action *OperationFeeStatsAction) JSON() error
JSON is a method for actions.JSON
type OperationIndexAction ¶
type OperationIndexAction struct {
Action
LedgerFilter int32
AccountFilter string
TransactionFilter string
PagingParams db2.PageQuery
OperationRecords []history.Operation
TransactionRecords []history.Transaction
Ledgers *history.LedgerCache
Page hal.Page
IncludeFailed bool
IncludeTransactions bool
OnlyPayments bool
}
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() 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 OrderBookShowAction ¶
type OrderBookShowAction struct {
Action
Selling xdr.Asset
Buying xdr.Asset
Record core.OrderBookSummary
Resource aurora.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() error
JSON is a method for actions.JSON
func (*OrderBookShowAction) LoadEvent ¶
func (action *OrderBookShowAction) LoadEvent() (sse.Event, error)
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
type PathIndexAction ¶
PathIndexAction provides path finding
func (PathIndexAction) Handle ¶
func (action PathIndexAction) Handle(w http.ResponseWriter, r *http.Request)
func (*PathIndexAction) JSON ¶
func (action *PathIndexAction) JSON() error
JSON implements 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 aurora 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 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 string
Result txsub.Result
Resource aurora.TransactionSuccess
}
TransactionCreateAction submits a transaction to the diamnet-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_assets.go
- actions_data.go
- actions_effects.go
- actions_fixed_path.go
- actions_ledger.go
- actions_metrics.go
- actions_not_found.go
- actions_not_implemented.go
- actions_offer.go
- actions_operation.go
- actions_operation_fee_stats.go
- actions_order_book.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
- main.go
- main_generated.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 aurora.
|
Package actions provides the infrastructure for defining and executing actions (code that is triggered in response to an client request) on aurora. |
|
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 aurora.
|
Package codes is a helper package to help convert to transaction and operation result codes to strings used in aurora. |
|
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 DiamNet Core db
|
Package core contains database record definitions useable for reading rows from a DiamNet Core db |
|
history
Package history contains database record definitions useable for reading rows from a the history portion of aurora's database
|
Package history contains database record definitions useable for reading rows from a the history portion of aurora's database |
|
sqx
Package sqx contains utilities and extensions for the squirrel package which is used by aurora to generate sql statements.
|
Package sqx contains utilities and extensions for the squirrel package which is used by aurora to generate sql statements. |
|
Package expingest contains the new ingestion system for aurora.
|
Package expingest contains the new ingestion system for aurora. |
|
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 ingest contains the ingestion system for aurora.
|
Package ingest contains the ingestion system for aurora. |
|
participants
Package participants contains functions to derive a set of "participant" addresses for various data structures in the DiamNet network's ledger.
|
Package participants contains functions to derive a set of "participant" addresses for various data structures in the DiamNet network's ledger. |
|
Package ledger provides useful utilities concerning ledgers within diamnet, specifically as a central location to store a cached snapshot of the state of both aurora's and diamnet-core's views of the ledger.
|
Package ledger provides useful utilities concerning ledgers within diamnet, specifically as a central location to store a cached snapshot of the state of both aurora's and diamnet-core's views of the ledger. |
|
Package operationfeestats provides useful utilities concerning operation fee stats within diamnet,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 diamnet,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 aurora.
|
Package paths provides utilities and facilities for payment paths as needed by aurora. |
|
Package reap contains the history reaping subsystem for aurora.
|
Package reap contains the history reaping subsystem for aurora. |
|
sse
This package contains the Server Sent Events implementation used by aurora.
|
This package contains the Server Sent Events implementation used by aurora. |
|
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 aurora's packages.
|
Package test contains simple test helpers that should not have any dependencies on aurora'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 aurora uses to submit transactions to the diamnet network and track their progress.
|
Package txsub provides the machinery that aurora uses to submit transactions to the diamnet 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 diamnet core and aurora
|
Package results provides an implementation of the txsub.ResultProvider interface backed using the SQL databases used by both diamnet core and aurora |
|
sequence
Package sequence providers helpers to manage sequence numbers on behalf of aurora clients.
|
Package sequence providers helpers to manage sequence numbers on behalf of aurora clients. |
|
Package utf8 contains utilities for working with utf8 data.
|
Package utf8 contains utilities for working with utf8 data. |