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
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):
def __init__(self, name, invalid_characters):
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.core.client.ClientRequest import ClientRequest
from lbrynet.core.Error import RequestCanceledError, InsufficientFundsError, UnknownNameError
from lbrynet.core.Error import UnknownClaimID, UnknownURI
log = logging.getLogger(__name__)
@ -702,9 +703,13 @@ class Wallet(object):
if 'error' in results:
if results['error'] in ['name is not claimed', 'claim not found']:
raise UnknownNameError(results['error'])
else:
raise Exception(results['error'])
if 'claim_id' in results:
raise UnknownClaimID(results['claim_id'])
elif 'name' in results:
raise UnknownNameError(results['name'])
elif 'uri' in results:
raise UnknownURI(results['uri'])
raise Exception(results['error'])
if 'certificate' in results:
try:
@ -832,7 +837,10 @@ class Wallet(object):
cached_claim = None
if not cached_claim:
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:
result = cached_claim
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.ServerProtocol import ServerProtocolFactory
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__)
@ -1326,7 +1326,7 @@ class Daemon(AuthJSONRPCServer):
else:
claim_results = yield self.session.wallet.get_claim_by_name(name)
result = format_json_out_amount_as_float(claim_results)
except (TypeError, UnknownNameError):
except (TypeError, UnknownNameError, UnknownClaimID, UnknownURI):
result = False
response = yield self._render_response(result)
defer.returnValue(response)