Documentation ¶
Index ¶
- Constants
- Variables
- func KeyBagByUserPass(username string, password string) *crypto.KeyBag
- func Sha256f(input []byte, outputEncoding string) string
- func UserPasstoPri(username string, password string) []string
- type BestNodeClientProvider
- type ClientProvider
- type CybexAPI
- type ErrorFunc
- type LatencyTester
- type NodeStats
- type NotifyFunc
- type RPCCall
- type RPCClient
- type ResponseError
- type ResponseErrorContext
- type ResponseErrorData
- type ResponseErrorStack
- type SimpleClientProvider
- type WebsocketClient
Constants ¶
const ( InvalidApiID = -1 AssetsListAll = -1 AssetsMaxBatchSize = 100 GetCallOrdersLimit = 100 GetLimitOrdersLimit = 100 GetSettleOrdersLimit = 100 GetTradeHistoryLimit = 100 GetAccountHistoryLimit = 100 )
Variables ¶
var ( DialerTimeout = time.Duration(5 * time.Second) ReadWriteTimeout = time.Duration(10 * time.Second) ErrShutdown = errors.New("connection is shut down") )
var (
//LoopSeconds = time for one pass to calc dynamic delay
LoopSeconds = 60
)
Functions ¶
func UserPasstoPri ¶
Types ¶
type BestNodeClientProvider ¶
type BestNodeClientProvider struct { WebsocketClient // contains filtered or unexported fields }
func (*BestNodeClientProvider) CallAPI ¶
func (p *BestNodeClientProvider) CallAPI(apiID int, method string, args ...interface{}) (interface{}, error)
func (*BestNodeClientProvider) Close ¶
func (p *BestNodeClientProvider) Close() error
type ClientProvider ¶
type ClientProvider interface { OnError(fn ErrorFunc) Connect() error OnNotify(subscriberID int, fn NotifyFunc) error CallAPI(apiID int, method string, args ...interface{}) (interface{}, error) Close() error }
func NewBestNodeClientProvider ¶
func NewBestNodeClientProvider(endpointURL string, api CybexAPI) (ClientProvider, error)
func NewSimpleClientProvider ¶
func NewSimpleClientProvider(endpointURL string, api CybexAPI) ClientProvider
type CybexAPI ¶
type CybexAPI interface { //Common functions CallWsAPI(apiID int, method string, args ...interface{}) (interface{}, error) Close() error Connect() error DatabaseAPIID() int HistoryAPIID() int BroadcastAPIID() int SetCredentials(username, password string) OnError(ErrorFunc) OnNotify(subscriberID int, notifyFn func(msg interface{}) error) error BuildSignedTransaction(keyBag *crypto.KeyBag, feeAsset types.GrapheneObject, ops ...types.Operation) (*types.SignedTransaction, error) VerifySignedTransaction(keyBag *crypto.KeyBag, tx *types.SignedTransaction) (bool, error) SignTransaction(keyBag *crypto.KeyBag, trx *types.SignedTransaction) error SignWithKeys(types.PrivateKeys, *types.SignedTransaction) error //Websocket API functions BroadcastTransaction(tx *types.SignedTransaction) error ValidateTransaction(tx *types.SignedTransaction) error CancelAllSubscriptions() error CancelOrder(orderID types.GrapheneObject, broadcast bool) (*types.SignedTransaction, error) GetAccountBalances(account types.GrapheneObject, assets ...types.GrapheneObject) (types.AssetAmounts, error) GetAccountByName(name string) (*types.Account, error) GetAccountHistory(account types.GrapheneObject, stop types.GrapheneObject, limit int, start types.GrapheneObject) (types.OperationHistories, error) GetAccounts(accountIDs ...types.GrapheneObject) (types.Accounts, error) GetFullAccounts(accountIDs ...types.GrapheneObject) (types.FullAccountInfos, error) GetBlock(number uint64) (interface{}, error) GetCallOrders(assetID types.GrapheneObject, limit int) (types.CallOrders, error) GetChainID() (string, error) GetDynamicGlobalProperties() (*types.DynamicGlobalProperties, error) GetLimitOrders(base, quote types.GrapheneObject, limit int) (types.LimitOrders, error) GetOrderBook(base, quote types.GrapheneObject, depth int) (types.OrderBook, error) GetMarginPositions(accountID types.GrapheneObject) (types.CallOrders, error) GetObjects(objectIDs ...types.GrapheneObject) ([]interface{}, error) GetPotentialSignatures(tx *types.SignedTransaction) (types.PublicKeys, error) GetRequiredSignatures(tx *types.SignedTransaction, keys types.PublicKeys) (types.PublicKeys, error) GetRequiredFees(ops types.Operations, feeAsset types.GrapheneObject) (types.AssetAmounts, error) GetSettleOrders(assetID types.GrapheneObject, limit int) (types.SettleOrders, error) GetTradeHistory(base, quote types.GrapheneObject, toTime, fromTime time.Time, limit int) (types.MarketTrades, error) ListAssets(lowerBoundSymbol string, limit int) (types.Assets, error) SetSubscribeCallback(notifyID int, clearFilter bool) error SubscribeToMarket(notifyID int, base types.GrapheneObject, quote types.GrapheneObject) error UnsubscribeFromMarket(base types.GrapheneObject, quote types.GrapheneObject) error Get24Volume(base types.GrapheneObject, quote types.GrapheneObject) (types.Volume24, error) //Wallet API functions WalletListAccountBalances(account types.GrapheneObject) (types.AssetAmounts, error) WalletLock() error WalletUnlock(password string) error WalletIsLocked() (bool, error) WalletBorrowAsset(account types.GrapheneObject, amountToBorrow string, symbolToBorrow types.GrapheneObject, amountOfCollateral string, broadcast bool) (*types.SignedTransaction, error) WalletBuy(account types.GrapheneObject, base, quote types.GrapheneObject, rate string, amount string, broadcast bool) (*types.SignedTransaction, error) WalletBuyEx(account types.GrapheneObject, base, quote types.GrapheneObject, rate float64, amount float64, broadcast bool) (*types.SignedTransaction, error) WalletGetBlock(number uint64) (*types.Block, error) WalletGetRelativeAccountHistory(account types.GrapheneObject, stop int64, limit int, start int64) (types.OperationRelativeHistories, error) WalletGetDynamicGlobalProperties() (*types.DynamicGlobalProperties, error) WalletReadMemo(memo *types.Memo) (string, error) WalletSell(account types.GrapheneObject, base, quote types.GrapheneObject, rate string, amount string, broadcast bool) (*types.SignedTransaction, error) WalletSellEx(account types.GrapheneObject, base, quote types.GrapheneObject, rate float64, amount float64, broadcast bool) (*types.SignedTransaction, error) WalletSellAsset(account types.GrapheneObject, amountToSell string, symbolToSell types.GrapheneObject, minToReceive string, symbolToReceive types.GrapheneObject, timeout uint32, fillOrKill bool, broadcast bool) (*types.SignedTransaction, error) WalletSignTransaction(tx *types.SignedTransaction, broadcast bool) (*types.SignedTransaction, error) WalletSerializeTransaction(tx *types.SignedTransaction) (string, error) //WalletTransfer2(from, to types.GrapheneObject, amount string, asset types.GrapheneObject, memo string) (*types.SignedTransactionWithTransactionId, error) Send(from string, to string, amount string, asset string, memo string, password string) (*types.SignedTransaction, error) Sends(tosends []types.SimpleSend) (*types.SignedTransaction, error) PreSends(tosends []types.SimpleSend) (*types.SignedTransaction, error) LimitOrder(user string, base string, quote string, action string, price string, amount string, password string) (*types.SignedTransaction, error) LimitOrderGet(user string) (types.LimitOrders, error) LimitOrderCancel(user string, orderid string, password string) (*types.SignedTransaction, error) LoginVerify(fund types.Fund, sign string) (re bool, err error) VerifySign(accountName string, toSign string, sign string) (re bool, err error) SignStr(toSign string, prikey string) (sign string, err error) GetAsset(lowerBoundSymbol string) (types.Asset, error) }
func New ¶
New creates a new CybexAPI interface. wsEndpointURL: Is a mandatory websocket node URL. rpcEndpointURL: Is an optional RPC endpoint to your local `cli_wallet`. The use of wallet functions without this argument will throw an error. If you do not use wallet API, provide an empty string.
func NewWithAutoEndpoint ¶
NewWithAutoEndpoint creates a new CybexAPI interface with automatic node latency checking. It's best to use this API instance type for a long API lifecycle because the latency tester takes time to unleash its magic. startupEndpointURL: Iss a mandatory websocket node URL to startup the latency tester quickly. rpcEndpointURL: Is an optional RPC endpoint to your local `cli_wallet`. The use of wallet functions without this argument will throw an error. If you do not use wallet API, provide an empty string.
type LatencyTester ¶
type LatencyTester interface { Start() Close() error String() string AddEndpoint(ep string) OnTopNodeChanged(fn func(string) error) TopNodeEndpoint() string TopNodeClient() WebsocketClient Done() <-chan struct{} }
func NewLatencyTester ¶
func NewLatencyTester(fallbackURL string) (LatencyTester, error)
func NewLatencyTesterWithContext ¶
func NewLatencyTesterWithContext(ctx context.Context, fallbackURL string) (LatencyTester, error)
type NodeStats ¶
type NodeStats struct {
// contains filtered or unexported fields
}
NodeStats holds stat data for each endpoint
func NewNodeStats ¶
NewNodeStats creates a new stat object
type NotifyFunc ¶
type NotifyFunc func(msg interface{}) error
type RPCClient ¶
type RPCClient interface { CallAPI(method string, args ...interface{}) (interface{}, error) Close() error Connect() error }
func NewRPCClient ¶
NewRPCClient creates a new RPC Client
type ResponseError ¶
type ResponseError struct { Code int `json:"code"` Message string `json:"message"` Data ResponseErrorData `json:"data"` }
func (ResponseError) Error ¶
func (p ResponseError) Error() string
type ResponseErrorContext ¶
type ResponseErrorData ¶
type ResponseErrorData struct { Code int `json:"code"` Name string `json:"name"` Message string `json:"message"` Stack []ResponseErrorStack `json:"stack"` }
type ResponseErrorStack ¶
type ResponseErrorStack struct { Context ResponseErrorContext `json:"context"` Format string `json:"format"` Data interface{} `json:"data"` }
type SimpleClientProvider ¶
type SimpleClientProvider struct { WebsocketClient // contains filtered or unexported fields }
type WebsocketClient ¶
type WebsocketClient interface { IsConnected() bool OnError(fn ErrorFunc) OnNotify(subscriberID int, fn NotifyFunc) error Call(method string, args []interface{}) (*RPCCall, error) CallAPI(apiID int, method string, args ...interface{}) (interface{}, error) Close() error Connect() error }
func NewWebsocketClient ¶
func NewWebsocketClient(endpointURL string) WebsocketClient