diff --git a/test.py b/test.py index 7a3b692e..ea6af7b5 100755 --- a/test.py +++ b/test.py @@ -87,15 +87,40 @@ async def ledger_data_full(ip, port, ledger): print(e) +async def book_offers(ip, port, ledger, pay_currency, pay_issuer, get_currency, get_issuer): + + address = 'ws://' + str(ip) + ':' + str(port) + try: + + async with websockets.connect(address) as ws: + taker_gets = json.loads("{\"currency\":" + get_currency+"}") + if get_issuer is not None: + taker_gets["issuer"] = get_issuer + taker_pays = json.loads("{\"currency\":" + pay_currency + "}") + if pay_issuer is not None: + taker_pays["issuer"] = pay_issuer + + await ws.send(json.dumps({"command":"book_offers","ledger_index":int(ledger), "taker_pays":taker_pays, "taker_gets":taker_gets})) + res = json.loads(await ws.recv()) + print(res) + + except websockets.exceptions.connectionclosederror as e: + print(e) + parser = argparse.ArgumentParser(description='test script for xrpl-reporting') -parser.add_argument('action', choices=["account_info", "tx", "account_tx", "ledger_data", "ledger_data_full"]) +parser.add_argument('action', choices=["account_info", "tx", "account_tx", "ledger_data", "ledger_data_full", "book_offers"]) parser.add_argument('--ip', default='127.0.0.1') parser.add_argument('--port', default='8080') parser.add_argument('--hash') parser.add_argument('--account', default="rLC64xxNif3GiY9FQnbaM4kcE6VvDhwRod") parser.add_argument('--ledger') parser.add_argument('--limit', default='200') +paresr.add_argument('--taker_pays_issuer') +parser.add_argument('--taker_pays_currency') +paresr.add_argument('--taker_gets_issuer') +parser.add_argument('--taker_gets_currency') + @@ -118,6 +143,9 @@ def run(args): elif args.action == "ledger_data_full": asyncio.get_event_loop().run_until_complete( ledger_data_full(args.ip, args.port, args.ledger)) + elif args.action == "book_offers": + asyncio.get_event_loop().run_until_complete( + book_offers(args.ip, args.port, args.ledger, args.taker_pays_currency, args.taker_pays_issuer, args.taker_gets_currency, args.taker_gets_issuer); else: print("incorrect arguments") diff --git a/websocket_server_async.cpp b/websocket_server_async.cpp index 36016b80..9e37ee5b 100644 --- a/websocket_server_async.cpp +++ b/websocket_server_async.cpp @@ -35,13 +35,21 @@ #include //------------------------------------------------------------------------------ -enum RPCCommand { tx, account_tx, ledger, account_info, ledger_data }; +enum RPCCommand { + tx, + account_tx, + ledger, + account_info, + ledger_data, + book_offers +}; std::unordered_map commandMap{ {"tx", tx}, {"account_tx", account_tx}, {"ledger", ledger}, {"account_info", account_info}, - {"ledger_data", ledger_data}}; + {"ledger_data", ledger_data}, + {"book_offers", book_offers}}; boost::json::object doAccountInfo( @@ -62,6 +70,11 @@ boost::json::object doLedgerData( boost::json::object const& request, CassandraFlatMapBackend const& backend); +boost::json::object +doBookOffers( + boost::json::object const& request, + CassandraFlatMapBackend const& backend, + std::shared_ptr& pgPool); boost::json::object buildResponse( @@ -88,6 +101,9 @@ buildResponse( case account_info: return doAccountInfo(request, backend, pgPool); break; + case book_offers: + return doBookOffers(request, backend, pgPool); + break; default: BOOST_LOG_TRIVIAL(error) << "Unknown command: " << command; }