From fcfed3f44181f1eae56f4663e9f77055d081be03 Mon Sep 17 00:00:00 2001 From: Jack Date: Thu, 15 Sep 2016 20:15:20 -0400 Subject: [PATCH 1/4] add get_my_claim and get rid of is_mine in get_claim_info --- lbrynet/core/LBRYWallet.py | 47 +++++++++++++++++----------- lbrynet/lbrynet_daemon/LBRYDaemon.py | 15 +++++++++ 2 files changed, 43 insertions(+), 19 deletions(-) diff --git a/lbrynet/core/LBRYWallet.py b/lbrynet/core/LBRYWallet.py index da1915674..dfc344b8d 100644 --- a/lbrynet/core/LBRYWallet.py +++ b/lbrynet/core/LBRYWallet.py @@ -368,6 +368,19 @@ class LBRYWallet(object): d.addCallback(_get_id_for_return) return d + def get_my_claim(self, name): + def _get_claim_for_return(claim): + if not claim: + return False + d = self.get_claim(name, claim['claim_id']) + d.addCallback(lambda c: self._format_claim_for_return(name, c, claim['txid'])) + return d + + d = self.get_name_claims() + d.addCallback(lambda claims: next((c for c in claims if c['name'] == name and not c['is spent']), False)) + 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 +390,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 +414,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) diff --git a/lbrynet/lbrynet_daemon/LBRYDaemon.py b/lbrynet/lbrynet_daemon/LBRYDaemon.py index 5280da520..650eaf68c 100644 --- a/lbrynet/lbrynet_daemon/LBRYDaemon.py +++ b/lbrynet/lbrynet_daemon/LBRYDaemon.py @@ -1739,6 +1739,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 From 492fc510fa3abcc6693357daecd5e97f7e2d7b45 Mon Sep 17 00:00:00 2001 From: Jack Date: Wed, 21 Sep 2016 22:10:19 -0400 Subject: [PATCH 2/4] move _get_my_unspent_claim to function --- lbrynet/core/LBRYWallet.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/lbrynet/core/LBRYWallet.py b/lbrynet/core/LBRYWallet.py index dfc344b8d..ebbbaf373 100644 --- a/lbrynet/core/LBRYWallet.py +++ b/lbrynet/core/LBRYWallet.py @@ -376,8 +376,14 @@ class LBRYWallet(object): d.addCallback(lambda c: self._format_claim_for_return(name, c, 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(lambda claims: next((c for c in claims if c['name'] == name and not c['is spent']), False)) + d.addCallback(_get_my_unspent_claim) d.addCallback(_get_claim_for_return) return d From 7ac0fc5a24badea5fc5e8195275d541d95e86eb0 Mon Sep 17 00:00:00 2001 From: Jack Date: Sat, 24 Sep 2016 00:49:03 -0400 Subject: [PATCH 3/4] convert amount --- lbrynet/core/LBRYWallet.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lbrynet/core/LBRYWallet.py b/lbrynet/core/LBRYWallet.py index ebbbaf373..7280c67ef 100644 --- a/lbrynet/core/LBRYWallet.py +++ b/lbrynet/core/LBRYWallet.py @@ -399,7 +399,7 @@ class LBRYWallet(object): 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['amount'] = Decimal(claim['nEffectiveAmount'] / COIN) result['height'] = claim['nHeight'] result['name'] = name result['txid'] = txid From a936782ddcac60d8dda7cc3ec8094dfd8be674c7 Mon Sep 17 00:00:00 2001 From: Jack Date: Sat, 24 Sep 2016 00:58:54 -0400 Subject: [PATCH 4/4] fix amount formatting between get_claim_info and get_my_claim --- lbrynet/core/LBRYWallet.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/lbrynet/core/LBRYWallet.py b/lbrynet/core/LBRYWallet.py index 7280c67ef..6535e6e35 100644 --- a/lbrynet/core/LBRYWallet.py +++ b/lbrynet/core/LBRYWallet.py @@ -369,11 +369,17 @@ class LBRYWallet(object): 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(lambda c: self._format_claim_for_return(name, c, claim['txid'])) + 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): @@ -399,7 +405,7 @@ class LBRYWallet(object): def _format_claim_for_return(self, name, claim, txid, metadata=None, meta_version=None): result = {} result['claim_id'] = claim['claimId'] - result['amount'] = Decimal(claim['nEffectiveAmount'] / COIN) + result['amount'] = claim['nEffectiveAmount'] result['height'] = claim['nHeight'] result['name'] = name result['txid'] = txid