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

Commit e85e277

Browse files
committed
Added support for two identifiers per command plus a third argument
1 parent 77f3218 commit e85e277

2 files changed

Lines changed: 36 additions & 23 deletions

File tree

CloudFlare/__init__.py

Lines changed: 29 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -26,23 +26,23 @@ def __init__(self, email, token, certtoken, base_url, debug):
2626
else:
2727
self.logger = None
2828

29-
def _call_with_no_auth(self, method, api_call_part1, api_call_part2=None, identifier1=None, identifier2=None, params=None, data=None):
29+
def _call_with_no_auth(self, method, api_call_part1, api_call_part2=None, api_call_part3=None, identifier1=None, identifier2=None, params=None, data=None):
3030
headers = {}
31-
return self._call(method, headers, api_call_part1, api_call_part2, identifier1, identifier2, params, data)
31+
return self._call(method, headers, api_call_part1, api_call_part2, api_call_part3, identifier1, identifier2, params, data)
3232

33-
def _call_with_auth(self, method, api_call_part1, api_call_part2=None, identifier1=None, identifier2=None, params=None, data=None):
33+
def _call_with_auth(self, method, api_call_part1, api_call_part2=None, api_call_part3=None, identifier1=None, identifier2=None, params=None, data=None):
3434
if self.EMAIL is '' or self.TOKEN is '':
3535
raise CloudFlareAPIError(0, 'no email and/or token defined')
3636
headers = { "X-Auth-Email": self.EMAIL, "X-Auth-Key": self.TOKEN, 'Content-Type': 'application/json' }
37-
return self._call(method, headers, api_call_part1, api_call_part2, identifier1, identifier2, params, data)
37+
return self._call(method, headers, api_call_part1, api_call_part2, api_call_part3, identifier1, identifier2, params, data)
3838

39-
def _call_with_certauth(self, method, api_call_part1, api_call_part2=None, identifier1=None, identifier2=None, params=None, data=None):
39+
def _call_with_certauth(self, method, api_call_part1, api_call_part2=None, api_call_part3=None, identifier1=None, identifier2=None, params=None, data=None):
4040
if self.CERTTOKEN is '':
4141
raise CloudFlareAPIError(0, 'no email and/or cert token defined')
4242
headers = { "X-Auth-User-Service-Key": self.CERTTOKEN, 'Content-Type': 'application/json' }
43-
return self._call(method, headers, api_call_part1, api_call_part2, identifier1, identifier2, params, data)
43+
return self._call(method, headers, api_call_part1, api_call_part2, api_call_part3, identifier1, identifier2, params, data)
4444

45-
def _call(self, method, headers, api_call_part1, api_call_part2=None, identifier1=None, identifier2=None, params=None, data=None):
45+
def _call(self, method, headers, api_call_part1, api_call_part2=None, api_call_part3=None, identifier1=None, identifier2=None, params=None, data=None):
4646
if api_call_part2 is not None or (data is not None and method == 'GET'):
4747
if identifier2 is None:
4848
url = self.BASE_URL + '/' + api_call_part1 + '/' + identifier1 + '/' + api_call_part2
@@ -53,9 +53,11 @@ def _call(self, method, headers, api_call_part1, api_call_part2=None, identifier
5353
url = self.BASE_URL + '/' + api_call_part1
5454
else:
5555
url = self.BASE_URL + '/' + api_call_part1 + '/' + identifier1
56+
if api_call_part3:
57+
url += '/' + api_call_part3
5658

5759
if self.logger:
58-
self.logger.debug("Call: %s,%s,%s,%s" % (str(api_call_part1), str(identifier1), str(api_call_part2), str(identifier2)))
60+
self.logger.debug("Call: %s,%s,%s,%s,%s" % (str(api_call_part1), str(identifier1), str(api_call_part2), str(identifier2), str(api_call_part3)))
5961
self.logger.debug("Call: optional params and data: %s %s" % (str(params), str(data)))
6062
self.logger.debug("Call: url is: %s" % (str(url)))
6163
self.logger.debug("Call: method is: %s" % (str(method)))
@@ -104,69 +106,73 @@ def _call(self, method, headers, api_call_part1, api_call_part2=None, identifier
104106
return response_data['result']
105107

106108
class _unused:
107-
def __init__(self, base, api_call_part1, api_call_part2=None):
109+
def __init__(self, base, api_call_part1, api_call_part2=None, api_call_part3=None):
108110
#if self.logger:
109111
# self.logger.debug("_unused %s,%s,%s" % (str(base), str(api_call_part1), str(api_call_part2)))
110112
self.base = base
111113
self.api_call_part1 = api_call_part1
112114
self.api_call_part2 = api_call_part2
115+
self.api_call_part3 = api_call_part3
113116

114117
class _client_noauth:
115-
def __init__(self, base, api_call_part1, api_call_part2=None):
118+
def __init__(self, base, api_call_part1, api_call_part2=None, api_call_part3=None):
116119
#if self.logger:
117120
# self.logger.debug("_client_noauth %s,%s,%s" % (str(base), str(api_call_part1), str(api_call_part2)))
118121
self.base = base
119122
self.api_call_part1 = api_call_part1
120123
self.api_call_part2 = api_call_part2
124+
self.api_call_part3 = api_call_part3
121125

122126
def get(self, identifier1=None, identifier2=None, params=None, data=None):
123-
return self.base._call_with_no_auth('GET', self.api_call_part1, self.api_call_part2, identifier1, identifier2, params, data)
127+
return self.base._call_with_no_auth('GET', self.api_call_part1, self.api_call_part2, self.api_call_part3, identifier1, identifier2, params, data)
124128

125129
class _client_with_auth:
126-
def __init__(self, base, api_call_part1, api_call_part2=None):
130+
def __init__(self, base, api_call_part1, api_call_part2=None, api_call_part3=None):
127131
#if self.logger:
128132
# self.logger.debug("_client_with_auth %s,%s,%s" % (str(base), str(api_call_part1), str(api_call_part2)))
129133
self.base = base
130134
self.api_call_part1 = api_call_part1
131135
self.api_call_part2 = api_call_part2
136+
self.api_call_part3 = api_call_part3
132137

133138
def get(self, identifier1=None, identifier2=None, params=None, data=None):
134-
return self.base._call_with_auth('GET', self.api_call_part1, self.api_call_part2, identifier1, identifier2, params, data)
139+
return self.base._call_with_auth('GET', self.api_call_part1, self.api_call_part2, self.api_call_part3, identifier1, identifier2, params, data)
135140

136141
def patch(self, identifier1=None, identifier2=None, params=None, data=None):
137-
return self.base._call_with_auth('PATCH', self.api_call_part1, self.api_call_part2, identifier1, identifier2, params, data)
142+
return self.base._call_with_auth('PATCH', self.api_call_part1, self.api_call_part2, self.api_call_part3, identifier1, identifier2, params, data)
138143

139144
def post(self, identifier1=None, identifier2=None, params=None, data=None):
140-
return self.base._call_with_auth('POST', self.api_call_part1, self.api_call_part2, identifier1, identifier2, params, data)
145+
return self.base._call_with_auth('POST', self.api_call_part1, self.api_call_part2, self.api_call_part3, identifier1, identifier2, params, data)
141146

142147
def put(self, identifier1=None, identifier2=None, params=None, data=None):
143-
return self.base._call_with_auth('PUT', self.api_call_part1, self.api_call_part2, identifier1, identifier2, params, data)
148+
return self.base._call_with_auth('PUT', self.api_call_part1, self.api_call_part2, self.api_call_part3, identifier1, identifier2, params, data)
144149

145150
def delete(self, identifier1=None, identifier2=None, params=None, data=None):
146-
return self.base._call_with_auth('DELETE', self.api_call_part1, self.api_call_part2, identifier1, identifier2, params, data)
151+
return self.base._call_with_auth('DELETE', self.api_call_part1, self.api_call_part2, self.api_call_part3, identifier1, identifier2, params, data)
147152

148153
class _client_with_cert_auth:
149-
def __init__(self, base, api_call_part1, api_call_part2=None):
154+
def __init__(self, base, api_call_part1, api_call_part2=None, api_call_part3=None):
150155
#if self.logger:
151156
# self.logger.debug("_client_with_cert_auth %s,%s,%s" % (str(base), str(api_call_part1), str(api_call_part2)))
152157
self.base = base
153158
self.api_call_part1 = api_call_part1
154159
self.api_call_part2 = api_call_part2
160+
self.api_call_part3 = api_call_part3
155161

156162
def get(self, identifier1=None, identifier2=None, params=None, data=None):
157-
return self.base._call_with_certauth('GET', self.api_call_part1, self.api_call_part2, identifier1, identifier2, params, data)
163+
return self.base._call_with_certauth('GET', self.api_call_part1, self.api_call_part2, self.api_call_part3, identifier1, identifier2, params, data)
158164

159165
def patch(self, identifier1=None, identifier2=None, params=None, data=None):
160-
return self.base._call_with_certauth('PATCH', self.api_call_part1, self.api_call_part2, identifier1, identifier2, params, data)
166+
return self.base._call_with_certauth('PATCH', self.api_call_part1, self.api_call_part2, self.api_call_part3, identifier1, identifier2, params, data)
161167

162168
def post(self, identifier1=None, identifier2=None, params=None, data=None):
163-
return self.base._call_with_certauth('POST', self.api_call_part1, self.api_call_part2, identifier1, identifier2, params, data)
169+
return self.base._call_with_certauth('POST', self.api_call_part1, self.api_call_part2, self.api_call_part3, identifier1, identifier2, params, data)
164170

165171
def put(self, identifier1=None, identifier2=None, params=None, data=None):
166-
return self.base._call_with_certauth('PUT', self.api_call_part1, self.api_call_part2, identifier1, identifier2, params, data)
172+
return self.base._call_with_certauth('PUT', self.api_call_part1, self.api_call_part2, self.api_call_part3, identifier1, identifier2, params, data)
167173

168174
def delete(self, identifier1=None, identifier2=None, params=None, data=None):
169-
return self.base._call_with_certauth('DELETE', self.api_call_part1, self.api_call_part2, identifier1, identifier2, params, data)
175+
return self.base._call_with_certauth('DELETE', self.api_call_part1, self.api_call_part2, self.api_call_part3, identifier1, identifier2, params, data)
170176

171177
def __init__(self, email=None, token=None, certtoken=None, debug=False):
172178
base_url = BASE_URL

CloudFlare/api_v4.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@ def api_v4(self):
3535
setattr(zones, "pagerules", self._client_with_auth(self.base, "zones", "pagerules"))
3636
setattr(zones, "purge_cache", self._client_with_auth(self.base, "zones", "purge_cache"))
3737
setattr(zones, "railguns", self._client_with_auth(self.base, "zones", "railguns"))
38+
zones_railguns = getattr(zones, "railguns")
39+
setattr(zones_railguns, "diagnose", self._client_with_auth(self.base, "zones", "railguns", "diagnose"))
3840
setattr(zones, "settings", self._client_with_auth(self.base, "zones", "settings"))
3941
zones_settings = getattr(zones, "settings")
4042
setattr(zones_settings, "advanced_ddos", self._client_with_auth(self.base, "zones", "settings/advanced_ddos"))
@@ -75,6 +77,9 @@ def api_v4(self):
7577
setattr(zones_firewall, "waf", self._unused(self.base, "zones", "firewall/waf"))
7678
zones_firewall_waf = getattr(zones_firewall, "waf")
7779
setattr(zones_firewall_waf, "packages", self._client_with_auth(self.base, "zones", "firewall/waf/packages"))
80+
zones_firewall_waf_packages = getattr(zones_firewall_waf, "packages")
81+
setattr(zones_firewall_waf_packages, "groups", self._client_with_auth(self.base, "zones", "firewall/waf/packages", "groups"))
82+
setattr(zones_firewall_waf_packages, "rules", self._client_with_auth(self.base, "zones", "firewall/waf/packages", "rules"))
7883
zones_firewall_access_rules = getattr(zones_firewall, "access_rules")
7984
setattr(zones_firewall_access_rules, "rules", self._client_with_auth(self.base, "zones", "firewall/access_rules/rules"))
8085

@@ -90,6 +95,8 @@ def api_v4(self):
9095
setattr(organizations, "invite", self._client_with_auth(self.base, "organizations", "invite"))
9196
setattr(organizations, "invites", self._client_with_auth(self.base, "organizations", "invites"))
9297
setattr(organizations, "railguns", self._client_with_auth(self.base, "organizations", "railguns"))
98+
organizations_railguns = getattr(organizations, "railguns")
99+
setattr(organizations_railguns, "zones", self._client_with_auth(self.base, "organizations", "railguns", "zones"))
93100
setattr(organizations, "roles", self._client_with_auth(self.base, "organizations", "roles"))
94101
setattr(organizations, "firewall", self._unused(self.base, "organizations", "firewall"))
95102
organizations_firewall = getattr(organizations, "firewall")

0 commit comments

Comments
 (0)