serverwallet

Server-side payment links with metadata.
Log | Files | Refs

msg.py (1305B)


      1 import json
      2 import enum
      3 
      4 import rencode
      5 
      6 
      7 class ContactType(enum.Enum):
      8     NOSTR = 'nostr'
      9     EMAIL = 'email'
     10 
     11 class Contact:
     12 
     13     def __init__(self, k, v):
     14         self.k = ContactType(k)
     15         self.v = v
     16 
     17 
     18     def typ(self):
     19         return self.k.value
     20 
     21 
     22     def val(self):
     23         return self.v
     24 
     25 
     26 class Message:
     27 
     28     def __init__(self, author, content, contact=None):
     29         self.author = author
     30         self.content = content
     31         self.contact = contact
     32         self.origin = None
     33 
     34 
     35     def set_origin(self, v):
     36         self.origin = v
     37 
     38 
     39     @staticmethod
     40     def parse_json(v):
     41         if isinstance(v, bytes):
     42             v = v.decode('utf-8')
     43         o = json.loads(v)
     44         contact = o.get('contact')
     45         contacts = []
     46         if contact != None:
     47             for k in contact.keys():
     48                 contacts.append(Contact(k, contact[k]))
     49         return Message(o['author'], o['content'], contact=contacts)
     50 
     51 
     52     def serialize(self):
     53         o = {
     54                 'n': self.author,
     55                 'v': self.content,
     56                 }
     57         if self.origin != None:
     58             o['o'] = self.origin
     59         for v in self.contact:
     60             o[v.typ()] = v.val()
     61         return rencode.dumps(o)
     62 
     63 
     64     def __str__(self):
     65         return self.author + " says: '" + self.content + "'"