99from .read_configs import read_configs
1010from .api_v4 import api_v4
1111from .api_extras import api_extras
12- #from .api_decode_from_web import api_decode_from_web # TODO - remove at some point
1312from .api_decode_from_openapi import api_decode_from_openapi
1413from .exceptions import CloudFlareError , CloudFlareAPIError , CloudFlareInternalError
1514
@@ -601,12 +600,29 @@ def _call_unwrapped(self, method, parts, identifiers, params, data_str, data_jso
601600 result = response_data
602601 return result
603602
604- def api_from_openapi (self , url = None ):
603+ def _api_from_openapi (self , url = None ):
605604 """ Cloudflare v4 API"""
606605
607606 if url is None :
608607 url = self .openapi_url
609- return self ._read_from_web (url )
608+
609+ try :
610+ v = self ._read_from_web (url )
611+ except Exception as e :
612+ if self .logger :
613+ self .logger .debug ('OpenAPI read from web failed: %s' , e )
614+ raise CloudFlareAPIError (0 , 'OpenAPI read from web failed: %s' % (e )) from None
615+
616+ try :
617+ v , openapi_version , cloudflare_version = api_decode_from_openapi (v )
618+ except SyntaxError as e :
619+ if self .logger :
620+ self .logger .debug ('OpenAPI bad json file: %s' , e )
621+ raise CloudFlareAPIError (0 , 'OpenAPI bad json file: %s' % (e )) from None
622+
623+ if self .logger :
624+ self .logger .debug ('OpenAPI version: %s, Cloudflare API version: %s' , openapi_version , cloudflare_version )
625+ return v
610626
611627 def _read_from_web (self , url ):
612628 """ Cloudflare v4 API"""
@@ -619,7 +635,7 @@ def _read_from_web(self, url):
619635 except Exception as e :
620636 if self .logger :
621637 self .logger .debug ('Call: exception! "%s"' , e )
622- raise CloudFlareAPIError (0 , 'connection failed.' )
638+ raise CloudFlareAPIError (0 , 'connection failed.' ) from None
623639
624640 return response .text
625641
@@ -851,16 +867,10 @@ def _api_list(self, m=None, s=''):
851867 w = w + self ._api_list (a , s + '/' + n )
852868 return w
853869
854- # TODO - remove at some point
855- #def api_from_web(self):
856- # """ Cloudflare v4 API"""
857- #
858- # return api_decode_from_web(self._base.api_from_web())
859-
860870 def api_from_openapi (self , url = None ):
861871 """ Cloudflare v4 API"""
862872
863- return api_decode_from_openapi ( self ._base .api_from_openapi (url ) )
873+ return self ._base ._api_from_openapi (url )
864874
865875 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 ):
866876 """ Cloudflare v4 API"""
0 commit comments