Implement 'get_pair_detail_url'
This commit is contained in:
parent
d04c87c5b3
commit
4141ffa67b
@ -21,6 +21,12 @@ API_RETRY_COUNT = 4
|
||||
# Holds all open sell orders for dry_run
|
||||
_DRY_RUN_OPEN_ORDERS: Dict[str, Any] = {}
|
||||
|
||||
# Urls to exchange markets, insert quote and base with .format()
|
||||
_EXCHANGE_URLS = {
|
||||
ccxt.bittrex().id: '/Market/Index?MarketName={quote}-{base}',
|
||||
ccxt.binance().id: '/tradeDetail.html?symbol={base}_{quote}'
|
||||
}
|
||||
|
||||
|
||||
def retrier(f):
|
||||
def wrapper(*args, **kwargs):
|
||||
@ -295,8 +301,14 @@ def get_order(order_id: str, pair: str) -> Dict:
|
||||
raise OperationalException(e)
|
||||
|
||||
|
||||
# TODO: reimplement, not part of ccxt
|
||||
def get_pair_detail_url(pair: str) -> str:
|
||||
try:
|
||||
url_base = _API.urls.get('www')
|
||||
base, quote = pair.split('/')
|
||||
|
||||
return url_base + _EXCHANGE_URLS[_API.id].format(base=base, quote=quote)
|
||||
except KeyError:
|
||||
logger.warning('Could not get exchange url for %s', get_name())
|
||||
return ""
|
||||
|
||||
|
||||
@ -312,7 +324,11 @@ def get_markets() -> List[dict]:
|
||||
|
||||
|
||||
def get_name() -> str:
|
||||
return _API.__class__.__name__.capitalize()
|
||||
return _API.name
|
||||
|
||||
|
||||
def get_id() -> str:
|
||||
return _API.id
|
||||
|
||||
|
||||
def get_fee_maker() -> float:
|
||||
|
@ -9,7 +9,7 @@ import pytest
|
||||
|
||||
from freqtrade import OperationalException, DependencyException, NetworkException
|
||||
from freqtrade.exchange import init, validate_pairs, buy, sell, get_balance, get_balances, \
|
||||
get_ticker, get_ticker_history, cancel_order, get_name, get_fee
|
||||
get_ticker, get_ticker_history, cancel_order, get_name, get_fee, get_id, get_pair_detail_url
|
||||
import freqtrade.exchange as exchange
|
||||
from freqtrade.tests.conftest import log_has
|
||||
|
||||
@ -429,6 +429,41 @@ def test_get_name(default_conf, mocker):
|
||||
assert get_name() == 'Binance'
|
||||
|
||||
|
||||
def test_get_id(default_conf, mocker):
|
||||
mocker.patch('freqtrade.exchange.validate_pairs',
|
||||
side_effect=lambda s: True)
|
||||
default_conf['exchange']['name'] = 'binance'
|
||||
init(default_conf)
|
||||
|
||||
assert get_id() == 'binance'
|
||||
|
||||
|
||||
def test_get_pair_detail_url(default_conf, mocker):
|
||||
mocker.patch('freqtrade.exchange.validate_pairs',
|
||||
side_effect=lambda s: True)
|
||||
default_conf['exchange']['name'] = 'binance'
|
||||
init(default_conf)
|
||||
|
||||
url = get_pair_detail_url('TKN/ETH')
|
||||
assert 'TKN' in url
|
||||
assert 'ETH' in url
|
||||
|
||||
url = get_pair_detail_url('LOOONG/BTC')
|
||||
assert 'LOOONG' in url
|
||||
assert 'BTC' in url
|
||||
|
||||
default_conf['exchange']['name'] = 'bittrex'
|
||||
init(default_conf)
|
||||
|
||||
url = get_pair_detail_url('TKN/ETH')
|
||||
assert 'TKN' in url
|
||||
assert 'ETH' in url
|
||||
|
||||
url = get_pair_detail_url('LOOONG/BTC')
|
||||
assert 'LOOONG' in url
|
||||
assert 'BTC' in url
|
||||
|
||||
|
||||
def test_get_fee(default_conf, mocker):
|
||||
api_mock = MagicMock()
|
||||
api_mock.calculate_fee = MagicMock(return_value={
|
||||
|
Loading…
Reference in New Issue
Block a user