Files
bitfinex-api-py/bfxapi/websocket/serializers.py
2022-11-16 19:01:52 +01:00

128 lines
2.6 KiB
Python

from .errors import BfxWebsocketException
class _Serializer(object):
def __init__(self, name, labels):
self.name, self.__labels = name, labels
def __serialize(self, *args, IGNORE = [ "_PLACEHOLDER" ]):
if len(self.__labels) != len(args):
raise BfxWebsocketException("<self.__labels> and <*args> arguments should contain the same amount of elements.")
for index, label in enumerate(self.__labels):
if label not in IGNORE:
yield label, args[index]
def __call__(self, *values):
return dict(self.__serialize(*values))
#region Serializers definition for Websocket Public Channels
TradingPairTicker = _Serializer("TradingPairTicker", labels=[
"BID",
"BID_SIZE",
"ASK",
"ASK_SIZE",
"DAILY_CHANGE",
"DAILY_CHANGE_RELATIVE",
"LAST_PRICE",
"VOLUME",
"HIGH",
"LOW"
])
FundingCurrencyTicker = _Serializer("FundingCurrencyTicker", labels=[
"FRR",
"BID",
"BID_PERIOD",
"BID_SIZE",
"ASK",
"ASK_PERIOD",
"ASK_SIZE",
"DAILY_CHANGE",
"DAILY_CHANGE_RELATIVE",
"LAST_PRICE",
"VOLUME",
"HIGH",
"LOW"
"_PLACEHOLDER",
"_PLACEHOLDER",
"FRR_AMOUNT_AVAILABLE"
])
TradingPairTrade = _Serializer("TradingPairTrade", labels=[
"ID",
"MTS",
"AMOUNT",
"PRICE"
])
FundingCurrencyTrade = _Serializer("FundingCurrencyTrade", labels=[
"ID",
"MTS",
"AMOUNT",
"RATE",
"PERIOD"
])
TradingPairBook = _Serializer("TradingPairBook", labels=[
"PRICE",
"COUNT",
"AMOUNT"
])
FundingCurrencyBook = _Serializer("FundingCurrencyBook", labels=[
"RATE",
"PERIOD",
"COUNT",
"AMOUNT"
])
TradingPairRawBook = _Serializer("TradingPairRawBook", labels=[
"ORDER_ID",
"PRICE",
"AMOUNT"
])
FundingCurrencyRawBook = _Serializer("FundingCurrencyRawBook", labels=[
"OFFER_ID",
"PERIOD",
"RATE",
"AMOUNT"
])
Candle = _Serializer("Candle", labels=[
"MTS",
"OPEN",
"CLOSE",
"HIGH",
"LOW",
"VOLUME"
])
DerivativesStatus = _Serializer("DerivativesStatus", labels=[
"TIME_MS",
"_PLACEHOLDER",
"DERIV_PRICE",
"SPOT_PRICE",
"_PLACEHOLDER",
"INSURANCE_FUND_BALANCE",
"_PLACEHOLDER",
"NEXT_FUNDING_EVT_TIMESTAMP_MS",
"NEXT_FUNDING_ACCRUED",
"NEXT_FUNDING_STEP",
"_PLACEHOLDER",
"CURRENT_FUNDING"
"_PLACEHOLDER",
"_PLACEHOLDER",
"MARK_PRICE",
"_PLACEHOLDER",
"_PLACEHOLDER",
"OPEN_INTEREST",
"_PLACEHOLDER",
"_PLACEHOLDER",
"_PLACEHOLDER",
"CLAMP_MIN",
"CLAMP_MAX"
])
#endregion