mirror of
https://github.com/aljazceru/bitfinex-api-py.git
synced 2025-12-19 14:54:21 +01:00
207 lines
4.5 KiB
Python
207 lines
4.5 KiB
Python
from typing import Generic, TypeVar, Iterable, Optional, List, Any
|
|
|
|
from . import typings
|
|
|
|
from .exceptions import BfxRestException
|
|
|
|
T = TypeVar("T")
|
|
|
|
class _Serializer(Generic[T]):
|
|
def __init__(self, name: str, labels: List[str], IGNORE: List[str] = [ "_PLACEHOLDER" ]):
|
|
self.name, self.__labels, self.__IGNORE = name, labels, IGNORE
|
|
|
|
def __serialize(self, *args: Any, skip: Optional[List[str]]) -> Iterable[T]:
|
|
labels = list(filter(lambda label: label not in (skip or list()), self.__labels))
|
|
|
|
if len(labels) > len(args):
|
|
raise BfxRestException("<labels> and <*args> arguments should contain the same amount of elements.")
|
|
|
|
for index, label in enumerate(labels):
|
|
if label not in self.__IGNORE:
|
|
yield label, args[index]
|
|
|
|
def parse(self, *values: Any, skip: Optional[List[str]] = None) -> T:
|
|
return dict(self.__serialize(*values, skip=skip))
|
|
|
|
#region Serializers definition for Rest Public Endpoints
|
|
|
|
PlatformStatus = _Serializer[typings.PlatformStatus]("PlatformStatus", labels=[
|
|
"OPERATIVE"
|
|
])
|
|
|
|
TradingPairTicker = _Serializer[typings.TradingPairTicker]("TradingPairTicker", labels=[
|
|
"SYMBOL",
|
|
"BID",
|
|
"BID_SIZE",
|
|
"ASK",
|
|
"ASK_SIZE",
|
|
"DAILY_CHANGE",
|
|
"DAILY_CHANGE_RELATIVE",
|
|
"LAST_PRICE",
|
|
"VOLUME",
|
|
"HIGH",
|
|
"LOW"
|
|
])
|
|
|
|
FundingCurrencyTicker = _Serializer[typings.FundingCurrencyTicker]("FundingCurrencyTicker", labels=[
|
|
"SYMBOL",
|
|
"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"
|
|
])
|
|
|
|
TickerHistory = _Serializer[typings.TickerHistory]("TickerHistory", labels=[
|
|
"SYMBOL",
|
|
"BID",
|
|
"_PLACEHOLDER",
|
|
"ASK",
|
|
"_PLACEHOLDER",
|
|
"_PLACEHOLDER",
|
|
"_PLACEHOLDER",
|
|
"_PLACEHOLDER",
|
|
"_PLACEHOLDER",
|
|
"_PLACEHOLDER",
|
|
"_PLACEHOLDER",
|
|
"_PLACEHOLDER",
|
|
"MTS"
|
|
])
|
|
|
|
TradingPairTrade = _Serializer[typings.TradingPairTrade]("TradingPairTrade", labels=[
|
|
"ID",
|
|
"MTS",
|
|
"AMOUNT",
|
|
"PRICE"
|
|
])
|
|
|
|
FundingCurrencyTrade = _Serializer[typings.FundingCurrencyTrade]("FundingCurrencyTrade", labels=[
|
|
"ID",
|
|
"MTS",
|
|
"AMOUNT",
|
|
"RATE",
|
|
"PERIOD"
|
|
])
|
|
|
|
TradingPairBook = _Serializer[typings.TradingPairBook]("TradingPairBook", labels=[
|
|
"PRICE",
|
|
"COUNT",
|
|
"AMOUNT"
|
|
])
|
|
|
|
FundingCurrencyBook = _Serializer[typings.FundingCurrencyBook]("FundingCurrencyBook", labels=[
|
|
"RATE",
|
|
"PERIOD",
|
|
"COUNT",
|
|
"AMOUNT"
|
|
])
|
|
|
|
TradingPairRawBook = _Serializer[typings.TradingPairRawBook]("TradingPairRawBook", labels=[
|
|
"ORDER_ID",
|
|
"PRICE",
|
|
"AMOUNT"
|
|
])
|
|
|
|
FundingCurrencyRawBook = _Serializer[typings.FundingCurrencyRawBook]("FundingCurrencyRawBook", labels=[
|
|
"OFFER_ID",
|
|
"PERIOD",
|
|
"RATE",
|
|
"AMOUNT"
|
|
])
|
|
|
|
Stat = _Serializer[typings.Stat]("Stat", labels=[
|
|
"MTS",
|
|
"VALUE"
|
|
])
|
|
|
|
Candle = _Serializer[typings.Candle]("Candle", labels=[
|
|
"MTS",
|
|
"OPEN",
|
|
"CLOSE",
|
|
"HIGH",
|
|
"LOW",
|
|
"VOLUME"
|
|
])
|
|
|
|
DerivativesStatus = _Serializer[typings.DerivativesStatus]("DerivativesStatus", labels=[
|
|
"KEY",
|
|
"MTS",
|
|
"_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"
|
|
])
|
|
|
|
Liquidation = _Serializer[typings.Liquidation]("Liquidation", labels=[
|
|
"_PLACEHOLDER",
|
|
"POS_ID",
|
|
"MTS",
|
|
"_PLACEHOLDER",
|
|
"SYMBOL",
|
|
"AMOUNT",
|
|
"BASE_PRICE",
|
|
"_PLACEHOLDER",
|
|
"IS_MATCH",
|
|
"IS_MARKET_SOLD",
|
|
"_PLACEHOLDER",
|
|
"PRICE_ACQUIRED"
|
|
])
|
|
|
|
Leaderboard = _Serializer[typings.Leaderboard]("Leaderboard", labels=[
|
|
"MTS",
|
|
"_PLACEHOLDER",
|
|
"USERNAME",
|
|
"RANKING",
|
|
"_PLACEHOLDER",
|
|
"_PLACEHOLDER",
|
|
"VALUE",
|
|
"_PLACEHOLDER",
|
|
"_PLACEHOLDER",
|
|
"TWITTER_HANDLE"
|
|
])
|
|
|
|
FundingStat = _Serializer[typings.FundingStat]("FundingStat", labels=[
|
|
"TIMESTAMP",
|
|
"_PLACEHOLDER",
|
|
"_PLACEHOLDER",
|
|
"FRR",
|
|
"AVG_PERIOD",
|
|
"_PLACEHOLDER",
|
|
"_PLACEHOLDER",
|
|
"FUNDING_AMOUNT",
|
|
"FUNDING_AMOUNT_USED",
|
|
"_PLACEHOLDER",
|
|
"_PLACEHOLDER",
|
|
"FUNDING_BELOW_THRESHOLD"
|
|
])
|
|
|
|
#endregion |