mirror of
https://github.com/basicswap/basicswap.git
synced 2024-11-17 00:07:56 +00:00
api: Fix offers path.
This commit is contained in:
parent
c180f34f66
commit
7d0d0687cf
6 changed files with 59 additions and 8 deletions
|
@ -29,6 +29,7 @@ from .interface_btc import BTCInterface
|
|||
from .interface_ltc import LTCInterface
|
||||
from .interface_nmc import NMCInterface
|
||||
from .interface_xmr import XMRInterface
|
||||
from .interface_bitcore_btc import BitcoreBTCInterface
|
||||
|
||||
from . import __version__
|
||||
from .util import (
|
||||
|
@ -600,6 +601,12 @@ class BasicSwap(BaseApp):
|
|||
else:
|
||||
raise ValueError('Unknown coin type')
|
||||
|
||||
def createBitcoreInterface(self, coin):
|
||||
if coin == Coins.BTC:
|
||||
return BitcoreBTCInterface(self.coin_clients[coin], self.chain)
|
||||
else:
|
||||
raise ValueError('Unknown coin type')
|
||||
|
||||
def setCoinRunParams(self, coin):
|
||||
cc = self.coin_clients[coin]
|
||||
if coin == Coins.XMR:
|
||||
|
@ -636,6 +643,8 @@ class BasicSwap(BaseApp):
|
|||
def createCoinInterface(self, coin):
|
||||
if self.coin_clients[coin]['connection_type'] == 'rpc':
|
||||
self.coin_clients[coin]['interface'] = self.createInterface(coin)
|
||||
elif self.coin_clients[coin]['connection_type'] == 'bitcore':
|
||||
self.coin_clients[coin]['interface'] = self.createBitcoreInterface(coin)
|
||||
|
||||
def start(self):
|
||||
self.log.info('Starting BasicSwap %s, database v%d\n\n', __version__, self.db_version)
|
||||
|
|
19
basicswap/interface_bitcore_btc.py
Normal file
19
basicswap/interface_bitcore_btc.py
Normal file
|
@ -0,0 +1,19 @@
|
|||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Copyright (c) 2021 tecnovert
|
||||
# Distributed under the MIT software license, see the accompanying
|
||||
# file LICENSE or http://www.opensource.org/licenses/mit-license.php.
|
||||
|
||||
from .interface_btc import BTCInterface
|
||||
from .contrib.test_framework.messages import (
|
||||
CTxOut)
|
||||
|
||||
|
||||
class BitcoreBTCInterface(BTCInterface):
|
||||
def __init__(self, coin_settings, network):
|
||||
super().__init__(coin_settings, network)
|
||||
self.txoType = CTxOut
|
||||
self._network = network
|
||||
self.blocks_confirmed = coin_settings['blocks_confirmed']
|
||||
self.setConfTarget(coin_settings['conf_target'])
|
|
@ -31,7 +31,7 @@ from .rpc_xmr import (
|
|||
make_xmr_rpc2_func,
|
||||
make_xmr_wallet_rpc_func)
|
||||
from .ecc_util import (
|
||||
b2i, i2b, b2h)
|
||||
b2i, b2h)
|
||||
from .chainparams import CoinInterface, Coins
|
||||
|
||||
XMR_COIN = 10 ** 12
|
||||
|
|
|
@ -58,8 +58,8 @@ def js_offers(self, url_split, post_string, sent=False):
|
|||
|
||||
if post_string != '':
|
||||
post_data = urllib.parse.parse_qs(post_string)
|
||||
filters['coin_from'] = setCoinFilter(form_data, b'coin_from')
|
||||
filters['coin_to'] = setCoinFilter(form_data, b'coin_to')
|
||||
filters['coin_from'] = setCoinFilter(post_data, b'coin_from')
|
||||
filters['coin_to'] = setCoinFilter(post_data, b'coin_to')
|
||||
|
||||
if b'sort_by' in post_data:
|
||||
sort_by = post_data[b'sort_by'][0].decode('utf-8')
|
||||
|
|
|
@ -38,7 +38,7 @@ from basicswap.rpc_xmr import (
|
|||
from basicswap.rpc import (
|
||||
callrpc,
|
||||
)
|
||||
from tests.basicswap.mnemonics import mnemonics
|
||||
from tests.basicswap.mnemonics import mnemonics as test_mnemonics
|
||||
from tests.basicswap.common import (
|
||||
waitForServer,
|
||||
)
|
||||
|
@ -68,7 +68,7 @@ UI_PORT = 12700 + PORT_OFS
|
|||
BASE_PART_RPC_PORT = 19792
|
||||
BASE_BTC_RPC_PORT = 19796
|
||||
|
||||
NUM_NODES = 3
|
||||
NUM_NODES = int(os.getenv('NUM_NODES', 3))
|
||||
EXTRA_CONFIG_JSON = json.loads(os.getenv('EXTRA_CONFIG_JSON', '{}'))
|
||||
|
||||
|
||||
|
@ -78,6 +78,14 @@ if not len(logger.handlers):
|
|||
logger.addHandler(logging.StreamHandler(sys.stdout))
|
||||
|
||||
|
||||
def recursive_update_dict(base, new_vals):
|
||||
for key, value in new_vals.items():
|
||||
if key in base and isinstance(value, dict):
|
||||
recursive_update_dict(base[key], value)
|
||||
else:
|
||||
base[key] = value
|
||||
|
||||
|
||||
def callpartrpc(node_id, method, params=[], wallet=None, base_rpc_port=BASE_PART_RPC_PORT + PORT_OFS):
|
||||
auth = 'test_part_{0}:test_part_pwd_{0}'.format(node_id)
|
||||
return callrpc(base_rpc_port + node_id, auth, method, params, wallet)
|
||||
|
@ -113,7 +121,9 @@ class Test(unittest.TestCase):
|
|||
|
||||
random.seed(time.time())
|
||||
|
||||
logging.info('Preparing %d nodes.', NUM_NODES)
|
||||
for i in range(NUM_NODES):
|
||||
logging.info('Preparing node: %d.', i)
|
||||
client_path = os.path.join(test_path, 'client{}'.format(i))
|
||||
config_path = os.path.join(client_path, cfg.CONFIG_FILENAME)
|
||||
if RESET_TEST:
|
||||
|
@ -133,11 +143,12 @@ class Test(unittest.TestCase):
|
|||
'-datadir="{}"'.format(client_path),
|
||||
'-bindir="{}"'.format(os.path.join(test_path, 'bin')),
|
||||
'-portoffset={}'.format(i + PORT_OFS),
|
||||
'-particl_mnemonic="{}"'.format(mnemonics[i]),
|
||||
'-regtest',
|
||||
'-withcoins=monero,bitcoin',
|
||||
'-noextractover',
|
||||
'-xmrrestoreheight=0']
|
||||
if i < len(test_mnemonics):
|
||||
testargs.append('-particl_mnemonic="{}"'.format(test_mnemonics[i]))
|
||||
with patch.object(sys, 'argv', testargs):
|
||||
prepareSystem.main()
|
||||
|
||||
|
@ -208,6 +219,9 @@ class Test(unittest.TestCase):
|
|||
settings['chainclients']['bitcoin']['rpcuser'] = 'test_btc_' + str(i)
|
||||
settings['chainclients']['bitcoin']['rpcpassword'] = 'test_btc_pwd_' + str(i)
|
||||
|
||||
extra_config = EXTRA_CONFIG_JSON.get('sc{}'.format(i), {})
|
||||
recursive_update_dict(settings, extra_config)
|
||||
|
||||
with open(config_path, 'w') as fp:
|
||||
json.dump(settings, fp, indent=4)
|
||||
|
||||
|
@ -230,8 +244,8 @@ class Test(unittest.TestCase):
|
|||
self.processes.append(multiprocessing.Process(target=self.run_thread, args=(i,)))
|
||||
self.processes[-1].start()
|
||||
|
||||
waitForServer(self.delay_event, UI_PORT + 0)
|
||||
waitForServer(self.delay_event, UI_PORT + 1)
|
||||
for i in range(NUM_NODES):
|
||||
waitForServer(self.delay_event, UI_PORT + i)
|
||||
|
||||
wallets = json.loads(urlopen('http://127.0.0.1:{}/json/wallets'.format(UI_PORT + 1)).read())
|
||||
|
||||
|
|
|
@ -82,6 +82,15 @@ class Test(XmrTestBase):
|
|||
assert(len(offers) == 1)
|
||||
offer0 = offers[0]
|
||||
|
||||
post_data = {
|
||||
'coin_from': '1'
|
||||
}
|
||||
test_post_offers = json.loads(urlopen('http://127.0.0.1:12701/json/offers', data=parse.urlencode(post_data).encode()).read())
|
||||
assert(len(test_post_offers) == 2)
|
||||
post_data['coin_from'] = '2'
|
||||
test_post_offers = json.loads(urlopen('http://127.0.0.1:12701/json/offers', data=parse.urlencode(post_data).encode()).read())
|
||||
assert(len(test_post_offers) == 0)
|
||||
|
||||
bid_data = {
|
||||
'offer_id': offer0_id,
|
||||
'amount_from': offer0['amount_from']}
|
||||
|
|
Loading…
Reference in a new issue