From 40374ec2024b7b031e227b7de5f92ca3ee58b3d5 Mon Sep 17 00:00:00 2001 From: Jack Robison Date: Tue, 4 Apr 2017 22:41:57 -0400 Subject: [PATCH] use lbryio api for price data instead of bittrex --- CHANGELOG.md | 2 ++ lbrynet/conf.py | 1 - lbrynet/lbrynet_daemon/ExchangeRateManager.py | 20 ++++++++++++++++++- tests/unit/core/test_Wallet.py | 3 ++- .../test_ExchangeRateManager.py | 16 ++++----------- 5 files changed, 27 insertions(+), 15 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d0ccb73e9..b1e8e6dc6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,6 +19,8 @@ at anytime. ### Changed * Use `uri` instead of `name` for `get`, remove explicit `claim_id` parameter * Increase default download timeout + * Use lbry.io api for exchange rate data + * ### Fixed * diff --git a/lbrynet/conf.py b/lbrynet/conf.py index 34064412c..cd5869868 100644 --- a/lbrynet/conf.py +++ b/lbrynet/conf.py @@ -153,7 +153,6 @@ ADJUSTABLE_SETTINGS = { 'api_host': (str, 'localhost'), 'api_port': (int, 5279), - 'bittrex_feed': (str, 'https://bittrex.com/api/v1.1/public/getmarkethistory'), 'cache_time': (int, 150), 'check_ui_requirements': (bool, True), 'data_dir': (str, default_data_dir), diff --git a/lbrynet/lbrynet_daemon/ExchangeRateManager.py b/lbrynet/lbrynet_daemon/ExchangeRateManager.py index 8355b423f..e0ec2459b 100644 --- a/lbrynet/lbrynet_daemon/ExchangeRateManager.py +++ b/lbrynet/lbrynet_daemon/ExchangeRateManager.py @@ -111,6 +111,24 @@ class BittrexFeed(MarketFeed): return defer.succeed(float(1.0 / vwap)) +class LBRYioFeed(MarketFeed): + def __init__(self): + MarketFeed.__init__( + self, + "BTCLBC", + "lbry.io", + "https://api.lbry.io/lbc/exchange_rate", + {}, + 0.0, + ) + + def _handle_response(self, response): + json_response = json.loads(response) + if 'data' not in json_response: + raise InvalidExchangeRateResponse(self.name, 'result not found') + return defer.succeed(1.0 / json_response['data']['lbc_btc']) + + class GoogleBTCFeed(MarketFeed): def __init__(self): MarketFeed.__init__( @@ -144,7 +162,7 @@ def get_default_market_feed(currency_pair): if currencies == ("USD", "BTC"): return GoogleBTCFeed() elif currencies == ("BTC", "LBC"): - return BittrexFeed() + return LBRYioFeed() class ExchangeRateManager(object): diff --git a/tests/unit/core/test_Wallet.py b/tests/unit/core/test_Wallet.py index 17988615e..53b9b7c52 100644 --- a/tests/unit/core/test_Wallet.py +++ b/tests/unit/core/test_Wallet.py @@ -44,10 +44,11 @@ class WalletTest(unittest.TestCase): def not_enough_funds_send_name_claim(self, name, val, amount): claim_out = {'success':False, 'reason':'Not enough funds'} return claim_out + MocLbryumWallet._send_name_claim = not_enough_funds_send_name_claim wallet = MocLbryumWallet() d = wallet.claim_name('test', 1, test_claim_dict) - self.assertFailure(d,Exception) + self.assertFailure(d, Exception) return d def test_successful_send_name_claim(self): diff --git a/tests/unit/lbrynet_daemon/test_ExchangeRateManager.py b/tests/unit/lbrynet_daemon/test_ExchangeRateManager.py index 8a0ba3792..2e8937e75 100644 --- a/tests/unit/lbrynet_daemon/test_ExchangeRateManager.py +++ b/tests/unit/lbrynet_daemon/test_ExchangeRateManager.py @@ -54,22 +54,14 @@ class GoogleBTCFeedTest(unittest.TestCase): out = yield feed._handle_response(response) - - -class BittrexFeedTest(unittest.TestCase): - def setUp(self): - conf.initialize_settings() - - def tearDown(self): - conf.settings = None - +class LBRYioFeedTest(unittest.TestCase): @defer.inlineCallbacks def test_handle_response(self): - feed = ExchangeRateManager.BittrexFeed() + feed = ExchangeRateManager.LBRYioFeed() - response ='{"success":true,"message":"","result":[{"Id":6902471,"TimeStamp":"2017-02-27T23:41:52.213","Quantity":56.12611239,"Price":0.00001621,"Total":0.00090980,"FillType":"PARTIAL_FILL","OrderType":"SELL"},{"Id":6902403,"TimeStamp":"2017-02-27T23:31:40.463","Quantity":430.99988180,"Price":0.00001592,"Total":0.00686151,"FillType":"PARTIAL_FILL","OrderType":"SELL"}]}' + response ='{\"data\": {\"fresh\": 0, \"lbc_usd\": 0.05863062523378918, \"lbc_btc\": 5.065289549855739e-05, \"btc_usd\": 1157.498}, \"success\": true, \"error\": null}' out = yield feed._handle_response(response) - expected= 1.0 / ((0.00090980+0.00686151) / (56.12611239+430.99988180)) + expected = 1.0 / 5.065289549855739e-05 self.assertEqual(expected, out) response='{}'