1515
1616BASE_URL = 'https://api.cloudflare.com/client/v4'
1717
18+ DEFAULT_GLOBAL_REQUEST_TIMEOUT = 5
19+ DEFAULT_MAX_REQUEST_RETRIES = 5
20+
1821class CloudFlare ():
1922 """ Cloudflare v4 API"""
2023
@@ -24,6 +27,7 @@ class _v4base():
2427 def __init__ (self , config ):
2528 """ Cloudflare v4 API"""
2629
30+ self .network = None
2731 self .config = config
2832
2933 self .api_email = config ['email' ] if 'email' in config else None
@@ -36,8 +40,16 @@ def __init__(self, config):
3640
3741 self .raw = config ['raw' ]
3842 self .use_sessions = config ['use_sessions' ]
39- self .global_request_timeout = config ['global_request_timeout' ] if 'global_request_timeout' in config else None
40- self .max_request_retries = config ['max_request_retries' ] if 'max_request_retries' in config else None
43+ self .global_request_timeout = config ['global_request_timeout' ] if 'global_request_timeout' in config else DEFAULT_GLOBAL_REQUEST_TIMEOUT
44+ self .max_request_retries = config ['max_request_retries' ] if 'max_request_retries' in config else DEFAULT_MAX_REQUEST_RETRIES
45+ try :
46+ self .global_request_timeout = int (self .global_request_timeout )
47+ except (TypeError , ValueError ):
48+ self .global_request_timeout = DEFAULT_GLOBAL_REQUEST_TIMEOUT
49+ try :
50+ self .max_request_retries = int (self .max_request_retries )
51+ except (TypeError , ValueError ):
52+ self .max_request_retries = DEFAULT_MAX_REQUEST_RETRIES
4153 self .profile = config ['profile' ]
4254 self .network = CFnetwork (
4355 use_sessions = self .use_sessions ,
@@ -245,7 +257,10 @@ def _call_network(self, method, headers, parts, identifiers, params, data, files
245257 response_data = response_data .decode ("utf-8" )
246258
247259 if self .logger :
248- self .logger .debug ('Response: %d, %s, %s' , response_code , response_type , response_data )
260+ if 'text/' == response_type [0 :5 ] or response_type in ['application/javascript' , 'application/json' ]:
261+ self .logger .debug ('Response: %d, %s, %s' , response_code , response_type , response_data [0 :100 ])
262+ else :
263+ self .logger .debug ('Response: %d, %s, %s' , response_code , response_type , '...' )
249264
250265 if response_code >= 500 and response_code <= 599 :
251266 # 500 Internal Server Error
@@ -421,6 +436,14 @@ def _raw(self, method, headers, parts, identifiers, params, data, files):
421436 'code' : response_code ,
422437 'result' : str (response_data )}
423438
439+ elif response_type [0 :6 ] in ['audio/' , 'image/' , 'video/' ]:
440+ # raw - just pass thru
441+ if response_code == requests_codes .ok :
442+ response_data = {'success' : True , 'result' : response_data }
443+ else :
444+ response_data = {'success' : False ,
445+ 'code' : response_code ,
446+ 'result' : response_data }
424447 else :
425448 # Assuming nothing - but continuing anyway
426449 # A single value is returned (vs an array or object)
@@ -531,7 +554,10 @@ def _call(self, method, headers, parts, identifiers, params, data, files):
531554 except :
532555 result = response_data
533556 if self .logger :
534- self .logger .debug ('Response: %s' , result )
557+ if isinstance (result , str ):
558+ self .logger .debug ('Response: %s' , result [0 :100 ])
559+ else :
560+ self .logger .debug ('Response: %s' , '...' )
535561 return result
536562
537563 def _call_unwrapped (self , method , headers , parts , identifiers , params , data , files ):
@@ -913,7 +939,7 @@ def api_from_openapi(self, url):
913939
914940 return api_decode_from_openapi (self ._base .api_from_openapi (url ))
915941
916- def __init__ (self , email = None , key = None , token = None , certtoken = None , debug = False , raw = False , use_sessions = True , profile = None , base_url = None , global_request_timeout = 5 , max_request_retries = 5 ):
942+ def __init__ (self , email = None , key = None , token = None , certtoken = None , debug = False , raw = False , use_sessions = True , profile = None , base_url = None , global_request_timeout = None , max_request_retries = None ):
917943 """ Cloudflare v4 API"""
918944
919945 self ._base = None
0 commit comments