Merge pull request #165 from lbryio/get-my-claim
add get_my_claim, remove is_mine from get_claim_info response
This commit is contained in:
commit
bbcecea28d
2 changed files with 55 additions and 19 deletions
|
@ -368,6 +368,31 @@ class LBRYWallet(object):
|
|||
d.addCallback(_get_id_for_return)
|
||||
return d
|
||||
|
||||
def get_my_claim(self, name):
|
||||
def _convert_units(claim):
|
||||
amount = Decimal(claim['nEffectiveAmount'] / COIN)
|
||||
claim['nEffectiveAmount'] = amount
|
||||
return claim
|
||||
|
||||
def _get_claim_for_return(claim):
|
||||
if not claim:
|
||||
return False
|
||||
d = self.get_claim(name, claim['claim_id'])
|
||||
d.addCallback(_convert_units)
|
||||
d.addCallback(lambda clm: self._format_claim_for_return(name, clm, claim['txid']))
|
||||
return d
|
||||
|
||||
def _get_my_unspent_claim(claims):
|
||||
for claim in claims:
|
||||
if claim['name'] == name and not claim['is spent']:
|
||||
return claim
|
||||
return False
|
||||
|
||||
d = self.get_name_claims()
|
||||
d.addCallback(_get_my_unspent_claim)
|
||||
d.addCallback(_get_claim_for_return)
|
||||
return d
|
||||
|
||||
def get_claim_info(self, name, txid=None):
|
||||
if not txid:
|
||||
d = self._get_value_for_name(name)
|
||||
|
@ -377,9 +402,20 @@ class LBRYWallet(object):
|
|||
d.addErrback(lambda _: False)
|
||||
return d
|
||||
|
||||
def _format_claim_for_return(self, name, claim, txid, metadata=None, meta_version=None):
|
||||
result = {}
|
||||
result['claim_id'] = claim['claimId']
|
||||
result['amount'] = claim['nEffectiveAmount']
|
||||
result['height'] = claim['nHeight']
|
||||
result['name'] = name
|
||||
result['txid'] = txid
|
||||
result['value'] = metadata if metadata else json.loads(claim['value'])
|
||||
result['supports'] = [{'txid': support['txid'], 'n': support['n']} for support in claim['supports']]
|
||||
result['meta_version'] = meta_version if meta_version else result['value'].get('ver', '0.0.1')
|
||||
return result
|
||||
|
||||
def _get_claim_info(self, name, txid):
|
||||
def _build_response(claim):
|
||||
result = {}
|
||||
try:
|
||||
metadata = Metadata(json.loads(claim['value']))
|
||||
meta_ver = metadata.version
|
||||
|
@ -390,27 +426,12 @@ class LBRYWallet(object):
|
|||
meta_ver = "Non-compliant"
|
||||
d = defer.succeed(None)
|
||||
|
||||
claim_id = claim['claimId']
|
||||
result['claim_id'] = claim_id
|
||||
result['amount'] = claim['nEffectiveAmount']
|
||||
result['height'] = claim['nHeight']
|
||||
result['name'] = name
|
||||
result['txid'] = txid
|
||||
result['value'] = metadata
|
||||
result['supports'] = [{'txid': support['txid'], 'n': support['n']} for support in claim['supports']]
|
||||
result['meta_version'] = meta_ver
|
||||
d.addCallback(lambda _: self._format_claim_for_return(name, claim, txid,
|
||||
metadata=metadata, meta_version=meta_ver))
|
||||
log.info("get claim info lbry://%s metadata: %s, claimid: %s", name, meta_ver, claim['claimId'])
|
||||
|
||||
log.info("get claim info lbry://%s metadata: %s, claimid: %s", name, meta_ver, claim_id)
|
||||
|
||||
d.addCallback(lambda _: self.get_name_claims())
|
||||
d.addCallback(lambda r: [c['txid'] for c in r])
|
||||
d.addCallback(lambda my_claims: _add_is_mine(result, my_claims))
|
||||
return d
|
||||
|
||||
def _add_is_mine(response, my_txs):
|
||||
response['is_mine'] = response['txid'] in my_txs
|
||||
return response
|
||||
|
||||
d = self.get_claimid(name, txid)
|
||||
d.addCallback(lambda claim_id: self.get_claim(name, claim_id))
|
||||
d.addCallback(_build_response)
|
||||
|
|
|
@ -1748,6 +1748,21 @@ class LBRYDaemon(jsonrpc.JSONRPC):
|
|||
d.addCallbacks(lambda info: self._render_response(info, OK_CODE), lambda _: server.failure)
|
||||
return d
|
||||
|
||||
def jsonrpc_get_my_claim(self, p):
|
||||
"""
|
||||
Return existing claim for a given name
|
||||
|
||||
Args:
|
||||
'name': name to look up
|
||||
Returns:
|
||||
claim info, False if no such claim exists
|
||||
"""
|
||||
|
||||
name = p['name']
|
||||
d = self.session.wallet.get_my_claim(name)
|
||||
d.addCallback(lambda r: self._render_response(r, OK_CODE))
|
||||
return d
|
||||
|
||||
def jsonrpc_get_claim_info(self, p):
|
||||
"""
|
||||
Resolve claim info from a LBRY uri
|
||||
|
|
Loading…
Reference in a new issue