from typing import Dict
from munch import Munch
[docs]class HTTPHeaders(object):
PRICE = 'RDN-Price'
CONTRACT_ADDRESS = 'RDN-Contract-Address'
RECEIVER_ADDRESS = 'RDN-Receiver-Address'
TOKEN_ADDRESS = 'RDN-Token-Address'
PAYMENT = 'RDN-Payment'
BALANCE = 'RDN-Balance'
BALANCE_SIGNATURE = 'RDN-Balance-Signature'
SENDER_ADDRESS = 'RDN-Sender-Address'
SENDER_BALANCE = 'RDN-Sender-Balance'
GATEWAY_PATH = 'RDN-Gateway-Path'
COST = 'RDN-Cost'
OPEN_BLOCK = 'RDN-Open-Block'
# errors
INSUF_CONFS = 'RDN-Insufficient-Confirmations'
NONEXISTING_CHANNEL = 'RDN-Nonexisting-Channel'
INVALID_PROOF = 'RDN-Invalid-Balance-Proof'
INVALID_AMOUNT = 'RDN-Invalid-Amount'
DESERIALIZE_DICT = None
SERIALIZE_DICT = None
[docs] @classmethod
def as_dict(cls):
return dict((k.lower(), v) for k, v in cls.__dict__.items() if str(v).startswith('RDN'))
[docs] @classmethod
def deserialize(cls, headers: Dict[str, str] = None) -> Munch:
if not cls.DESERIALIZE_DICT:
cls.DESERIALIZE_DICT = {
v.lower(): k.lower() for k, v in HTTPHeaders.__dict__.items()
if str(v).startswith('RDN')
}
return Munch({
cls.DESERIALIZE_DICT[key.lower()]: value for key, value in headers.items()
if key.lower() in cls.DESERIALIZE_DICT
})
[docs] @classmethod
def serialize(cls, headers: Munch) -> Dict[str, str]:
if not cls.SERIALIZE_DICT:
cls.SERIALIZE_DICT = {
k.lower(): v for k, v in HTTPHeaders.__dict__.items() if str(v).startswith('RDN')
}
return {cls.SERIALIZE_DICT[k]: v for k, v in headers.items() if v}