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

Commit 5f3a974

Browse files
committed
moved network functions into their own file - part of splitting up a large file
1 parent dd5e51f commit 5f3a974

2 files changed

Lines changed: 80 additions & 57 deletions

File tree

CloudFlare/cloudflare.py

Lines changed: 12 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import json
55
import requests
66

7+
from .network import CFnetwork
78
from .logging_helper import CFlogger
89
from .utils import user_agent, sanitize_secrets
910
from .read_configs import read_configs
@@ -41,7 +42,7 @@ def __init__(self, config):
4142
self.raw = config['raw']
4243
self.use_sessions = config['use_sessions']
4344
self.profile = config['profile']
44-
self.session = None
45+
self.network = CFnetwork(use_sessions=self.use_sessions)
4546
self.user_agent = user_agent()
4647

4748
if 'debug' in config and config['debug']:
@@ -155,53 +156,7 @@ def call_with_certauth(self, method, parts,
155156
identifier1, identifier2, identifier3,
156157
params, data, files)
157158

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,
205160
identifier1=None, identifier2=None, identifier3=None,
206161
params=None, data=None, files=None):
207162
""" Cloudflare v4 API"""
@@ -258,7 +213,7 @@ def _network(self, method, headers, parts,
258213
try:
259214
if self.logger:
260215
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)
262217
if self.logger:
263218
self.logger.debug('Call: done!')
264219
except Exception as e:
@@ -335,13 +290,13 @@ def _raw(self, method, headers, parts,
335290
params=None, data=None, files=None):
336291
""" Cloudflare v4 API"""
337292

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+
345300
if response_type == 'application/json':
346301
# API says it's JSON; so it better be parsable as JSON
347302
# NDJSON is returned by Enterprise Log Share i.e. /zones/:id/logs/received
@@ -607,7 +562,7 @@ def _api_from_web(self):
607562
try:
608563
if self.logger:
609564
self.logger.debug('Call: doit!')
610-
response = self._connection("GET", url)
565+
response = self.network.do__connection("GET", url)
611566
if self.logger:
612567
self.logger.debug('Call: done!')
613568
except Exception as e:

CloudFlare/network.py

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
""" Network for Cloudflare API"""
2+
from __future__ import absolute_import
3+
4+
import requests
5+
6+
from .exceptions import CloudFlareAPIError
7+
8+
class CFnetwork(object):
9+
""" Network for Cloudflare API"""
10+
11+
def __init__(self, use_sessions=True):
12+
""" Network for Cloudflare API"""
13+
14+
self.use_sessions = use_sessions
15+
self.session = None
16+
17+
def __call__(self, method, url, headers=None, params=None, data=None, files=None):
18+
""" Network for Cloudflare API"""
19+
20+
if self.use_sessions:
21+
if self.session is None:
22+
self.session = requests.Session()
23+
else:
24+
self.session = requests
25+
26+
method = method.upper()
27+
28+
if method == 'GET':
29+
return self.session.get(url,
30+
headers=headers, params=params, data=data)
31+
if method == 'POST':
32+
if isinstance(data, str):
33+
return self.session.post(url,
34+
headers=headers, params=params, data=data, files=files)
35+
else:
36+
return self.session.post(url,
37+
headers=headers, params=params, json=data, files=files)
38+
if method == 'PUT':
39+
if isinstance(data, str):
40+
return self.session.put(url,
41+
headers=headers, params=params, data=data)
42+
else:
43+
return self.session.put(url,
44+
headers=headers, params=params, json=data)
45+
if method == 'DELETE':
46+
if isinstance(data, str):
47+
return self.session.delete(url,
48+
headers=headers, params=params, data=data)
49+
else:
50+
return self.session.delete(url,
51+
headers=headers, params=params, json=data)
52+
if method == 'PATCH':
53+
if isinstance(data, str):
54+
return self.session.request('PATCH', url,
55+
headers=headers, params=params, data=data)
56+
else:
57+
return self.session.request('PATCH', url,
58+
headers=headers, params=params, json=data)
59+
60+
# should never happen
61+
raise CloudFlareAPIError(0, 'method not supported')
62+
63+
def __del__(self):
64+
""" Network for Cloudflare API"""
65+
66+
if self.use_sessions and self.session:
67+
self.session.close()
68+
self.session = None

0 commit comments

Comments
 (0)