pub const DEFAULT_HEARTBEAT_INTERVAL: u64 = 30;
pub const MAX_RECONNECT_ATTEMPTS: u32 = 5;
pub const PRODUCTION_WS_URL: &str = "wss://www.deribit.com/ws/api/v2";
pub const TESTNET_WS_URL: &str = "wss://test.deribit.com/ws/api/v2";
pub mod methods {
pub const PUBLIC_AUTH: &str = "public/auth";
pub const PRIVATE_LOGOUT: &str = "private/logout";
pub const PUBLIC_SUBSCRIBE: &str = "public/subscribe";
pub const PUBLIC_UNSUBSCRIBE: &str = "public/unsubscribe";
pub const PUBLIC_UNSUBSCRIBE_ALL: &str = "public/unsubscribe_all";
pub const PRIVATE_SUBSCRIBE: &str = "private/subscribe";
pub const PRIVATE_UNSUBSCRIBE: &str = "private/unsubscribe";
pub const PRIVATE_UNSUBSCRIBE_ALL: &str = "private/unsubscribe_all";
pub const PUBLIC_SET_HEARTBEAT: &str = "public/set_heartbeat";
pub const PUBLIC_DISABLE_HEARTBEAT: &str = "public/disable_heartbeat";
pub const PUBLIC_GET_TICKER: &str = "public/ticker";
pub const PUBLIC_GET_ORDERBOOK: &str = "public/get_order_book";
pub const PUBLIC_GET_TRADES: &str = "public/get_last_trades_by_instrument";
pub const PUBLIC_GET_INSTRUMENTS: &str = "public/get_instruments";
pub const PRIVATE_BUY: &str = "private/buy";
pub const PRIVATE_SELL: &str = "private/sell";
pub const PRIVATE_CANCEL: &str = "private/cancel";
pub const PRIVATE_CANCEL_ALL: &str = "private/cancel_all";
pub const PRIVATE_CANCEL_ALL_BY_CURRENCY: &str = "private/cancel_all_by_currency";
pub const PRIVATE_CANCEL_ALL_BY_INSTRUMENT: &str = "private/cancel_all_by_instrument";
pub const PRIVATE_EDIT: &str = "private/edit";
pub const PRIVATE_GET_OPEN_ORDERS: &str = "private/get_open_orders";
pub const PRIVATE_GET_ACCOUNT_SUMMARY: &str = "private/get_account_summary";
pub const PRIVATE_GET_POSITIONS: &str = "private/get_positions";
pub const PRIVATE_GET_SUBACCOUNTS: &str = "private/get_subaccounts";
pub const PRIVATE_GET_ORDER_STATE: &str = "private/get_order_state";
pub const PRIVATE_GET_ORDER_HISTORY_BY_CURRENCY: &str = "private/get_order_history_by_currency";
pub const PRIVATE_CLOSE_POSITION: &str = "private/close_position";
pub const PRIVATE_MOVE_POSITIONS: &str = "private/move_positions";
pub const PRIVATE_ENABLE_CANCEL_ON_DISCONNECT: &str = "private/enable_cancel_on_disconnect";
pub const PRIVATE_DISABLE_CANCEL_ON_DISCONNECT: &str = "private/disable_cancel_on_disconnect";
pub const PRIVATE_GET_CANCEL_ON_DISCONNECT: &str = "private/get_cancel_on_disconnect";
pub const PUBLIC_TEST: &str = "public/test";
pub const PUBLIC_GET_TIME: &str = "public/get_time";
pub const PUBLIC_HELLO: &str = "public/hello";
}
pub mod channels {
pub const TICKER: &str = "ticker";
pub const ORDERBOOK: &str = "book";
pub const TRADES: &str = "trades";
pub const USER_ORDERS: &str = "user.orders";
pub const USER_TRADES: &str = "user.trades";
pub const USER_PORTFOLIO: &str = "user.portfolio";
pub const INCREMENTAL_TICKER: &str = "incremental_ticker";
pub const PRICE_RANKING: &str = "deribit_price_ranking";
pub const PRICE_STATISTICS: &str = "deribit_price_statistics";
pub const VOLATILITY_INDEX: &str = "deribit_volatility_index";
pub const PLATFORM_STATE: &str = "platform_state";
pub const PLATFORM_STATE_PUBLIC_METHODS: &str = "platform_state.public_methods_state";
pub const INSTRUMENT_STATE: &str = "instrument.state";
pub const PERPETUAL: &str = "perpetual";
pub const MARKPRICE_OPTIONS: &str = "markprice.options";
pub const QUOTE: &str = "quote";
pub const BLOCK_RFQ_TRADES: &str = "block_rfq.trades";
pub const BLOCK_TRADE_CONFIRMATIONS: &str = "block_trade_confirmations";
pub const USER_MMP_TRIGGER: &str = "user.mmp_trigger";
pub const USER_ACCESS_LOG: &str = "user.access_log";
pub const USER_LOCK: &str = "user.lock";
}
#[cfg(test)]
#[allow(clippy::unwrap_used, clippy::expect_used)]
mod tests {
use super::*;
use url::Url;
#[test]
fn test_production_ws_url_parses() {
let url = Url::parse(PRODUCTION_WS_URL).expect("PRODUCTION_WS_URL must parse");
assert_eq!(url.scheme(), "wss");
assert_eq!(url.host_str(), Some("www.deribit.com"));
assert_eq!(url.path(), "/ws/api/v2");
}
#[test]
fn test_testnet_ws_url_parses() {
let url = Url::parse(TESTNET_WS_URL).expect("TESTNET_WS_URL must parse");
assert_eq!(url.scheme(), "wss");
assert_eq!(url.host_str(), Some("test.deribit.com"));
assert_eq!(url.path(), "/ws/api/v2");
}
}