|
4 | 4 | import json |
5 | 5 | import requests |
6 | 6 |
|
| 7 | +from .network import CFnetwork |
7 | 8 | from .logging_helper import CFlogger |
8 | 9 | from .utils import user_agent, sanitize_secrets |
9 | 10 | from .read_configs import read_configs |
@@ -41,7 +42,7 @@ def __init__(self, config): |
41 | 42 | self.raw = config['raw'] |
42 | 43 | self.use_sessions = config['use_sessions'] |
43 | 44 | self.profile = config['profile'] |
44 | | - self.session = None |
| 45 | + self.network = CFnetwork(use_sessions=self.use_sessions) |
45 | 46 | self.user_agent = user_agent() |
46 | 47 |
|
47 | 48 | if 'debug' in config and config['debug']: |
@@ -155,53 +156,7 @@ def call_with_certauth(self, method, parts, |
155 | 156 | identifier1, identifier2, identifier3, |
156 | 157 | params, data, files) |
157 | 158 |
|
158 | | - def _connection(self, method, url, headers=None, params=None, data=None, files=None): |
159 | | - """ Cloudflare v4 API""" |
160 | | - |
161 | | - if self.use_sessions: |
162 | | - if self.session is None: |
163 | | - self.session = requests.Session() |
164 | | - else: |
165 | | - self.session = requests |
166 | | - |
167 | | - method = method.upper() |
168 | | - |
169 | | - if method == 'GET': |
170 | | - return self.session.get(url, |
171 | | - headers=headers, params=params, data=data) |
172 | | - if method == 'POST': |
173 | | - if isinstance(data, str): |
174 | | - return self.session.post(url, |
175 | | - headers=headers, params=params, data=data, files=files) |
176 | | - else: |
177 | | - return self.session.post(url, |
178 | | - headers=headers, params=params, json=data, files=files) |
179 | | - if method == 'PUT': |
180 | | - if isinstance(data, str): |
181 | | - return self.session.put(url, |
182 | | - headers=headers, params=params, data=data) |
183 | | - else: |
184 | | - return self.session.put(url, |
185 | | - headers=headers, params=params, json=data) |
186 | | - if method == 'DELETE': |
187 | | - if isinstance(data, str): |
188 | | - return self.session.delete(url, |
189 | | - headers=headers, params=params, data=data) |
190 | | - else: |
191 | | - return self.session.delete(url, |
192 | | - headers=headers, params=params, json=data) |
193 | | - if method == 'PATCH': |
194 | | - if isinstance(data, str): |
195 | | - return self.session.request('PATCH', url, |
196 | | - headers=headers, params=params, data=data) |
197 | | - else: |
198 | | - return self.session.request('PATCH', url, |
199 | | - headers=headers, params=params, json=data) |
200 | | - |
201 | | - # should never happen |
202 | | - raise CloudFlareAPIError(0, 'method not supported') |
203 | | - |
204 | | - def _network(self, method, headers, parts, |
| 159 | + def _call_network(self, method, headers, parts, |
205 | 160 | identifier1=None, identifier2=None, identifier3=None, |
206 | 161 | params=None, data=None, files=None): |
207 | 162 | """ Cloudflare v4 API""" |
@@ -258,7 +213,7 @@ def _network(self, method, headers, parts, |
258 | 213 | try: |
259 | 214 | if self.logger: |
260 | 215 | self.logger.debug('Call: doit!') |
261 | | - response = self._connection(method, url, headers, params, data, files) |
| 216 | + response = self.network(method, url, headers, params, data, files) |
262 | 217 | if self.logger: |
263 | 218 | self.logger.debug('Call: done!') |
264 | 219 | except Exception as e: |
@@ -335,13 +290,13 @@ def _raw(self, method, headers, parts, |
335 | 290 | params=None, data=None, files=None): |
336 | 291 | """ Cloudflare v4 API""" |
337 | 292 |
|
338 | | - [response_type, response_code, response_data] = self._network(method, |
339 | | - headers, parts, |
340 | | - identifier1, |
341 | | - identifier2, |
342 | | - identifier3, |
343 | | - params, data, files) |
344 | | - |
| 293 | + [response_type, response_code, response_data] = self._call_network(method, |
| 294 | + headers, parts, |
| 295 | + identifier1, |
| 296 | + identifier2, |
| 297 | + identifier3, |
| 298 | + params, data, files) |
| 299 | + |
345 | 300 | if response_type == 'application/json': |
346 | 301 | # API says it's JSON; so it better be parsable as JSON |
347 | 302 | # NDJSON is returned by Enterprise Log Share i.e. /zones/:id/logs/received |
@@ -607,7 +562,7 @@ def _api_from_web(self): |
607 | 562 | try: |
608 | 563 | if self.logger: |
609 | 564 | self.logger.debug('Call: doit!') |
610 | | - response = self._connection("GET", url) |
| 565 | + response = self.network.do__connection("GET", url) |
611 | 566 | if self.logger: |
612 | 567 | self.logger.debug('Call: done!') |
613 | 568 | except Exception as e: |
|
0 commit comments