From d98e0e81105d9b5cd3058958328ad07f265ca325 Mon Sep 17 00:00:00 2001 From: Jack Robison Date: Wed, 22 Nov 2017 13:46:34 -0500 Subject: [PATCH 1/2] add channel_import and channel_export --- CHANGELOG.md | 2 +- lbrynet/core/Wallet.py | 18 ++++++++++++++++++ lbrynet/daemon/Daemon.py | 33 +++++++++++++++++++++++++++++++++ 3 files changed, 52 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index aed390894..a6d80618a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -27,7 +27,7 @@ at anytime. ### Added * - * + * Added `channel_import` and `channel_export` commands ### Removed * diff --git a/lbrynet/core/Wallet.py b/lbrynet/core/Wallet.py index a535a8af6..8d1f0943c 100644 --- a/lbrynet/core/Wallet.py +++ b/lbrynet/core/Wallet.py @@ -1135,6 +1135,15 @@ class Wallet(object): def send_claim_to_address(self, claim_id, destination, amount): return defer.fail(NotImplementedError()) + def import_certificate_info(self, serialized_certificate_info): + return defer.fail(NotImplementedError()) + + def export_certificate_info(self, certificate_claim_id): + return defer.fail(NotImplementedError()) + + def get_certificates_for_signing(self): + return defer.fail(NotImplementedError()) + def _start(self): pass @@ -1494,6 +1503,15 @@ class LBRYumWallet(Wallet): def send_claim_to_address(self, claim_id, destination, amount): return self._run_cmd_as_defer_succeed('sendclaimtoaddress', claim_id, destination, amount) + def import_certificate_info(self, serialized_certificate_info): + return self._run_cmd_as_defer_succeed('importcertificateinfo', serialized_certificate_info) + + def export_certificate_info(self, certificate_claim_id): + return self._run_cmd_as_defer_succeed('exportcertificateinfo', certificate_claim_id) + + def get_certificates_for_signing(self): + return self._run_cmd_as_defer_succeed('getcertificatesforsigning') + # TODO: get rid of this function. lbryum should take care of it def _save_wallet(self, val=None): self.wallet.storage.write() diff --git a/lbrynet/daemon/Daemon.py b/lbrynet/daemon/Daemon.py index dbf3460c8..ae4fbf7f4 100644 --- a/lbrynet/daemon/Daemon.py +++ b/lbrynet/daemon/Daemon.py @@ -1757,6 +1757,39 @@ class Daemon(AuthJSONRPCServer): response = yield self._render_response(result) defer.returnValue(response) + @AuthJSONRPCServer.auth_required + @defer.inlineCallbacks + def jsonrpc_channel_export(self, claim_id): + """ + Export serialized channel signing information for a given certificate claim id + + Usage: + channel_export ( | --claim_id=) + + Returns: + (str) Serialized certificate information + """ + + result = yield self.session.wallet.export_certificate_info(claim_id) + defer.returnValue(result) + + @AuthJSONRPCServer.auth_required + @defer.inlineCallbacks + def jsonrpc_channel_import(self, serialized_certificate_info): + """ + Import serialized channel signing information (to allow signing new claims to the channel) + + Usage: + channel_import ( | + --serialized_certificate_info=) + + Returns: + (dict) Result dictionary + """ + + result = yield self.session.wallet.import_certificate_info(serialized_certificate_info) + defer.returnValue(result) + @AuthJSONRPCServer.auth_required @defer.inlineCallbacks def jsonrpc_publish(self, name, bid, metadata=None, file_path=None, fee=None, title=None, From 086c843068b9dc37c2eab3879c37c23f792f4075 Mon Sep 17 00:00:00 2001 From: Jack Robison Date: Wed, 22 Nov 2017 13:50:07 -0500 Subject: [PATCH 2/2] add channel_list, deprecate channel_list_mine --- CHANGELOG.md | 7 ++++--- lbrynet/core/Wallet.py | 2 +- lbrynet/daemon/Daemon.py | 24 ++++++++++++++++++++---- 3 files changed, 25 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a6d80618a..5047a1da7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,16 +18,17 @@ at anytime. * ### Deprecated - * + * `channel_list_mine`, replaced with `channel_list` * ### Changed * Check claim schema in `publish` before trying to make the claim, return better error messages - * + * Renamed `channel_list_mine` to `channel_list` + * Changed `channel_list` to include channels where the certificate info has been imported but the claim is not in the wallet ### Added - * * Added `channel_import` and `channel_export` commands + * Added `is_mine` field to `channel_list` results ### Removed * diff --git a/lbrynet/core/Wallet.py b/lbrynet/core/Wallet.py index 8d1f0943c..cefde1f6d 100644 --- a/lbrynet/core/Wallet.py +++ b/lbrynet/core/Wallet.py @@ -904,7 +904,7 @@ class Wallet(object): @defer.inlineCallbacks def channel_list(self): - certificates = yield self._get_certificate_claims() + certificates = yield self.get_certificates_for_signing() results = [] for claim in certificates: formatted = yield self._handle_claim_result(claim) diff --git a/lbrynet/daemon/Daemon.py b/lbrynet/daemon/Daemon.py index ae4fbf7f4..a2369e9b1 100644 --- a/lbrynet/daemon/Daemon.py +++ b/lbrynet/daemon/Daemon.py @@ -1742,9 +1742,27 @@ class Daemon(AuthJSONRPCServer): @AuthJSONRPCServer.auth_required @defer.inlineCallbacks + def jsonrpc_channel_list(self): + """ + Get certificate claim infos for channels that can be published to + + Usage: + channel_list + + Returns: + (list) ClaimDict, includes 'is_mine' field to indicate if the certificate claim + is in the wallet. + """ + + result = yield self.session.wallet.channel_list() + response = yield self._render_response(result) + defer.returnValue(response) + + @AuthJSONRPCServer.deprecated("channel_list") + @AuthJSONRPCServer.auth_required def jsonrpc_channel_list_mine(self): """ - Get my channels + Get certificate claim infos for channels that can be published to (deprecated) Usage: channel_list_mine @@ -1753,9 +1771,7 @@ class Daemon(AuthJSONRPCServer): (list) ClaimDict """ - result = yield self.session.wallet.channel_list() - response = yield self._render_response(result) - defer.returnValue(response) + return self.jsonrpc_channel_list() @AuthJSONRPCServer.auth_required @defer.inlineCallbacks