THT wrapper
A wrapper to push THT to a node could be very useful. Here is a suggestion of a possible code, not tested because THT is broken in current ucoinpy state.
#!/usr/bin/env python3
import logging
from . import Wrapper, pks, ucg, hdc, settings
logger = logging.getLogger("tht")
class THTPush(Wrapper):
def __init__(self, pgp_fingerprint, currency, trusts, hosters, keyid=None, server=None, port=None):
super().__init__(server, port)
self.pgp_fingerprint = pgp_fingerprint
self.trusts = trusts
self.hosters = hosters
self.keyid = keyid
self.currency = currency
def __call__(self):
context_data = {}
context_data.update(settings)
context_data.update(self.peering if self.peering else ucg.Peering().get())
context_data['version'] = 1
context_data['currency'] = self.currency
context_data['fingerprint'] = self.pgp_fingerprint
context_data['hosters'] = self.hosters
context_data['trusts'] = self.trusts
context_data.update(self.get_context_data())
tht = """\
Version: %(version)d
Currency: %(currency)s
Fingerprint: %(fingerprint)s
Hosters:
""" % context_data
tht += "\n".join(context_data['hosters'])
tht += "\nTrusts:\n"
tht += "\n".join(context_data['trusts'])
tht = tx.replace("\n", "\r\n")
thts = settings['gpg'].sign(tht, keyid=self.keyid, detach=True)
return self.process(tht, thts)
def get_context_data(self):
return {}
def get_message(self, context_data, tht=''):
return tht
def get_error(self):
return self.error
def process(self, tht, thts):
try:
ucg.THT(pgp_fingerprint=self.pgp_fingerprint, server=self.server, port=self.port).post(entry=tht, signature=thts)
except ValueError as e:
self.error = str(e)
else:
return True
return False