add resolution exception types

This commit is contained in:
Jack Robison 2017-06-09 13:39:55 -04:00
parent b85655ff58
commit 2cfd29564b
3 changed files with 26 additions and 6 deletions

View file

@ -39,6 +39,18 @@ class UnknownNameError(Exception):
self.name = name self.name = name
class UnknownClaimID(Exception):
def __init__(self, claim_id):
Exception.__init__(self, 'Claim {} is unknown'.format(claim_id))
self.claim_id = claim_id
class UnknownURI(Exception):
def __init__(self, uri):
Exception.__init__(self, 'URI {} cannot be resolved'.format(uri))
self.name = uri
class InvalidName(Exception): class InvalidName(Exception):
def __init__(self, name, invalid_characters): def __init__(self, name, invalid_characters):
self.name = name self.name = name

View file

@ -26,6 +26,7 @@ from lbrynet.core.sqlite_helpers import rerun_if_locked
from lbrynet.interfaces import IRequestCreator, IQueryHandlerFactory, IQueryHandler, IWallet from lbrynet.interfaces import IRequestCreator, IQueryHandlerFactory, IQueryHandler, IWallet
from lbrynet.core.client.ClientRequest import ClientRequest from lbrynet.core.client.ClientRequest import ClientRequest
from lbrynet.core.Error import RequestCanceledError, InsufficientFundsError, UnknownNameError from lbrynet.core.Error import RequestCanceledError, InsufficientFundsError, UnknownNameError
from lbrynet.core.Error import UnknownClaimID, UnknownURI
log = logging.getLogger(__name__) log = logging.getLogger(__name__)
@ -702,9 +703,13 @@ class Wallet(object):
if 'error' in results: if 'error' in results:
if results['error'] in ['name is not claimed', 'claim not found']: if results['error'] in ['name is not claimed', 'claim not found']:
raise UnknownNameError(results['error']) if 'claim_id' in results:
else: raise UnknownClaimID(results['claim_id'])
raise Exception(results['error']) elif 'name' in results:
raise UnknownNameError(results['name'])
elif 'uri' in results:
raise UnknownURI(results['uri'])
raise Exception(results['error'])
if 'certificate' in results: if 'certificate' in results:
try: try:
@ -832,7 +837,10 @@ class Wallet(object):
cached_claim = None cached_claim = None
if not cached_claim: if not cached_claim:
claim = yield self._get_claim_by_outpoint(txid, nout) claim = yield self._get_claim_by_outpoint(txid, nout)
result = yield self._handle_claim_result(claim) try:
result = yield self._handle_claim_result(claim)
except (UnknownNameError, UnknownClaimID, UnknownURI) as err:
result = {'error': err.message}
else: else:
result = cached_claim result = cached_claim
defer.returnValue(result) defer.returnValue(result)

View file

@ -46,7 +46,7 @@ from lbrynet.core.looping_call_manager import LoopingCallManager
from lbrynet.core.server.BlobRequestHandler import BlobRequestHandlerFactory from lbrynet.core.server.BlobRequestHandler import BlobRequestHandlerFactory
from lbrynet.core.server.ServerProtocol import ServerProtocolFactory from lbrynet.core.server.ServerProtocol import ServerProtocolFactory
from lbrynet.core.Error import InsufficientFundsError, UnknownNameError, NoSuchSDHash from lbrynet.core.Error import InsufficientFundsError, UnknownNameError, NoSuchSDHash
from lbrynet.core.Error import NoSuchStreamHash from lbrynet.core.Error import NoSuchStreamHash, UnknownClaimID, UnknownURI
log = logging.getLogger(__name__) log = logging.getLogger(__name__)
@ -1326,7 +1326,7 @@ class Daemon(AuthJSONRPCServer):
else: else:
claim_results = yield self.session.wallet.get_claim_by_name(name) claim_results = yield self.session.wallet.get_claim_by_name(name)
result = format_json_out_amount_as_float(claim_results) result = format_json_out_amount_as_float(claim_results)
except (TypeError, UnknownNameError): except (TypeError, UnknownNameError, UnknownClaimID, UnknownURI):
result = False result = False
response = yield self._render_response(result) response = yield self._render_response(result)
defer.returnValue(response) defer.returnValue(response)