Actually NsValue is now the same as PtrValue, so _TargetsValue to DRY things up

This commit is contained in:
Ross McFarland
2022-10-01 19:12:43 -07:00
parent 4a6fae34b3
commit f5d2d8ba6d
+10 -36
View File
@@ -1735,7 +1735,8 @@ class NaptrRecord(ValuesMixin, Record):
Record.register_type(NaptrRecord)
class _NsValue(str):
# much like _TargetValue, but geared towards multiple values
class _TargetsValue(str):
@classmethod
def parse_rdata_text(cls, value):
return value
@@ -1751,10 +1752,10 @@ class _NsValue(str):
value = idna_encode(value)
if not FQDN(value, allow_underscores=True).is_valid:
reasons.append(
f'Invalid NS value "{value}" is not a valid FQDN.'
f'Invalid {_type} value "{value}" is not a valid FQDN.'
)
elif not value.endswith('.'):
reasons.append(f'NS value "{value}" missing trailing .')
reasons.append(f'{_type} value "{value}" missing trailing .')
return reasons
@classmethod
@@ -1770,6 +1771,10 @@ class _NsValue(str):
return self
class _NsValue(_TargetsValue):
pass
class NsRecord(ValuesMixin, Record):
_type = 'NS'
_value_type = _NsValue
@@ -1778,39 +1783,8 @@ class NsRecord(ValuesMixin, Record):
Record.register_type(NsRecord)
class PtrValue(str):
@classmethod
def parse_rdata_text(self, value):
return value
@classmethod
def validate(cls, data, _type):
if not data:
return ['missing value(s)']
elif not isinstance(data, (list, tuple)):
data = (data,)
reasons = []
for value in data:
value = idna_encode(value)
if not FQDN(value, allow_underscores=True).is_valid:
reasons.append(
f'Invalid PTR value "{value}" is not a valid FQDN.'
)
elif not value.endswith('.'):
reasons.append(f'PTR value "{value}" missing trailing .')
return reasons
@classmethod
def process(cls, values):
return [cls(v) for v in values]
def __new__(cls, v):
v = idna_encode(v)
return super().__new__(cls, v)
@property
def rdata_text(self):
return self
class PtrValue(_TargetsValue):
pass
class PtrRecord(ValuesMixin, Record):