From c933789bac0a14765399f99292b5b7ced7dfca4e Mon Sep 17 00:00:00 2001 From: Felix Wong Date: Mon, 26 Jan 2015 08:42:08 +0000 Subject: [PATCH] initial code commit --- cloudflare_v4/__init__.py | 12 ++++++++++++ cloudflare_v4/construct.py | 5 +++++ cloudflare_v4/exceptions.py | 8 ++++++++ cloudflare_v4/user/__init__.py | 6 ++++++ cloudflare_v4/util.py | 20 ++++++++++++++++++++ cloudflare_v4/zones/__init__.py | 6 ++++++ setup.py | 13 +++++++++++++ 7 files changed, 70 insertions(+) create mode 100644 cloudflare_v4/__init__.py create mode 100644 cloudflare_v4/construct.py create mode 100644 cloudflare_v4/exceptions.py create mode 100644 cloudflare_v4/user/__init__.py create mode 100644 cloudflare_v4/util.py create mode 100644 cloudflare_v4/zones/__init__.py create mode 100755 setup.py diff --git a/cloudflare_v4/__init__.py b/cloudflare_v4/__init__.py new file mode 100644 index 0000000..9a981a5 --- /dev/null +++ b/cloudflare_v4/__init__.py @@ -0,0 +1,12 @@ +from exceptions import CloudFlareError, CloudFlareAPIError + +from construct import CloudFlare + +# depends on exceptions +from util import call + +# depends on util +from zones import get +from user import get + +__all__ = [ 'CloudFlareError', 'CloudFlareAPIError' ] diff --git a/cloudflare_v4/construct.py b/cloudflare_v4/construct.py new file mode 100644 index 0000000..4c81526 --- /dev/null +++ b/cloudflare_v4/construct.py @@ -0,0 +1,5 @@ +from . import zones +class CloudFlare(object): + def __init__(self, email, token): + self.EMAIL = email + self.TOKEN = token diff --git a/cloudflare_v4/exceptions.py b/cloudflare_v4/exceptions.py new file mode 100644 index 0000000..794e2ce --- /dev/null +++ b/cloudflare_v4/exceptions.py @@ -0,0 +1,8 @@ +class CloudFlareError(Exception): + def __init__(self, value): + self.value = value + def __str__(self): + return self.value + +class CloudFlareAPIError(CloudFlareError): + pass diff --git a/cloudflare_v4/user/__init__.py b/cloudflare_v4/user/__init__.py new file mode 100644 index 0000000..c65d094 --- /dev/null +++ b/cloudflare_v4/user/__init__.py @@ -0,0 +1,6 @@ +from .. import util + +ENDPOINT = 'user' + +def get(auth, params=None): + return util.call(auth, 'GET', ENDPOINT, params) diff --git a/cloudflare_v4/util.py b/cloudflare_v4/util.py new file mode 100644 index 0000000..05ecce0 --- /dev/null +++ b/cloudflare_v4/util.py @@ -0,0 +1,20 @@ +from . import CloudFlareError, CloudFlareAPIError + +import json +import requests + +def call(auth, method, endpoint, params=None): + response = requests.request(method, + 'https://api.cloudflare.com/client/v4/' + endpoint, + headers={ "X-Auth-Email": auth['EMAIL'], + "X-Auth-Key": auth['TOKEN'] }, + params=params + ) + data = response.text + try: + data = json.loads(data) + return data + except ValueError: + raise CloudFlareAPIError('JSON parse failed.') + if data['result'] == 'error': + raise CloudFlareAPIError(data['msg']) diff --git a/cloudflare_v4/zones/__init__.py b/cloudflare_v4/zones/__init__.py new file mode 100644 index 0000000..2844a72 --- /dev/null +++ b/cloudflare_v4/zones/__init__.py @@ -0,0 +1,6 @@ +from .. import util + +ENDPOINT = 'zones' + +def get(auth, params=None): + return util.call(auth, 'GET', ENDPOINT, params) diff --git a/setup.py b/setup.py new file mode 100755 index 0000000..e8b1390 --- /dev/null +++ b/setup.py @@ -0,0 +1,13 @@ +from setuptools import setup, find_packages + +setup( + name='python-cloudflare-v4', + version='1.0', + description='Python wrapper for the CloudFlare v4 API', + author='gnowxilef', + author_email='felix@fawong.com', + url='http://github.com/python-cloudflare/python-cloudflare-v4', + packages=find_packages() + ) + +package_dir = {'cloudflare_v4': 'lib'}