From fcfed3f44181f1eae56f4663e9f77055d081be03 Mon Sep 17 00:00:00 2001
From: Jack <jack@lbry.io>
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 <jack@lbry.io>
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 <jack@lbry.io>
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 <jack@lbry.io>
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