diff --git a/octodns/provider/dnsimple.py b/octodns/provider/dnsimple.py index 7a9db50..18dae68 100644 --- a/octodns/provider/dnsimple.py +++ b/octodns/provider/dnsimple.py @@ -112,7 +112,14 @@ class DnsimpleProvider(BaseProvider): _data_for_A = _data_for_multiple _data_for_AAAA = _data_for_multiple _data_for_SPF = _data_for_multiple - _data_for_TXT = _data_for_multiple + + def _data_for_TXT(self, _type, records): + return { + 'ttl': records[0]['ttl'], + 'type': _type, + # escape semicolons + 'values': [r['content'].replace(';', '\\;') for r in records] + } def _data_for_CAA(self, _type, records): values = [] @@ -290,7 +297,16 @@ class DnsimpleProvider(BaseProvider): _params_for_AAAA = _params_for_multiple _params_for_NS = _params_for_multiple _params_for_SPF = _params_for_multiple - _params_for_TXT = _params_for_multiple + + def _params_for_TXT(self, record): + for value in record.values: + yield { + # un-escape semicolons + 'content': value.replace('\\', ''), + 'name': record.name, + 'ttl': record.ttl, + 'type': record._type, + } def _params_for_CAA(self, record): for value in record.values: diff --git a/requirements.txt b/requirements.txt index adc8268..b4d155d 100644 --- a/requirements.txt +++ b/requirements.txt @@ -13,7 +13,7 @@ incf.countryutils==1.0 ipaddress==1.0.22 jmespath==0.9.3 msrestazure==0.4.27 -natsort==5.2.0 +natsort==5.5.0 nsone==0.9.100 ovh==0.4.8 python-dateutil==2.6.1 diff --git a/setup.py b/setup.py index a2882bc..db35997 100644 --- a/setup.py +++ b/setup.py @@ -34,7 +34,7 @@ setup( 'futures>=3.2.0', 'incf.countryutils>=1.0', 'ipaddress>=1.0.22', - 'natsort>=5.2.0,<5.3', + 'natsort>=5.5.0', # botocore doesn't like >=2.7.0 for some reason 'python-dateutil>=2.6.0,<2.7.0', 'requests>=2.20.0' diff --git a/tests/fixtures/dnsimple-page-2.json b/tests/fixtures/dnsimple-page-2.json index a42c393..c12c4f4 100644 --- a/tests/fixtures/dnsimple-page-2.json +++ b/tests/fixtures/dnsimple-page-2.json @@ -133,7 +133,7 @@ "zone_id": "unit.tests", "parent_id": null, "name": "txt", - "content": "v=DKIM1\\;k=rsa\\;s=email\\;h=sha256\\;p=A/kinda+of/long/string+with+numb3rs", + "content": "v=DKIM1;k=rsa;s=email;h=sha256;p=A/kinda+of/long/string+with+numb3rs", "ttl": 600, "priority": null, "type": "TXT",