def validate_address_set(self, conf_obj, set_name):
        if set_name not in conf_obj:
            conf_obj[set_name] = set()
            return

        if isinstance(conf_obj[set_name],
                      str) and conf_obj[set_name].lower() == 'none':
            conf_obj[set_name] = set()
            return

        # empty sets are evaluated as dict
        if not conf_obj[set_name] and (isinstance(conf_obj[set_name], dict) or
                                       isinstance(conf_obj[set_name], list)):
            conf_obj[set_name] = set()
            return

        # {KT*****,KT****} are loaded as {KT*****:None,KT****:None}
        # convert to set
        if isinstance(conf_obj[set_name], dict) and set(
                conf_obj[set_name].values()) == {None}:
            conf_obj[set_name] = set(conf_obj[set_name].keys())

        validator = AddressValidator(set_name)
        for addr in conf_obj[set_name]:
            validator.validate(addr)
Exemplo n.º 2
0
    def __validate_share_map(self, conf_obj, map_name):
        """
        all shares in the map must sum up to 1
        :param conf_obj: configuration object
        :param map_name: name of the map to validate
        :return: None
        """

        if map_name not in conf_obj:
            conf_obj[map_name] = dict()
            return

        if isinstance(conf_obj[map_name], str) and conf_obj[map_name].lower() == 'none':
            conf_obj[map_name] = dict()
            return

        if not conf_obj[map_name]:
            return

        share_map = conf_obj[map_name]

        validator = AddressValidator(map_name)
        for key, value in share_map.items():
            validator.validate(key)

        if len(share_map) > 0:
            try:
                if abs(1 - sum(share_map.values()) > 1e-4):  # a zero check actually
                    raise ConfigurationException("Map '{}' shares does not sum up to 1!".format(map_name))
            except TypeError:
                raise ConfigurationException("Map '{}' values must be number!".format(map_name))
Exemplo n.º 3
0
    def __validate_specials_map(self, conf_obj):
        if SPECIALS_MAP not in conf_obj:
            conf_obj[SPECIALS_MAP] = dict()
            return

        if isinstance(conf_obj[SPECIALS_MAP], str) and conf_obj[SPECIALS_MAP].lower() == 'none':
            conf_obj[SPECIALS_MAP] = dict()
            return

        if not conf_obj[SPECIALS_MAP]:
            return

        addr_validator = AddressValidator(SPECIALS_MAP)
        for key, value in conf_obj[SPECIALS_MAP].items():
            addr_validator.validate(key)
            FeeValidator("specials_map:" + key).validate(value)
Exemplo n.º 4
0
    def __validate_address_set(self, conf_obj, set_name):
        if set_name not in conf_obj:
            conf_obj[set_name] = set()
            return

        if isinstance(conf_obj[set_name], str) and conf_obj[set_name].lower() == 'none':
            conf_obj[set_name] = set()
            return

        # empty sets are evaluated as dict
        if not conf_obj[set_name] and (isinstance(conf_obj[set_name], dict) or isinstance(conf_obj[set_name], list)):
            conf_obj[set_name] = set()
            return

        validator = AddressValidator(set_name)
        for addr in conf_obj[set_name]:
            validator.validate(addr)
Exemplo n.º 5
0
    def validate_dest_map(self, conf_obj):
        if RULES_MAP not in conf_obj:
            conf_obj[RULES_MAP] = dict()
            return

        if isinstance(conf_obj[RULES_MAP], str) and conf_obj[SPECIALS_MAP].lower() == 'none':
            conf_obj[RULES_MAP] = dict()
            return

        if not conf_obj[RULES_MAP]:
            return

        addr_validator = AddressValidator(RULES_MAP)
        for key, value in conf_obj[RULES_MAP].items():
            # validate key (and address or MINDELEGATION)
            if key != MIN_DELEGATION_KEY:
                addr_validator.validate(key)
            # validate destination value (An address OR TOF OR TOB OR TOE)
            if value not in [TOF, TOB, TOE]:
                addr_validator.validate(key)