mirror of
https://github.com/aljazceru/bitfinex-api-py.git
synced 2025-12-18 22:34:21 +01:00
57 lines
1.8 KiB
Python
57 lines
1.8 KiB
Python
from typing import TYPE_CHECKING, List, Optional
|
|
|
|
from bfxapi._utils.logging import ColorLogger
|
|
from bfxapi.exceptions import IncompleteCredentialError
|
|
from bfxapi.rest import BfxRestInterface
|
|
from bfxapi.websocket import BfxWebSocketClient
|
|
|
|
if TYPE_CHECKING:
|
|
from bfxapi.websocket._client.bfx_websocket_client import _Credentials
|
|
|
|
REST_HOST = "https://api.bitfinex.com/v2"
|
|
WSS_HOST = "wss://api.bitfinex.com/ws/2"
|
|
|
|
PUB_REST_HOST = "https://api-pub.bitfinex.com/v2"
|
|
PUB_WSS_HOST = "wss://api-pub.bitfinex.com/ws/2"
|
|
|
|
|
|
class Client:
|
|
def __init__(
|
|
self,
|
|
api_key: Optional[str] = None,
|
|
api_secret: Optional[str] = None,
|
|
*,
|
|
rest_host: str = REST_HOST,
|
|
wss_host: str = WSS_HOST,
|
|
filters: Optional[List[str]] = None,
|
|
timeout: Optional[int] = 60 * 15,
|
|
log_filename: Optional[str] = None,
|
|
) -> None:
|
|
credentials: Optional["_Credentials"] = None
|
|
|
|
if api_key and api_secret:
|
|
credentials = {
|
|
"api_key": api_key,
|
|
"api_secret": api_secret,
|
|
"filters": filters,
|
|
}
|
|
elif api_key:
|
|
raise IncompleteCredentialError(
|
|
"You must provide both an API-KEY and an API-SECRET (missing API-KEY)."
|
|
)
|
|
elif api_secret:
|
|
raise IncompleteCredentialError(
|
|
"You must provide both an API-KEY and an API-SECRET (missing API-SECRET)."
|
|
)
|
|
|
|
self.rest = BfxRestInterface(rest_host, api_key, api_secret)
|
|
|
|
logger = ColorLogger("bfxapi", level="INFO")
|
|
|
|
if log_filename:
|
|
logger.register(filename=log_filename)
|
|
|
|
self.wss = BfxWebSocketClient(
|
|
wss_host, credentials=credentials, timeout=timeout, logger=logger
|
|
)
|