From 9fae8f51538f206678079f2fe70c49f41683f967 Mon Sep 17 00:00:00 2001
From: Lex Berezhny <lex@damoti.com>
Date: Sun, 21 Apr 2019 11:06:03 -0400
Subject: [PATCH] added --include_protobuf to add hexlified protobuf to RPC
 responses

---
 lbrynet/extras/daemon/Daemon.py                | 3 ++-
 lbrynet/extras/daemon/json_response_encoder.py | 5 ++++-
 2 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/lbrynet/extras/daemon/Daemon.py b/lbrynet/extras/daemon/Daemon.py
index 9ea530a13..55feba7f5 100644
--- a/lbrynet/extras/daemon/Daemon.py
+++ b/lbrynet/extras/daemon/Daemon.py
@@ -441,13 +441,14 @@ class Daemon(metaclass=JSONRPCServerType):
 
     async def handle_old_jsonrpc(self, request):
         data = await request.json()
+        include_protobuf = data.get('params', {}).pop('include_protobuf', False)
         result = await self._process_rpc_call(data)
         ledger = None
         if 'wallet' in self.component_manager.get_components_status():
             # self.ledger only available if wallet component is not skipped
             ledger = self.ledger
         return web.Response(
-            text=jsonrpc_dumps_pretty(result, ledger=ledger),
+            text=jsonrpc_dumps_pretty(result, ledger=ledger, include_protobuf=include_protobuf),
             content_type='application/json'
         )
 
diff --git a/lbrynet/extras/daemon/json_response_encoder.py b/lbrynet/extras/daemon/json_response_encoder.py
index b2f62ea32..36d89f78f 100644
--- a/lbrynet/extras/daemon/json_response_encoder.py
+++ b/lbrynet/extras/daemon/json_response_encoder.py
@@ -98,9 +98,10 @@ def encode_file_doc():
 
 class JSONResponseEncoder(JSONEncoder):
 
-    def __init__(self, *args, ledger: MainNetLedger, **kwargs):
+    def __init__(self, *args, ledger: MainNetLedger, include_protobuf=False, **kwargs):
         super().__init__(*args, **kwargs)
         self.ledger = ledger
+        self.include_protobuf = include_protobuf
 
     def default(self, obj):  # pylint: disable=method-hidden
         if isinstance(obj, Account):
@@ -168,6 +169,8 @@ class JSONResponseEncoder(JSONEncoder):
             })
             if txo.script.is_claim_name or txo.script.is_update_claim:
                 output['value'] = txo.claim
+                if self.include_protobuf:
+                    output['protobuf'] = hexlify(txo.claim.to_bytes())
                 output['sub_type'] = txo.claim.claim_type
                 if txo.channel is not None:
                     output['signing_channel'] = {