Documentation ¶
Index ¶
- Constants
- Variables
- func ConvertBytesToJsonNumberArray(raw_bytes []byte) ([]interface{}, error)
- type Asynchronous
- type AsynchronousFactory
- type AuthEvent
- type AuthState
- type BookFactory
- func (f *BookFactory) Build(sub *subscription, objType string, raw []interface{}, raw_bytes []byte) (interface{}, error)
- func (f *BookFactory) BuildSnapshot(sub *subscription, raw [][]interface{}, raw_bytes []byte) (interface{}, error)
- func (s BookFactory) Close()
- func (s BookFactory) ListenDisconnect() <-chan HeartbeatDisconnect
- func (s BookFactory) ResetAll()
- func (s BookFactory) ResetSocketSubscriptions(socketId SocketId) []*subscription
- type CandlesFactory
- func (f *CandlesFactory) Build(sub *subscription, objType string, raw []interface{}, raw_bytes []byte) (interface{}, error)
- func (f *CandlesFactory) BuildSnapshot(sub *subscription, raw [][]interface{}, raw_bytes []byte) (interface{}, error)
- func (s CandlesFactory) Close()
- func (s CandlesFactory) ListenDisconnect() <-chan HeartbeatDisconnect
- func (s CandlesFactory) ResetAll()
- func (s CandlesFactory) ResetSocketSubscriptions(socketId SocketId) []*subscription
- type Capabilities
- type Capability
- type Client
- func New() *Client
- func NewWithAsyncFactory(async AsynchronousFactory) *Client
- func NewWithAsyncFactoryNonce(async AsynchronousFactory, nonce utils.NonceGenerator) *Client
- func NewWithParams(params *Parameters) *Client
- func NewWithParamsAsyncFactory(params *Parameters, async AsynchronousFactory) *Client
- func NewWithParamsAsyncFactoryNonce(params *Parameters, async AsynchronousFactory, nonce utils.NonceGenerator) *Client
- func NewWithParamsNonce(params *Parameters, nonce utils.NonceGenerator) *Client
- func (c *Client) AvailableCapacity() int
- func (c *Client) CancelOnDisconnect(cxl bool) *Client
- func (c *Client) Close()
- func (c *Client) Connect() error
- func (c *Client) ConnectionCount() int
- func (c *Client) Credentials(key string, secret string) *Client
- func (c *Client) EnableFlag(ctx context.Context, flag int) (string, error)
- func (c *Client) GetAuthenticatedSocket() (*Socket, error)
- func (c *Client) GetOrderbook(symbol string) (*Orderbook, error)
- func (c *Client) IsConnected() bool
- func (c *Client) Listen() <-chan interface{}
- func (c *Client) LookupSubscription(subID string) (*SubscriptionRequest, error)
- func (c *Client) Send(ctx context.Context, msg interface{}) error
- func (c *Client) StartNewConnection() error
- func (c *Client) SubmitCancel(ctx context.Context, cancel *bitfinex.OrderCancelRequest) error
- func (c *Client) SubmitFundingCancel(ctx context.Context, fundingOffer *bitfinex.FundingOfferCancelRequest) error
- func (c *Client) SubmitFundingOffer(ctx context.Context, fundingOffer *bitfinex.FundingOfferRequest) error
- func (c *Client) SubmitOrder(ctx context.Context, order *bitfinex.OrderNewRequest) error
- func (c *Client) SubmitUpdateOrder(ctx context.Context, orderUpdate *bitfinex.OrderUpdateRequest) error
- func (c *Client) Subscribe(ctx context.Context, req *SubscriptionRequest) (string, error)
- func (c *Client) SubscribeBook(ctx context.Context, symbol string, precision bitfinex.BookPrecision, ...) (string, error)
- func (c *Client) SubscribeCandles(ctx context.Context, symbol string, resolution bitfinex.CandleResolution) (string, error)
- func (c *Client) SubscribeStatus(ctx context.Context, symbol string, sType bitfinex.StatusType) (string, error)
- func (c *Client) SubscribeTicker(ctx context.Context, symbol string) (string, error)
- func (c *Client) SubscribeTrades(ctx context.Context, symbol string) (string, error)
- func (c *Client) Unsubscribe(ctx context.Context, id string) error
- type ConfEvent
- type ErrorEvent
- type FlagRequest
- type HeartbeatDisconnect
- type InfoEvent
- type Orderbook
- func (ob *Orderbook) Asks() []bitfinex.BookUpdate
- func (ob *Orderbook) Bids() []bitfinex.BookUpdate
- func (ob *Orderbook) Checksum() uint32
- func (ob *Orderbook) SetWithSnapshot(bs *bitfinex.BookUpdateSnapshot)
- func (ob *Orderbook) Symbol() string
- func (ob *Orderbook) UpdateWith(bu *bitfinex.BookUpdate)
- type Parameters
- type PlatformInfo
- type RawEvent
- type Socket
- type SocketId
- type StatsFactory
- func (f *StatsFactory) Build(sub *subscription, objType string, raw []interface{}, raw_bytes []byte) (interface{}, error)
- func (f *StatsFactory) BuildSnapshot(sub *subscription, raw [][]interface{}, raw_bytes []byte) (interface{}, error)
- func (s StatsFactory) Close()
- func (s StatsFactory) ListenDisconnect() <-chan HeartbeatDisconnect
- func (s StatsFactory) ResetAll()
- func (s StatsFactory) ResetSocketSubscriptions(socketId SocketId) []*subscription
- type SubscribeEvent
- type SubscriptionRequest
- type SubscriptionSet
- type TickerFactory
- func (f *TickerFactory) Build(sub *subscription, objType string, raw []interface{}, raw_bytes []byte) (interface{}, error)
- func (f *TickerFactory) BuildSnapshot(sub *subscription, raw [][]interface{}, raw_bytes []byte) (interface{}, error)
- func (s TickerFactory) Close()
- func (s TickerFactory) ListenDisconnect() <-chan HeartbeatDisconnect
- func (s TickerFactory) ResetAll()
- func (s TickerFactory) ResetSocketSubscriptions(socketId SocketId) []*subscription
- type TradeFactory
- func (f *TradeFactory) Build(sub *subscription, objType string, raw []interface{}, raw_bytes []byte) (interface{}, error)
- func (f *TradeFactory) BuildSnapshot(sub *subscription, raw [][]interface{}, raw_bytes []byte) (interface{}, error)
- func (s TradeFactory) Close()
- func (s TradeFactory) ListenDisconnect() <-chan HeartbeatDisconnect
- func (s TradeFactory) ResetAll()
- func (s TradeFactory) ResetSocketSubscriptions(socketId SocketId) []*subscription
- type UnsubscribeEvent
- type UnsubscribeRequest
- type WebsocketAsynchronousFactory
Constants ¶
const ( ChanBook = "book" ChanTrades = "trades" ChanTicker = "ticker" ChanCandles = "candles" ChanStatus = "status" )
Available channels
const ( EventSubscribe = "subscribe" EventUnsubscribe = "unsubscribe" EventPing = "ping" )
Events
const ( ErrorCodeUnknownEvent int = 10000 ErrorCodeUnknownPair int = 10001 ErrorCodeUnknownBookPrecision int = 10011 ErrorCodeUnknownBookLength int = 10012 ErrorCodeSubscriptionFailed int = 10300 ErrorCodeAlreadySubscribed int = 10301 ErrorCodeUnknownChannel int = 10302 ErrorCodeUnsubscribeFailed int = 10400 ErrorCodeNotSubscribed int = 10401 )
error codes pulled from v2 docs & API usage
const DMSCancelOnDisconnect int = 4
DMSCancelOnDisconnect cancels session orders on disconnect.
const KEEP_ALIVE_TIMEOUT = 10
seconds to wait in between re-sending the keep alive ping
const MaxChannels = 25
const WS_READ_CAPACITY = 10
size of channel that the websocket reader routine pushes websocket updates into
const WS_WRITE_CAPACITY = 5000
size of channel that the websocket writer routine pulls from
Variables ¶
var ( ErrWSNotConnected = fmt.Errorf("websocket connection not established") ErrWSAlreadyConnected = fmt.Errorf("websocket connection already established") )
ws-specific errors
Functions ¶
Types ¶
type Asynchronous ¶
type Asynchronous interface { Connect() error Send(ctx context.Context, msg interface{}) error Listen() <-chan []byte Close() Done() <-chan error }
Asynchronous interface decouples the underlying transport from API logic.
type AsynchronousFactory ¶
type AsynchronousFactory interface {
Create() Asynchronous
}
AsynchronousFactory provides an interface to re-create asynchronous transports during reconnect events.
func NewWebsocketAsynchronousFactory ¶
func NewWebsocketAsynchronousFactory(parameters *Parameters) AsynchronousFactory
NewWebsocketAsynchronousFactory creates a new websocket factory with a given URL.
type AuthEvent ¶
type AuthEvent struct { Event string `json:"event"` Status string `json:"status"` ChanID int64 `json:"chanId,omitempty"` UserID int64 `json:"userId,omitempty"` SubID string `json:"subId"` AuthID string `json:"auth_id,omitempty"` Message string `json:"msg,omitempty"` Caps Capabilities `json:"caps"` }
type AuthState ¶
type AuthState authState // prevent user construction of authStates
AuthState provides a typed authentication state.
type BookFactory ¶
type BookFactory struct {
// contains filtered or unexported fields
}
func (*BookFactory) Build ¶
func (f *BookFactory) Build(sub *subscription, objType string, raw []interface{}, raw_bytes []byte) (interface{}, error)
func (*BookFactory) BuildSnapshot ¶
func (f *BookFactory) BuildSnapshot(sub *subscription, raw [][]interface{}, raw_bytes []byte) (interface{}, error)
func (BookFactory) Close ¶
func (s BookFactory) Close()
Close is terminal. Do not call heartbeat after close.
func (BookFactory) ListenDisconnect ¶
func (s BookFactory) ListenDisconnect() <-chan HeartbeatDisconnect
ListenDisconnect returns an error channel which receives a message when a heartbeat has expired a channel.
func (BookFactory) ResetSocketSubscriptions ¶
func (s BookFactory) ResetSocketSubscriptions(socketId SocketId) []*subscription
Reset clears all subscriptions assigned to the given socket ID, and returns a slice of the existing subscriptions prior to reset
type CandlesFactory ¶
type CandlesFactory struct {
// contains filtered or unexported fields
}
func (*CandlesFactory) Build ¶
func (f *CandlesFactory) Build(sub *subscription, objType string, raw []interface{}, raw_bytes []byte) (interface{}, error)
func (*CandlesFactory) BuildSnapshot ¶
func (f *CandlesFactory) BuildSnapshot(sub *subscription, raw [][]interface{}, raw_bytes []byte) (interface{}, error)
func (CandlesFactory) Close ¶
func (s CandlesFactory) Close()
Close is terminal. Do not call heartbeat after close.
func (CandlesFactory) ListenDisconnect ¶
func (s CandlesFactory) ListenDisconnect() <-chan HeartbeatDisconnect
ListenDisconnect returns an error channel which receives a message when a heartbeat has expired a channel.
func (CandlesFactory) ResetAll ¶
func (s CandlesFactory) ResetAll()
Removes all tracked subscriptions
func (CandlesFactory) ResetSocketSubscriptions ¶
func (s CandlesFactory) ResetSocketSubscriptions(socketId SocketId) []*subscription
Reset clears all subscriptions assigned to the given socket ID, and returns a slice of the existing subscriptions prior to reset
type Capabilities ¶
type Capabilities struct { Orders Capability `json:"orders"` Account Capability `json:"account"` Funding Capability `json:"funding"` History Capability `json:"history"` Wallets Capability `json:"wallets"` Withdraw Capability `json:"withdraw"` Positions Capability `json:"positions"` }
type Capability ¶
type Client ¶
type Client struct { Authentication AuthState // contains filtered or unexported fields }
Client provides a unified interface for users to interact with the Bitfinex V2 Websocket API. nolint:megacheck,structcheck
func NewWithAsyncFactory ¶
func NewWithAsyncFactory(async AsynchronousFactory) *Client
NewWithAsyncFactory creates a new default client with a given asynchronous transport factory interface.
func NewWithAsyncFactoryNonce ¶
func NewWithAsyncFactoryNonce(async AsynchronousFactory, nonce utils.NonceGenerator) *Client
NewWithAsyncFactoryNonce creates a new default client with a given asynchronous transport factory and nonce generator.
func NewWithParams ¶
func NewWithParams(params *Parameters) *Client
NewWithParams creates a new default client with a given set of parameters.
func NewWithParamsAsyncFactory ¶
func NewWithParamsAsyncFactory(params *Parameters, async AsynchronousFactory) *Client
NewWithParamsAsyncFactory creates a new default client with a given set of parameters and asynchronous transport factory interface.
func NewWithParamsAsyncFactoryNonce ¶
func NewWithParamsAsyncFactoryNonce(params *Parameters, async AsynchronousFactory, nonce utils.NonceGenerator) *Client
NewWithParamsAsyncFactoryNonce creates a new client with a given set of parameters, asynchronous transport factory, and nonce generator interfaces.
func NewWithParamsNonce ¶
func NewWithParamsNonce(params *Parameters, nonce utils.NonceGenerator) *Client
NewWithParamsNonce creates a new default client with a given set of parameters and nonce generator.
func (*Client) AvailableCapacity ¶
Get the available capacity of the current websocket connections
func (*Client) CancelOnDisconnect ¶
CancelOnDisconnect ensures all orders will be canceled if this API session is disconnected.
func (*Client) Close ¶
func (c *Client) Close()
Close the websocket client which will cause for all active sockets to be exited and the Done() function to be called
func (*Client) ConnectionCount ¶
Gen the count of currently active websocket connections
func (*Client) Credentials ¶
Credentials assigns authentication credentials to a connection request.
func (*Client) EnableFlag ¶
Submit a request to enable the given flag
func (*Client) GetAuthenticatedSocket ¶
Get the authenticated socket. Due to rate limitations there can only be one authenticated socket active at a time
func (*Client) GetOrderbook ¶
Retrieve the Orderbook for the given symbol which is managed locally. This requires ManageOrderbook=True and an active chanel subscribed to the given symbols orderbook
func (*Client) IsConnected ¶
Returns true if the underlying asynchronous transport is connected to an endpoint.
func (*Client) Listen ¶
func (c *Client) Listen() <-chan interface{}
Listen for all incoming api websocket messages When a websocket connection is terminated, the publisher channel will close.
func (*Client) LookupSubscription ¶
func (c *Client) LookupSubscription(subID string) (*SubscriptionRequest, error)
Get a subscription request using a subscription ID
func (*Client) StartNewConnection ¶
Start a new websocket connection. This function is only exposed in case you want to implicitly add new connections otherwise connection management is already handled for you.
func (*Client) SubmitCancel ¶
Submit a cancel request for an existing order
func (*Client) SubmitFundingCancel ¶
func (c *Client) SubmitFundingCancel(ctx context.Context, fundingOffer *bitfinex.FundingOfferCancelRequest) error
Submit a request to cancel and existing funding offer
func (*Client) SubmitFundingOffer ¶
func (c *Client) SubmitFundingOffer(ctx context.Context, fundingOffer *bitfinex.FundingOfferRequest) error
Submit a new funding offer request
func (*Client) SubmitOrder ¶
Submit a request to create a new order
func (*Client) SubmitUpdateOrder ¶
func (c *Client) SubmitUpdateOrder(ctx context.Context, orderUpdate *bitfinex.OrderUpdateRequest) error
Submit and update request to change an existing orders values
func (*Client) SubscribeBook ¶
func (c *Client) SubscribeBook(ctx context.Context, symbol string, precision bitfinex.BookPrecision, frequency bitfinex.BookFrequency, priceLevel int) (string, error)
Submit a subscription request for market data for the given symbol, at the given frequency, with the given precision, returning no more than priceLevels price entries. Default values are Precision0, Frequency0, and priceLevels=25.
func (*Client) SubscribeCandles ¶
func (c *Client) SubscribeCandles(ctx context.Context, symbol string, resolution bitfinex.CandleResolution) (string, error)
Submit a subscription request to receive candle updates
func (*Client) SubscribeStatus ¶
func (c *Client) SubscribeStatus(ctx context.Context, symbol string, sType bitfinex.StatusType) (string, error)
Submit a subscription request for status updates
func (*Client) SubscribeTicker ¶
Submit a request to receive ticker updates
func (*Client) SubscribeTrades ¶
Submit a request to receive trade updates
type ErrorEvent ¶
type ErrorEvent struct { Code int `json:"code"` Message string `json:"msg"` // also contain members related to subscription reject SubID string `json:"subId"` Channel string `json:"channel"` ChanID int64 `json:"chanId"` Symbol string `json:"symbol"` Precision string `json:"prec,omitempty"` Frequency string `json:"freq,omitempty"` Key string `json:"key,omitempty"` Len string `json:"len,omitempty"` Pair string `json:"pair"` }
type FlagRequest ¶
type HeartbeatDisconnect ¶
type HeartbeatDisconnect struct { Subscription *subscription Error error }
type InfoEvent ¶
type InfoEvent struct { Version float64 `json:"version"` ServerId string `json:"serverId"` Platform PlatformInfo `json:"platform"` Code int `json:"code"` Msg string `json:"msg"` }
type Orderbook ¶
type Orderbook struct {
// contains filtered or unexported fields
}
func (*Orderbook) SetWithSnapshot ¶
func (ob *Orderbook) SetWithSnapshot(bs *bitfinex.BookUpdateSnapshot)
func (*Orderbook) UpdateWith ¶
func (ob *Orderbook) UpdateWith(bu *bitfinex.BookUpdate)
type Parameters ¶
type Parameters struct { AutoReconnect bool ReconnectInterval time.Duration ReconnectAttempts int ShutdownTimeout time.Duration CapacityPerConnection int Logger *logging.Logger ResubscribeOnReconnect bool HeartbeatTimeout time.Duration LogTransport bool URL string ManageOrderbook bool // contains filtered or unexported fields }
Parameters defines adapter behavior.
func NewDefaultParameters ¶
func NewDefaultParameters() *Parameters
type PlatformInfo ¶
type PlatformInfo struct {
Status int `json:"status"`
}
type Socket ¶
type Socket struct { Id SocketId Asynchronous IsConnected bool ResetSubscriptions []*subscription IsAuthenticated bool }
type StatsFactory ¶
type StatsFactory struct {
// contains filtered or unexported fields
}
func (*StatsFactory) Build ¶
func (f *StatsFactory) Build(sub *subscription, objType string, raw []interface{}, raw_bytes []byte) (interface{}, error)
func (*StatsFactory) BuildSnapshot ¶
func (f *StatsFactory) BuildSnapshot(sub *subscription, raw [][]interface{}, raw_bytes []byte) (interface{}, error)
func (StatsFactory) Close ¶
func (s StatsFactory) Close()
Close is terminal. Do not call heartbeat after close.
func (StatsFactory) ListenDisconnect ¶
func (s StatsFactory) ListenDisconnect() <-chan HeartbeatDisconnect
ListenDisconnect returns an error channel which receives a message when a heartbeat has expired a channel.
func (StatsFactory) ResetSocketSubscriptions ¶
func (s StatsFactory) ResetSocketSubscriptions(socketId SocketId) []*subscription
Reset clears all subscriptions assigned to the given socket ID, and returns a slice of the existing subscriptions prior to reset
type SubscribeEvent ¶
type SubscribeEvent struct { SubID string `json:"subId"` Channel string `json:"channel"` ChanID int64 `json:"chanId"` Symbol string `json:"symbol"` Precision string `json:"prec,omitempty"` Frequency string `json:"freq,omitempty"` Key string `json:"key,omitempty"` Len string `json:"len,omitempty"` Pair string `json:"pair"` }
type SubscriptionRequest ¶
type SubscriptionRequest struct { SubID string `json:"subId"` Event string `json:"event"` // authenticated APIKey string `json:"apiKey,omitempty"` AuthSig string `json:"authSig,omitempty"` AuthPayload string `json:"authPayload,omitempty"` AuthNonce string `json:"authNonce,omitempty"` Filter []string `json:"filter,omitempty"` DMS int `json:"dms,omitempty"` // dead man switch // unauthenticated Channel string `json:"channel,omitempty"` Symbol string `json:"symbol,omitempty"` Precision string `json:"prec,omitempty"` Frequency string `json:"freq,omitempty"` Key string `json:"key,omitempty"` Len string `json:"len,omitempty"` Pair string `json:"pair,omitempty"` }
func (*SubscriptionRequest) String ¶
func (s *SubscriptionRequest) String() string
type SubscriptionSet ¶
type SubscriptionSet []*subscription
SubscriptionSet is a typed version of an array of subscription pointers, intended to meet the sortable interface. We need to sort Reset()'s return values for tests with more than 1 subscription (range map order is undefined)
func (SubscriptionSet) Len ¶
func (s SubscriptionSet) Len() int
func (SubscriptionSet) Less ¶
func (s SubscriptionSet) Less(i, j int) bool
func (SubscriptionSet) RemoveByChannelId ¶
func (s SubscriptionSet) RemoveByChannelId(chanId int64) SubscriptionSet
func (SubscriptionSet) RemoveBySubscriptionId ¶
func (s SubscriptionSet) RemoveBySubscriptionId(subID string) SubscriptionSet
func (SubscriptionSet) Swap ¶
func (s SubscriptionSet) Swap(i, j int)
type TickerFactory ¶
type TickerFactory struct {
// contains filtered or unexported fields
}
func (*TickerFactory) Build ¶
func (f *TickerFactory) Build(sub *subscription, objType string, raw []interface{}, raw_bytes []byte) (interface{}, error)
func (*TickerFactory) BuildSnapshot ¶
func (f *TickerFactory) BuildSnapshot(sub *subscription, raw [][]interface{}, raw_bytes []byte) (interface{}, error)
func (TickerFactory) Close ¶
func (s TickerFactory) Close()
Close is terminal. Do not call heartbeat after close.
func (TickerFactory) ListenDisconnect ¶
func (s TickerFactory) ListenDisconnect() <-chan HeartbeatDisconnect
ListenDisconnect returns an error channel which receives a message when a heartbeat has expired a channel.
func (TickerFactory) ResetSocketSubscriptions ¶
func (s TickerFactory) ResetSocketSubscriptions(socketId SocketId) []*subscription
Reset clears all subscriptions assigned to the given socket ID, and returns a slice of the existing subscriptions prior to reset
type TradeFactory ¶
type TradeFactory struct {
// contains filtered or unexported fields
}
func (*TradeFactory) Build ¶
func (f *TradeFactory) Build(sub *subscription, objType string, raw []interface{}, raw_bytes []byte) (interface{}, error)
func (*TradeFactory) BuildSnapshot ¶
func (f *TradeFactory) BuildSnapshot(sub *subscription, raw [][]interface{}, raw_bytes []byte) (interface{}, error)
func (TradeFactory) Close ¶
func (s TradeFactory) Close()
Close is terminal. Do not call heartbeat after close.
func (TradeFactory) ListenDisconnect ¶
func (s TradeFactory) ListenDisconnect() <-chan HeartbeatDisconnect
ListenDisconnect returns an error channel which receives a message when a heartbeat has expired a channel.
func (TradeFactory) ResetSocketSubscriptions ¶
func (s TradeFactory) ResetSocketSubscriptions(socketId SocketId) []*subscription
Reset clears all subscriptions assigned to the given socket ID, and returns a slice of the existing subscriptions prior to reset
type UnsubscribeEvent ¶
type UnsubscribeRequest ¶
type WebsocketAsynchronousFactory ¶
type WebsocketAsynchronousFactory struct {
// contains filtered or unexported fields
}
WebsocketAsynchronousFactory creates a websocket-based asynchronous transport.
func (*WebsocketAsynchronousFactory) Create ¶
func (w *WebsocketAsynchronousFactory) Create() Asynchronous
Create returns a new websocket transport.