serverwallet

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

msg.py (1285B)


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