Documentation ¶
Overview ¶
Package actions provides the infrastructure for defining and executing actions (code that is triggered in response to an client request) on horizon. At present it allows for defining actions that can respond using JSON or SSE.
Index ¶
- Constants
- type Base
- func (base *Base) Do(fns ...func())
- func (base *Base) Execute(action interface{})
- func (base *Base) GetAccountID(name string) (result xdr.AccountId)
- func (base *Base) GetAddress(name string, opts ...Opt) (result string)
- func (base *Base) GetAmount(name string) (result xdr.Int64)
- func (base *Base) GetAsset(prefix string) (result xdr.Asset)
- func (base *Base) GetAssetType(name string) xdr.AssetType
- func (base *Base) GetCursor(name string) string
- func (base *Base) GetInt32(name string) int32
- func (base *Base) GetInt64(name string) int64
- func (base *Base) GetLimit(name string, def uint64, max uint64) uint64
- func (base *Base) GetPageQuery(opts ...Opt) db2.PageQuery
- func (base *Base) GetPositiveAmount(name string) (result xdr.Int64)
- func (base *Base) GetString(name string) string
- func (base *Base) GetTimeMillis(name string) (timeMillis time.Millis)
- func (base *Base) GetURLParam(key string) (string, bool)
- func (base *Base) MaybeGetAsset(prefix string) (xdr.Asset, bool)
- func (base *Base) Path() string
- func (base *Base) Prepare(w http.ResponseWriter, r *http.Request, appCtx context.Context, ...)
- func (base *Base) SetInvalidField(name string, reason error)
- func (base *Base) Setup(fns ...func())
- func (base *Base) ValidateBodyType()
- type JSON
- type Opt
- type RateLimiterProvider
- type Raw
- type SSE
Constants ¶
const ( // ParamCursor is a query string param name ParamCursor = "cursor" // ParamOrder is a query string param name ParamOrder = "order" // ParamLimit is a query string param name ParamLimit = "limit" )
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Base ¶
type Base struct { W http.ResponseWriter R *http.Request Err error // contains filtered or unexported fields }
Base is a helper struct you can use as part of a custom action via composition.
TODO: example usage
func (*Base) Do ¶
func (base *Base) Do(fns ...func())
Do executes the provided func iff there is no current error for the action. Provides a nicer way to invoke a set of steps that each may set `action.Err` during execution
func (*Base) Execute ¶
func (base *Base) Execute(action interface{})
Execute trigger content negotiation and the actual execution of one of the action's handlers.
func (*Base) GetAccountID ¶
GetAccountID retireves an xdr.AccountID by attempting to decode a stellar address at the provided name.
func (*Base) GetAddress ¶
GetAddress retrieves a stellar address. It confirms the value loaded is a valid stellar address, setting an invalid field error if it is not.
func (*Base) GetAmount ¶
GetAmount returns a native amount (i.e. 64-bit integer) by parsing the string at the provided name in accordance with the stellar client conventions
func (*Base) GetAsset ¶
GetAsset decodes an asset from the request fields prefixed by `prefix`. To succeed, three prefixed fields must be present: asset_type, asset_code, and asset_issuer.
func (*Base) GetAssetType ¶
GetAssetType is a helper that returns a xdr.AssetType by reading a string
func (*Base) GetCursor ¶
GetCursor retrieves a string from either the URLParams, form or query string. This method uses the priority (URLParams, Form, Query).
func (*Base) GetInt32 ¶
GetInt32 retrieves an int32 from the action parameter of the given name. Populates err if the value is not a valid int32
func (*Base) GetInt64 ¶
GetInt64 retrieves an int64 from the action parameter of the given name. Populates err if the value is not a valid int64
func (*Base) GetLimit ¶
GetLimit retrieves a uint64 limit from the action parameter of the given name. Populates err if the value is not a valid limit. Uses the provided default value if the limit parameter is a blank string.
func (*Base) GetPageQuery ¶
GetPageQuery is a helper that returns a new db.PageQuery struct initialized using the results from a call to GetPagingParams()
func (*Base) GetPositiveAmount ¶
GetPositiveAmount returns a native amount (i.e. 64-bit integer) by parsing the string at the provided name in accordance with the stellar client conventions. Renders error for negative amounts and zero.
func (*Base) GetString ¶
GetString retrieves a string from either the URLParams, form or query string. This method uses the priority (URLParams, Form, Query).
func (*Base) GetTimeMillis ¶
GetTimeMillis retrieves a TimeMillis from the action parameter of the given name. Populates err if the value is not a valid TimeMillis
func (*Base) GetURLParam ¶
GetURLParam returns the corresponding URL parameter value from the request routing context and an additional boolean reflecting whether or not the param was found. This is ported from Chi since the Chi version returns "" for params not found. This is undesirable since "" also is a valid url param. Ref: https://github.com/go-chi/chi/blob/d132b31857e5922a2cc7963f4fcfd8f46b3f2e97/context.go#L69
func (*Base) MaybeGetAsset ¶
MaybeGetAsset decodes an asset from the request fields as GetAsset does, but only if type field is populated. returns an additional boolean reflecting whether or not the decoding was performed
func (*Base) Path ¶
Path returns the current action's path, as determined by the http.Request of this action
func (*Base) Prepare ¶
func (base *Base) Prepare(w http.ResponseWriter, r *http.Request, appCtx context.Context, sseUpdateFrequency time.Duration)
Prepare established the common attributes that get used in nearly every action. "Child" actions may override this method to extend action, but it is advised you also call this implementation to maintain behavior.
func (*Base) SetInvalidField ¶
SetInvalidField establishes an error response triggered by an invalid input field from the user.
func (*Base) Setup ¶
func (base *Base) Setup(fns ...func())
Setup runs the provided funcs if and only if no call to Setup() has been made previously on this action.
func (*Base) ValidateBodyType ¶
func (base *Base) ValidateBodyType()
ValidateBodyType sets an error on the action if the requests Content-Type
is not `application/x-www-form-urlencoded`
type JSON ¶
type JSON interface {
JSON()
}
JSON implementors can respond to a request whose response type was negotiated to be MimeHal or MimeJSON.
type RateLimiterProvider ¶
type RateLimiterProvider interface {
GetRateLimiter() *throttled.HTTPRateLimiter
}
RateLimiterProvider is an interface that provides access to the type's HTTPRateLimiter.