Make daemon return net as in monero.const, cache the value

This commit is contained in:
Michał Sałaban 2020-01-22 04:45:42 +01:00
parent 2c85d23478
commit ccf5066739
3 changed files with 42 additions and 2 deletions

View File

@ -9,6 +9,7 @@ import requests
from .. import exceptions from .. import exceptions
from ..account import Account from ..account import Account
from ..address import address, Address, SubAddress from ..address import address, Address, SubAddress
from ..const import NET_MAIN, NET_TEST, NET_STAGE
from ..numbers import from_atomic, to_atomic, PaymentID from ..numbers import from_atomic, to_atomic, PaymentID
from ..seed import Seed from ..seed import Seed
from ..transaction import Transaction, IncomingPayment, OutgoingPayment from ..transaction import Transaction, IncomingPayment, OutgoingPayment
@ -28,6 +29,9 @@ class JSONRPCDaemon(object):
:param verify_ssl_certs: verify SSL certificates when connecting :param verify_ssl_certs: verify SSL certificates when connecting
:param proxy_url: a proxy to use :param proxy_url: a proxy to use
""" """
_net = None
def __init__(self, protocol='http', host='127.0.0.1', port=18081, path='/json_rpc', def __init__(self, protocol='http', host='127.0.0.1', port=18081, path='/json_rpc',
user='', password='', timeout=30, verify_ssl_certs=True, proxy_url=None): user='', password='', timeout=30, verify_ssl_certs=True, proxy_url=None):
self.url = '{protocol}://{host}:{port}'.format( self.url = '{protocol}://{host}:{port}'.format(
@ -41,10 +45,25 @@ class JSONRPCDaemon(object):
self.verify_ssl_certs = verify_ssl_certs self.verify_ssl_certs = verify_ssl_certs
self.proxies = {protocol: proxy_url} self.proxies = {protocol: proxy_url}
def _set_net(self, info):
if info['mainnet']:
self._net = NET_MAIN
if info['testnet']:
self._net = NET_TEST
if info['stagenet']:
self._net = NET_STAGE
def info(self): def info(self):
info = self.raw_jsonrpc_request('get_info') info = self.raw_jsonrpc_request('get_info')
self._set_net(info)
return info return info
def net(self):
if self._net:
return self._net
self.info()
return self._net
def send_transaction(self, blob, relay=True): def send_transaction(self, blob, relay=True):
res = self.raw_request('/sendrawtransaction', { res = self.raw_request('/sendrawtransaction', {
'tx_as_hex': binascii.hexlify(blob), 'tx_as_hex': binascii.hexlify(blob),

View File

@ -18,6 +18,10 @@ class Daemon(object):
""" """
return self._backend.info() return self._backend.info()
@property
def net(self):
return self._backend.net()
def height(self): def height(self):
""" """
Return daemon's chain height. Return daemon's chain height.

View File

@ -1,9 +1,8 @@
from binascii import hexlify
import responses import responses
from monero.const import NET_STAGE
from monero.daemon import Daemon from monero.daemon import Daemon
from monero.backends.jsonrpc import JSONRPCDaemon from monero.backends.jsonrpc import JSONRPCDaemon
from monero.transaction import Transaction
from .base import JSONTestCase from .base import JSONTestCase
@ -27,6 +26,24 @@ class JSONRPCDaemonTestCase(JSONTestCase):
self.assertTrue(self.daemon.info()) self.assertTrue(self.daemon.info())
self.assertEqual(self.daemon.height(), 294993) self.assertEqual(self.daemon.height(), 294993)
@responses.activate
def test_net(self):
responses.add(responses.POST, self.jsonrpc_url,
json=self._read('test_basic_info-get_info.json'),
status=200)
self.assertEqual(self.daemon.net, NET_STAGE)
self.daemon.net
self.assertEqual(len(responses.calls), 1, "net value has not been cached?")
@responses.activate
def test_info_then_net(self):
responses.add(responses.POST, self.jsonrpc_url,
json=self._read('test_basic_info-get_info.json'),
status=200)
self.daemon.info()
self.assertEqual(self.daemon.net, NET_STAGE)
self.assertEqual(len(responses.calls), 1, "net value has not been cached?")
@responses.activate @responses.activate
def test_mempool(self): def test_mempool(self):
responses.add(responses.POST, self.mempool_url, responses.add(responses.POST, self.mempool_url,