diff --git a/CHANGELOG.md b/CHANGELOG.md index aed390894..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 a535a8af6..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) @@ -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..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,40 @@ 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 + 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