Skip to content
This repository was archived by the owner on Nov 22, 2024. It is now read-only.

Commit 9b895b1

Browse files
committed
actually make methods slightly more dynamic
1 parent 4a6acab commit 9b895b1

7 files changed

Lines changed: 74 additions & 95 deletions

File tree

cloudflare_v4/__init__.py

Lines changed: 64 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,69 @@
11
# all the exceptions
22
from exceptions import CloudFlareError, CloudFlareAPIError
3+
from . import util
4+
from . import CloudFlareError, CloudFlareAPIError
5+
from . import logger
36

4-
from construct import CloudFlare
7+
import json
8+
import requests
59

6-
# depends on exceptions
7-
from util import call
810

9-
__all__ = [ 'CloudFlareError', 'CloudFlareAPIError',
10-
'zones', 'user',
11-
'util' ]
11+
BASE_URL = 'https://api.cloudflare.com/client/v4'
12+
13+
class CloudFlare(object):
14+
class BaseClient:
15+
def __init__(self, email, token, debug):
16+
self.EMAIL = email
17+
self.TOKEN = token
18+
self.logger = logger.Logger(debug).getLogger()
19+
20+
def call(self, method, endpoint, params=None):
21+
headers = { "X-Auth-Email": self.EMAIL, "X-Auth-Key": self.TOKEN }
22+
url = BASE_URL + '/' + endpoint
23+
method = method.upper()
24+
self.logger.debug("EMAIL is: " + str(self.EMAIL))
25+
self.logger.debug("TOKEN is: " + str(self.TOKEN))
26+
self.logger.debug("method type is: " + method)
27+
self.logger.debug("url endpoint is: " + url)
28+
self.logger.debug("optional params is: " + str(params))
29+
if (method is None) or (endpoint is None):
30+
raise CloudFlareError('You must specify a method and endpoint')
31+
else:
32+
if method == 'GET':
33+
self.logger.debug("headers being sent: " + str(headers))
34+
response = requests.get(url, headers=headers, params=params)
35+
elif method == 'POST':
36+
headers['Content-Type'] = 'application/json'
37+
self.logger.debug("headers being sent: " + str(headers))
38+
response = requests.post(url, headers=headers, json=params)
39+
elif method == 'DELETE':
40+
self.logger.debug("headers being sent: " + str(headers))
41+
response = requests.delete(url, headers=headers, json=params)
42+
data = response.text
43+
self.logger.debug("data received: " + data)
44+
try:
45+
data = json.loads(data)
46+
return data
47+
except ValueError:
48+
raise CloudFlareAPIError('JSON parse failed.')
49+
if data['result'] == 'error':
50+
raise CloudFlareAPIError(data['msg'])
51+
52+
class DynamicClient:
53+
def __init__(self, base_client, url_type):
54+
self.base_client = base_client
55+
self.url_type = url_type
56+
57+
def get(self, params=None):
58+
return self.base_client.call('GET', self.url_type, params)
59+
60+
def post(self, params=None):
61+
return self.base_client.call('POST', self.url_type, params)
62+
63+
def delete(self, params=None):
64+
return self.base_client.call('DELETE', self.url_type, params)
65+
66+
def __init__(self, email, token, debug):
67+
self.base_client = self.BaseClient(email, token, debug)
68+
setattr(self, "zones", self.DynamicClient(self.base_client, "zones"))
69+
setattr(self, "user", self.DynamicClient(self.base_client, "user"))

cloudflare_v4/construct.py

Lines changed: 0 additions & 7 deletions
This file was deleted.

cloudflare_v4/logger.py

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,21 @@
55

66
class Logger:
77
def __init__(self, level):
8-
self.logger_level = self.get_level(level)
8+
self.logger_level = self._get_logging_level(level)
9+
10+
# logging.basicConfig(level=self.logger_level)
11+
12+
request_logger = logging.getLogger("requests.packages.urllib3")
13+
request_logger.setLevel(self.logger_level)
14+
request_logger.propagate = level
915

1016
def getLogger(self):
1117
# create logger
1218
logger = logging.getLogger('Python CloudFlare API v4')
1319
logger.setLevel(self.logger_level)
1420

15-
# create console handler and set level to debug
1621
ch = logging.StreamHandler()
17-
ch.setLevel(logging.DEBUG)
22+
ch.setLevel(self.logger_level)
1823

1924
# create formatter
2025
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
@@ -27,8 +32,8 @@ def getLogger(self):
2732

2833
return logger
2934

30-
def get_level(self, level):
31-
if level == 0:
35+
def _get_logging_level(self, level):
36+
if level == True:
3237
return logging.DEBUG
3338
else:
3439
return logging.INFO

cloudflare_v4/user/__init__.py

Lines changed: 0 additions & 6 deletions
This file was deleted.

cloudflare_v4/util.py

Lines changed: 0 additions & 46 deletions
This file was deleted.

cloudflare_v4/zones/__init__.py

Lines changed: 0 additions & 13 deletions
This file was deleted.

cloudflare_v4/zones/dns_records.py

Lines changed: 0 additions & 12 deletions
This file was deleted.

0 commit comments

Comments
 (0)