mirror of
https://github.com/aljazceru/bitfinex-api-py.git
synced 2025-12-19 23:04:21 +01:00
Add new endpoints in BfxRestInterfaces.py (with serializers and typings).
This commit is contained in:
@@ -2,7 +2,7 @@ import requests
|
||||
|
||||
from http import HTTPStatus
|
||||
|
||||
from typing import List, Union, Literal, Optional
|
||||
from typing import List, Union, Literal, Optional, Any
|
||||
|
||||
from . import serializers
|
||||
from .typings import *
|
||||
@@ -136,3 +136,23 @@ class BfxRestInterface(object):
|
||||
data = self.__GET("liquidations/hist", params=params)
|
||||
|
||||
return [ serializers.Liquidation.parse(*subdata[0]) for subdata in data ]
|
||||
|
||||
def leaderboards(
|
||||
self,
|
||||
resource: str, section: Literal["hist", "last"],
|
||||
sort: Optional[int] = None, start: Optional[str] = None, end: Optional[str] = None, limit: Optional[int] = None
|
||||
) -> Union[Leaderboard, Leaderboards]:
|
||||
params = { "sort": sort, "start": start, "end": end, "limit": limit }
|
||||
|
||||
data = self.__GET(f"rankings/{resource}/{section}", params=params)
|
||||
|
||||
if section == "last":
|
||||
return serializers.Leaderboard.parse(*data)
|
||||
return [ serializers.Leaderboard.parse(*subdata) for subdata in data ]
|
||||
|
||||
def funding_stats(self, symbol: str, start: Optional[str] = None, end: Optional[str] = None, limit: Optional[int] = None) -> FundingStats:
|
||||
params = { "start": start, "end": end, "limit": limit }
|
||||
|
||||
data = self.__GET(f"funding/stats/{symbol}/hist", params=params)
|
||||
|
||||
return [ serializers.FundingStat.parse(*subdata) for subdata in data ]
|
||||
@@ -13,7 +13,7 @@ class _Serializer(Generic[T]):
|
||||
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):
|
||||
if len(labels) > len(args):
|
||||
raise BfxRestException("<labels> and <*args> arguments should contain the same amount of elements.")
|
||||
|
||||
for index, label in enumerate(labels):
|
||||
@@ -176,4 +176,32 @@ Liquidation = _Serializer[typings.Liquidation]("Liquidation", labels=[
|
||||
"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
|
||||
@@ -87,7 +87,7 @@ Candle = TypedDict("Candle", {
|
||||
Candles = List[Candle]
|
||||
|
||||
DerivativesStatus = TypedDict("DerivativesStatus", {
|
||||
"KEY": str,
|
||||
"KEY": Optional[str],
|
||||
"MTS": int,
|
||||
"DERIV_PRICE": float,
|
||||
"SPOT_PRICE": float,
|
||||
@@ -117,4 +117,25 @@ Liquidation = TypedDict("Liquidation", {
|
||||
|
||||
Liquidations = List[Liquidation]
|
||||
|
||||
Leaderboard = TypedDict("Leaderboard", {
|
||||
"MTS": int,
|
||||
"USERNAME": str,
|
||||
"RANKING": int,
|
||||
"VALUE": float,
|
||||
"TWITTER_HANDLE": Optional[str]
|
||||
})
|
||||
|
||||
Leaderboards = List[Leaderboard]
|
||||
|
||||
FundingStat = TypedDict("FundingStat", {
|
||||
"TIMESTAMP": int,
|
||||
"FRR": float,
|
||||
"AVG_PERIOD": float,
|
||||
"FUNDING_AMOUNT": float,
|
||||
"FUNDING_AMOUNT_USED": float,
|
||||
"FUNDING_BELOW_THRESHOLD": float
|
||||
})
|
||||
|
||||
FundingStats = List[FundingStat]
|
||||
|
||||
#endregion
|
||||
Reference in New Issue
Block a user