Merge pull request #203 from itsdeka/use-private-host-for-auth-based-requests

Use private host for auth-based requests
This commit is contained in:
Vigan Abdurrahmani
2022-08-27 20:59:16 +02:00
committed by GitHub
28 changed files with 109 additions and 37 deletions

View File

@@ -1,3 +1,6 @@
2.0.2
-) Use private host for auth-based requests
2.0.1
-) Added User Settings Write/Read/Delete endpoints (REST)
-) Added Balance Available for Orders/Offers endpoint (REST)

View File

@@ -3,7 +3,7 @@ This module is used to interact with the bitfinex api
"""
from .version import __version__
from .client import Client
from .client import Client, PUB_REST_HOST, PUB_WS_HOST, REST_HOST, WS_HOST
from .models import (Order, Trade, OrderBook, Subscription, Wallet,
Position, FundingLoan, FundingOffer, FundingCredit,
Movement)

View File

@@ -5,13 +5,9 @@ a websocket client and a rest interface client
# pylint: disable-all
import asyncio
from .websockets.bfx_websocket import BfxWebsocket
from .rest.bfx_rest import BfxRest
REST_HOST = 'https://api-pub.bitfinex.com/v2'
WS_HOST = 'wss://api-pub.bitfinex.com/ws/2'
from .constants import *
class Client:
"""

4
bfxapi/constants.py Normal file
View File

@@ -0,0 +1,4 @@
REST_HOST = 'https://api.bitfinex.com/v2'
WS_HOST = 'wss://api.bitfinex.com/ws/2'
PUB_REST_HOST = 'https://api-pub.bitfinex.com/v2'
PUB_WS_HOST = 'wss://api-pub.bitfinex.com/ws/2'

View File

@@ -1,18 +1,21 @@
import os
import sys
import asyncio
import time
sys.path.append('../../../')
from bfxapi import Client
from bfxapi.constants import WS_HOST, REST_HOST
API_KEY=os.getenv("BFX_KEY")
API_SECRET=os.getenv("BFX_SECRET")
# Create funding requires private hosts
bfx = Client(
API_KEY=API_KEY,
API_SECRET=API_SECRET,
logLevel='DEBUG'
logLevel='DEBUG',
ws_host=WS_HOST,
rest_host=REST_HOST
)
async def create_funding():

View File

@@ -4,15 +4,19 @@ import asyncio
import time
sys.path.append('../../../')
from bfxapi import Client
from bfxapi.constants import WS_HOST, REST_HOST
from bfxapi.models import OrderType
API_KEY=os.getenv("BFX_KEY")
API_SECRET=os.getenv("BFX_SECRET")
# Create order requires private hosts
bfx = Client(
API_KEY=API_KEY,
API_SECRET=API_SECRET,
logLevel='DEBUG'
logLevel='DEBUG',
ws_host=WS_HOST,
rest_host=REST_HOST
)
async def create_order():

View File

@@ -5,14 +5,18 @@ import time
sys.path.append('../../../')
from bfxapi import Client
from bfxapi.constants import WS_HOST, REST_HOST
API_KEY=os.getenv("BFX_KEY")
API_SECRET=os.getenv("BFX_SECRET")
# Retrieving authenticated data requires private hosts
bfx = Client(
API_KEY=API_KEY,
API_SECRET=API_SECRET,
logLevel='DEBUG'
logLevel='DEBUG',
ws_host=WS_HOST,
rest_host=REST_HOST
)
now = int(round(time.time() * 1000))

View File

@@ -5,9 +5,13 @@ import time
sys.path.append('../../../')
from bfxapi import Client
from bfxapi.constants import PUB_WS_HOST, PUB_REST_HOST
# Retrieving public data requires public hosts
bfx = Client(
logLevel='DEBUG',
ws_host=PUB_WS_HOST,
rest_host=PUB_REST_HOST
)
now = int(round(time.time() * 1000))

View File

@@ -4,9 +4,13 @@ import asyncio
sys.path.append('../../../')
from bfxapi import Client
from bfxapi.constants import PUB_WS_HOST, PUB_REST_HOST
# Retrieving seed trades requires public hosts
bfx = Client(
logLevel='INFO'
logLevel='INFO',
ws_host=PUB_WS_HOST,
rest_host=PUB_REST_HOST
)
async def get_seeds():

View File

@@ -3,14 +3,18 @@ import sys
import asyncio
sys.path.append('../../../')
from bfxapi import Client
from bfxapi.constants import WS_HOST, REST_HOST
API_KEY=os.getenv("BFX_KEY")
API_SECRET=os.getenv("BFX_SECRET")
# Submitting invoices requires private hosts
bfx = Client(
API_KEY=API_KEY,
API_SECRET=API_SECRET,
logLevel='DEBUG'
logLevel='DEBUG',
ws_host=WS_HOST,
rest_host=REST_HOST
)
async def run():

View File

@@ -1,18 +1,21 @@
import os
import sys
import asyncio
import time
sys.path.append('../../../')
from bfxapi import Client
from bfxapi.constants import WS_HOST, REST_HOST
API_KEY=os.getenv("BFX_KEY")
API_SECRET=os.getenv("BFX_SECRET")
# Transfer wallet requires private hosts
bfx = Client(
API_KEY=API_KEY,
API_SECRET=API_SECRET,
logLevel='DEBUG'
logLevel='DEBUG',
ws_host=WS_HOST,
rest_host=REST_HOST
)
async def transfer_wallet():

View File

@@ -3,14 +3,18 @@ import sys
sys.path.append('../../../')
from bfxapi import Client, Order
from bfxapi.constants import WS_HOST, REST_HOST
API_KEY=os.getenv("BFX_KEY")
API_SECRET=os.getenv("BFX_SECRET")
# Canceling orders requires private hosts
bfx = Client(
API_KEY=API_KEY,
API_SECRET=API_SECRET,
logLevel='DEBUG'
logLevel='DEBUG',
ws_host=WS_HOST,
rest_host=REST_HOST
)
@bfx.ws.on('order_closed')

View File

@@ -3,9 +3,12 @@ import sys
sys.path.append('../../../')
from bfxapi import Client
from bfxapi.constants import PUB_WS_HOST, PUB_REST_HOST
bfx = Client(
logLevel='DEBUG'
logLevel='DEBUG',
ws_host=PUB_WS_HOST,
rest_host=PUB_REST_HOST
)
@bfx.ws.on('error')

View File

@@ -2,7 +2,8 @@ import os
import sys
sys.path.append('../../../')
from bfxapi import Client, Order
from bfxapi import Client
from bfxapi.constants import WS_HOST, REST_HOST
API_KEY=os.getenv("BFX_KEY")
API_SECRET=os.getenv("BFX_SECRET")
@@ -11,6 +12,8 @@ bfx = Client(
API_KEY=API_KEY,
API_SECRET=API_SECRET,
logLevel='DEBUG',
ws_host=WS_HOST,
rest_host=REST_HOST,
dead_man_switch=True, # <-- kill all orders if this connection drops
channel_filter=['wallet'] # <-- only receive wallet updates
)

View File

@@ -1,13 +1,16 @@
import os
import sys
import time
from collections import OrderedDict
sys.path.append('../../../')
from bfxapi import Client
from bfxapi.constants import PUB_WS_HOST, PUB_REST_HOST
# Retrieving orderbook requires public hosts
bfx = Client(
manageOrderBooks=True
manageOrderBooks=True,
ws_host=PUB_WS_HOST,
rest_host=PUB_REST_HOST
)
class OrderBook:

View File

@@ -8,11 +8,10 @@ bfx ws instances to comply with the open subscriptions number constraint (max. 2
import sys
sys.path.append('../../../')
import asyncio
import json
from datetime import datetime
from functools import partial
import websockets as ws
from bfxapi import Client
from bfxapi.constants import PUB_WS_HOST, PUB_REST_HOST
import math
import random
@@ -27,7 +26,7 @@ def get_random_list_of_tickers():
class Instance:
def __init__(self, _id):
self.id = _id
self.bfx = Client(logLevel='INFO')
self.bfx = Client(logLevel='INFO', ws_host=PUB_WS_HOST, rest_host=PUB_REST_HOST)
self.subscriptions = {'trades': {}, 'ticker': {}}
self.is_ready = False

View File

@@ -1,11 +1,14 @@
import os
import sys
sys.path.append('../../../')
from bfxapi import Client
from bfxapi.constants import PUB_WS_HOST, PUB_REST_HOST
# Retrieving orderbook requires public hosts
bfx = Client(
logLevel='INFO'
manageOrderBooks=True,
ws_host=PUB_WS_HOST,
rest_host=PUB_REST_HOST
)
@bfx.ws.on('error')

View File

@@ -3,14 +3,18 @@ import sys
sys.path.append('../../../')
from bfxapi import Client, Order
from bfxapi.constants import WS_HOST, REST_HOST
API_KEY=os.getenv("BFX_KEY")
API_SECRET=os.getenv("BFX_SECRET")
# Sending order requires private hosts
bfx = Client(
API_KEY=API_KEY,
API_SECRET=API_SECRET,
logLevel='DEBUG'
logLevel='DEBUG',
ws_host=WS_HOST,
rest_host=REST_HOST
)
@bfx.ws.on('order_snapshot')

View File

@@ -1,11 +1,13 @@
import os
import sys
sys.path.append('../../../')
from bfxapi import Client
from bfxapi.constants import PUB_WS_HOST, PUB_REST_HOST
bfx = Client(
logLevel='DEBUG',
ws_host=PUB_WS_HOST,
rest_host=PUB_REST_HOST
)
@bfx.ws.on('order_book_snapshot')

View File

@@ -1,11 +1,14 @@
import os
import sys
sys.path.append('../../../')
from bfxapi import Client
from bfxapi.constants import PUB_WS_HOST, PUB_REST_HOST
# Retrieving derivative status requires public hosts
bfx = Client(
logLevel='INFO'
logLevel='DEBUG',
ws_host=PUB_WS_HOST,
rest_host=PUB_REST_HOST
)
@bfx.ws.on('error')

View File

@@ -3,9 +3,13 @@ import sys
sys.path.append('../../../')
from bfxapi import Client
from bfxapi.constants import PUB_WS_HOST, PUB_REST_HOST
# Retrieving trades/candles requires public hosts
bfx = Client(
logLevel='DEBUG',
ws_host=PUB_WS_HOST,
rest_host=PUB_REST_HOST,
# Verifies that the local orderbook is up to date
# with the bitfinex servers
manageOrderBooks=True

View File

@@ -1,11 +1,14 @@
import os
import sys
sys.path.append('../../../')
from bfxapi import Client
from bfxapi.constants import PUB_WS_HOST, PUB_REST_HOST
# Retrieving tickers requires public hosts
bfx = Client(
logLevel='DEBUG'
logLevel='DEBUG',
ws_host=PUB_WS_HOST,
rest_host=PUB_REST_HOST
)
@bfx.ws.on('error')

View File

@@ -1,11 +1,14 @@
import os
import sys
sys.path.append('../../../')
from bfxapi import Client
from bfxapi.constants import PUB_WS_HOST, PUB_REST_HOST
# Retrieving trades/candles requires public hosts
bfx = Client(
logLevel='DEBUG'
logLevel='DEBUG',
ws_host=PUB_WS_HOST,
rest_host=PUB_REST_HOST
)
@bfx.ws.on('error')

View File

@@ -3,14 +3,18 @@ import sys
sys.path.append('../../../')
from bfxapi import Client, Order
from bfxapi.constants import WS_HOST, REST_HOST
API_KEY=os.getenv("BFX_KEY")
API_SECRET=os.getenv("BFX_SECRET")
# Update order requires private hosts
bfx = Client(
API_KEY=API_KEY,
API_SECRET=API_SECRET,
logLevel='DEBUG'
logLevel='INFO',
ws_host=WS_HOST,
rest_host=REST_HOST
)
@bfx.ws.on('order_update')

View File

@@ -2,14 +2,18 @@ import os
import sys
sys.path.append('../../../')
from bfxapi import Client
from bfxapi.constants import WS_HOST, REST_HOST
API_KEY=os.getenv("BFX_KEY")
API_SECRET=os.getenv("BFX_SECRET")
# Checking wallet balances requires private hosts
bfx = Client(
API_KEY=API_KEY,
API_SECRET=API_SECRET,
logLevel='INFO'
logLevel='INFO',
ws_host=WS_HOST,
rest_host=REST_HOST
)
@bfx.ws.on('wallet_snapshot')

View File

@@ -2,4 +2,4 @@
This module contains the current version of the bfxapi lib
"""
__version__ = '2.0.1'
__version__ = '2.0.2'

View File

@@ -14,6 +14,7 @@ from .order_manager import OrderManager
from ..utils.auth import generate_auth_payload
from ..utils.decorators import handle_failure
from ..models import Order, Trade, OrderBook, Ticker, FundingTicker
from ..constants import PUB_WS_HOST
class Flags:
@@ -187,7 +188,7 @@ class BfxWebsocket(GenericWebsocket):
- `unsubscribed` (Subscription): A channel has been un-subscribed
"""
def __init__(self, API_KEY=None, API_SECRET=None, host='wss://api-pub.bitfinex.com/ws/2',
def __init__(self, API_KEY=None, API_SECRET=None, host=PUB_WS_HOST,
manageOrderBooks=False, dead_man_switch=False, ws_capacity=25, logLevel='INFO', parse_float=float,
channel_filter=[], *args, **kwargs):
self.API_KEY = API_KEY

View File

@@ -11,7 +11,7 @@ from os import path
here = path.abspath(path.dirname(__file__))
setup(
name='bitfinex-api-py',
version='2.0.1',
version='2.0.2',
description='Official Bitfinex Python API',
long_description='A Python reference implementation of the Bitfinex API for both REST and websocket interaction',
long_description_content_type='text/markdown',