From 06b4c6b9c1adf0ce7520762ecf46b013c4d840da Mon Sep 17 00:00:00 2001 From: Martin Levy Date: Wed, 30 Aug 2017 10:37:45 -0700 Subject: [PATCH] added example python code for dns_records/export --- README.md | 24 ++++++++++++++++ README.rst | 25 ++++++++++++++++ examples/example_dns_export.py | 52 ++++++++++++++++++++++++++++++++++ 3 files changed, 101 insertions(+) create mode 100755 examples/example_dns_export.py diff --git a/README.md b/README.md index 64d3c19..16c1891 100644 --- a/README.md +++ b/README.md @@ -671,6 +671,30 @@ $ The **jq -r** option is used to convert newlines and tabs within the JSON response data. The egrep is used for documentation brevity. +This can also be done via Python code with the following example. +``` +#!/usr/bin/env python +import sys +import CloudFlare + +def main(): + zone_name = sys.argv[1] + cf = CloudFlare.CloudFlare() + + zones = cf.zones.get(params={'name': zone_name}) + zone_id = zones[0]['id'] + + dns_records = cf.zones.dns_records.export.get(zone_id) + for l in dns_records.splitlines(): + if len(l) == 0 or l[0] == ';': + continue + print l + exit(0) + +if __name__ == '__main__': + main() +``` + ## Implemented API calls The **--dump** argument to cli4 will produce a list of all the call implemented within the library. diff --git a/README.rst b/README.rst index 560ab94..3a0ae7a 100644 --- a/README.rst +++ b/README.rst @@ -739,6 +739,31 @@ page within the Cloudflare portal. The **jq -r** option is used to convert newlines and tabs within the JSON response data. The egrep is used for documentation brevity. +This can also be done via Python code with the following example. + +:: + + #!/usr/bin/env python + import sys + import CloudFlare + + def main(): + zone_name = sys.argv[1] + cf = CloudFlare.CloudFlare() + + zones = cf.zones.get(params={'name': zone_name}) + zone_id = zones[0]['id'] + + dns_records = cf.zones.dns_records.export.get(zone_id) + for l in dns_records.splitlines(): + if len(l) == 0 or l[0] == ';': + continue + print l + exit(0) + + if __name__ == '__main__': + main() + Implemented API calls --------------------- diff --git a/examples/example_dns_export.py b/examples/example_dns_export.py new file mode 100755 index 0000000..8b5d67f --- /dev/null +++ b/examples/example_dns_export.py @@ -0,0 +1,52 @@ +#!/usr/bin/env python +"""Cloudflare API code - example""" + +import os +import sys +sys.path.insert(0, os.path.abspath('..')) + +import CloudFlare + +def main(): + """Cloudflare API code - example""" + + try: + zone_name = sys.argv[1] + except IndexError: + exit('usage: example_dns_export.py zone') + + cf = CloudFlare.CloudFlare() + + # grab the zone identifier + try: + params = {'name': zone_name} + zones = cf.zones.get(params=params) + except CloudFlare.exceptions.CloudFlareAPIError as e: + exit('/zones %d %s - api call failed' % (e, e)) + except Exception as e: + exit('/zones.get - %s - api call failed' % (e)) + + if len(zones) == 0: + exit('/zones.get - %s - zone not found' % (zone_name)) + + if len(zones) != 1: + exit('/zones.get - %s - api call returned %d items' % (zone_name, len(zones))) + + zone_id = zones[0]['id'] + + try: + dns_records = cf.zones.dns_records.export.get(zone_id) + except CloudFlare.exceptions.CloudFlareAPIError as e: + exit('/zones/dns_records/export %s - %d %s - api call failed' % (dns_name, e, e)) + + for l in dns_records.splitlines(): + if len(l) == 0 or l[0] == ';': + # blank line or comment line are skipped - to make example easy to see + continue + print l + + exit(0) + +if __name__ == '__main__': + main() +