Your IP : 216.73.216.86


Current Path : /lib/python3.6/site-packages/CloudFlare/__pycache__/
Upload File :
Current File : //lib/python3.6/site-packages/CloudFlare/__pycache__/cloudflare.cpython-36.opt-1.pyc

3

O�/f_��@s�dZddlZddlZddlmZmZddlmZddlm	Z	m
Z
ddlmZmZddl
m
Z
dd	lmZdd
lmZddlmZmZdZd
ZdZdZGdd�d�ZGdd�de�ZGdd�de�ZdS)z� Cloudflare v4 API

A Python interface Cloudflare's v4 API.

See README.md for detailed/further reading.

Copyright (c) 2016 thru 2024, Cloudflare. All rights reserved.
�N�)�	CFnetwork�CFnetworkError)�CFlogger)�
user_agent�
build_curl)�read_configs�ReadConfigError)�api_v4)�
api_extras)�api_decode_from_openapi)�CloudFlareAPIError�CloudFlareInternalErrorz$https://api.cloudflare.com/client/v4z?https://github.com/cloudflare/api-schemas/raw/main/openapi.json�c@seZdZdZGdd�d�ZGdd�d�ZGdd�de�ZGdd	�d	e�ZGd
d�de�ZGdd
�d
e�Z	Gdd�de�Z
edd��Zdd�dd�Z
ddd�dd�Zdd�Zdd�Zd4dd �Zd5d!d"�Zd6d$d%�Zd&d'�Zd(d)�Zd*d+�Zd,d-�Zd.d/�Zd0d1�Zd2d3�ZdS)7�
CloudFlarea� A Python interface Cloudflare's v4 API.

    :param email: Authentication email (if not provided by config methods).
    :param key: Authentication key (if not provided by config methods).
    :param token: Authentication token (if not provided by config methods).
    :param certtoken: Authentication certtoken (if not provided by config methods).
    :param debug: Debug is enabled by setting to True.
    :param raw: Set to True to force raw responses so you can see paging.
    :param use_sessions: The default is True; rarely needs changing.
    :param profile: Profile name (default is "CloudFlare").
    :param base_url: Rarely changed Cloudflare API URL.
    :param global_request_timeout: Timeout value (default is 5 seconds).
    :param max_request_retries: Number of retry times (default is 5 times).
    :param http_headers: Additional HTTP headers (as a list).
    :return: New instance of CloudFlare()

    A Python interface Cloudflare's v4 API.
    c@s�eZdZdZdd�Zdd�Zd#dd�Zd	d
�Zdd�Zd$d
d�Z	d%dd�Z
d&dd�Zd'dd�Zd(dd�Z
dd�Zdd�Zdd�Zdd�Zd)dd �Zd!d"�ZdS)*zCloudFlare._v4basez :meta private: cCs�d|_||_d|kr|dnd|_d|kr2|dnd|_d|krH|dnd|_d|kr^|dnd|_d|krt|dnt|_d|kr�|dnt|_	|d|_
|d	|_d
|kr�|d
nt|_
d|kr�|dnt|_yt|j
�|_
Wnttfk
r�t|_
YnXyt|j�|_Wn ttfk
�r0t|_YnXd|k�rD|dnd|_|d
|_t|j|j
|jd�|_t�|_d|k�r�|d�r�t|d�j�nd|_dS)z :meta private: N�email�key�token�	certtoken�base_url�openapi_url�raw�use_sessions�global_request_timeout�max_request_retries�http_headers�profile)rrr�debug)�network�config�	api_email�api_key�	api_token�
api_certtoken�BASE_URLr�OPENAPI_URLrrr�DEFAULT_GLOBAL_REQUEST_TIMEOUTr�DEFAULT_MAX_REQUEST_RETRIESr�int�	TypeError�
ValueError�additional_http_headersrrrrZ	getLogger�logger)�selfr�r.� /usr/lib/python3.6/cloudflare.py�__init__3s8


zCloudFlare._v4base.__init__cCs|jr|`d|_dS)N)r)r-r.r.r/�__del__[szCloudFlare._v4base.__del__NcCs�i|_|j|jd<|dkr&d|jd<n�|dk	r�||kr�||}t|t�r�d}xz|D]r}d|kr|t|ttf�r|||jd<d}Pd|kr�t|ttf�r�||jd<d}Pd	|krRt|t�rR||jd<d}PqRW|s�|d
|jd<q�||jd<n
d|jd<|dk�rV|jddk�r"t|t��r"d	|jd<|jddk�rLt|ttf��rLd|jd<|�r�t|�d
k�r�|jddk�r�|dk�r�t	�}xT|j
�D]H\}}	t|	ttf��r�|j|dtj
|	�dff�n|j|d|	ff��q�Wd}|dk	�r�t|�d
k�r�d}|dk	�rt|�d
k�rd}|dk�r>|dk�r>|jddk�r>|jd=|�rVd|jd<|jd=|j�r�x�|jD]�}
|
jdd
�\}}	|j�}|	j�}	t|	�d
k�r�|	d
dk�r�|	ddk�s�|	d
dk�r�|	ddk�r�|	d
d�}	|	|j|<�qfW||fS)z Add default headers z
User-Agent�GETzapplication/jsonzContent-TypeNFzapplication/octet-streamTzapplication/javascriptrzmultipart/form-data�:r�"�'���r6r6)�headersr�
isinstance�list�bytes�	bytearray�dict�str�len�set�items�add�json�dumpsr+�split�strip)r-�method�data�files�content_typeZct�found�t�k�v�hr.r.r/�_add_headers`sp







 
$
$
FzCloudFlare._v4base._add_headerscCs�d|j�}||jkr |j|n|j}d|j�}||jkrF|j|n|j}d|j�}||jkrl|j|n|j}|dkr�|dkr�|dkr�|jr�|jjd�tdd��|dk	r�|dk	r�|jr�|jjd�tdd��|dk	o�|dko�|dk�r
|j�r|jjd	�tdd	��|dk�r.|dk	�r.d
||jd<n�|dk�rR|dk	�rRd
||jd<n^|dk	�r||dk	�r|||jd<||jd
<n4|dk	�r�|dk	�r�||jd<||jd
<n
t	dd��dS)z Add authentication headers r�.rrNz"neither email/key or token definedrz*confused info - both key and token definedz2email defined however neither key or token definedz	Bearer %sZ
AuthorizationzX-Auth-Emailz
X-Auth-Keyz
coding issue!zemail.zkey.ztoken.)
�lowerrr r!r"r,rr
r7r)r-rFrMr r!r"r.r.r/�_add_auth_headers�s:




z$CloudFlare._v4base._add_auth_headerscCsZd|j�}||jkr"|j|}n|j}|dkrL|jrB|jjd�tdd��||jd<dS)z Add authentication headers rrPNzno cert token definedrzX-Auth-User-Service-Keyz
certtoken.)rQrr#r,rr
r7)r-rFrMr#r.r.r/�_add_certtoken_headers�s

z)CloudFlare._v4base._add_certtoken_headerscCs |jr|jjd�tdd��dS)z Cloudflare v4 APIz"call for this method not availablerN)r,rr
)r-rF�parts�identifiers�paramsrGrHrIr.r.r/�do_not_available�sz#CloudFlare._v4base.do_not_availablecCsP|j||||�\}}t|tttf�r:|j|||||d|�S|j||||d||�S)z Cloudflare v4 APIN)rOr8r=r:r;�_call)r-rFrTrUrVrGrHrIr.r.r/�
do_no_auth�szCloudFlare._v4base.do_no_authcCsZ|j||||�\}}|j|�t|tttf�rD|j|||||d|�S|j||||d||�S)z Cloudflare v4 APIN)rOrRr8r=r:r;rX)r-rFrTrUrVrGrHrIr.r.r/�do_auth�s

zCloudFlare._v4base.do_authcCsZ|j||||�\}}|j|�t|tttf�rD|j|||||d|�S|j||||d||�S)z Cloudflare v4 APIN)rOrRr8r=r:r;�_call_unwrapped)r-rFrTrUrVrGrHrIr.r.r/�do_auth_unwrappeds

z$CloudFlare._v4base.do_auth_unwrappedcCsZ|j||||�\}}|j|�t|tttf�rD|j|||||d|�S|j||||d||�S)z Cloudflare v4 APIN)rOrSr8r=r:r;rX)r-rFrTrUrVrGrHrIr.r.r/�do_certauth
s

zCloudFlare._v4base.do_certauthc	2Cs�|dks|ddkrtdd��t|�dkr6|ddk	sF|dk	r�|dkr�|ddkr\tdd��|ddkr�|jd|ddt|d�d|d}	n>|jd|ddt|d�d|ddt|d�}	nB|ddkr�|jd|d}	n"|jd|ddt|d�}	t|�dk�r�|d�r�|	d|d7}	|d�r`|	dt|d�7}	t|�d	k�r�|d	�r�|	d|d	7}	|d	�r�|	dt|d	�7}	t|�d
k�r�|d
�r�|	d|d
7}	|j�r�t||	|||||�}
|jjd|
�y|j||	|||||�}Wn�t	k
�r\}z,|j�r<|jjd|�tdt|��d�WYdd}~XnJt
k
�r�}z,|j�r�|jjd
|�tdd|�d�WYdd}~XnXy6|jd}
d|
k�r�|
d|
jd��}
|
j
�j�}
Wntk
�r�d}
YnX|j}|j}t|tttf��s<y|jd�}Wntk
�r:YnX|j�r�d|
dd�k�s`|
d*k�r�t|�dk�r�|jjd||
|dd��n|jjd||
|�n|jjd||
d�|dk�r�y|jd}Wnttfk
�r�d}YnX|j�r�|jjd|�d|k�od kn�s$|d!k�r�yltj|�}t|�dk�rtd"|k�rtd#|k�rtd$|d"|d#f}|j�}d%}nd&|k�r�d'|k�r�d%}nWnttjjfk
�r�YnXd!|k�o�d(kn�r�|j�tdd)��|
||gS)+z Cloudflare v4 APINrz&You must specify a method and endpointrr2z!You must specify first identifier�/���z"Call: emulated curl command ...
%szCall: network error: %szCall: network exception! %sznetwork exception: %szContent-Type�;zapplication/octet-streamzutf-8ztext/r�application/javascript�application/json�zResponse: %d, %s, %s...zResponse: %d, %s, %sz...i�zRetry-After�z$Response: 429 Header Retry-After: %si�i�i��code�errorzM{"errors": [{"code": %d, "message": "%s"}], "success": false, "result": null}���success�errorsiWz(internal error in status code processing)rcrd)rr>r
rr=r,rrrr�	Exceptionr7�rfindrErQ�KeyErrorZstatus_codeZcontentr8r:r;�decode�UnicodeDecodeError�
IndexErrorrB�loads�encoder*�decoder�JSONDecodeErrorZraise_for_status)r-rFr7rTrUrV�data_str�	data_jsonrH�url�msg�response�e�
response_type�
response_code�
response_dataZretry_after�jr.r.r/�
_call_networks�
(
0@"

 "




&
"
z CloudFlare._v4base._call_networkc	9Cs|j||||||||�\}	}
}|
d"krFd|
d|
d�gt|�d�}|S|	d	k�rft|d
�r�y|jd�}Wn,tk
r�|jr�|jjd�d
|d�SXy|dkr�d}n
tj|�}Wn�t	tj
jfk
�r@y.g}x |j�D]}
|j
tj|
��q�W|}Wn@t	tj
jfk
�r:|j�r*|jjd|�tdd�d�YnXYnXt|t��r\d|k�r\|Sd
|d�S|	d#k�rt|d
��r�y|jd�}Wn0tk
�r�|j�r�|jjd�d
|d�SXy|dk�r�d}n
tj|�}Wnt	tj
jfk
�r�YnXt|t��rd|k�r|Sd
|d�S|	d$k�r�t|d
��rty|jd�}Wn0tk
�rr|j�rh|jjd�d
|d�SXd
t|�d�S|	d%k�s�|	dd�d&k�r�d
|d�St|d
��r�y|jd�}Wn0tk
�r�|j�r�|jjd�d
|d�SXd
t|�d�S)'z Cloudflare v4 APIri������FzHTTP response code %d)rg�message)rjrk�resultzapplication/jsonrozutf-8z<Response: decode(utf-8) failed, reverting to binary responseT)rjr�rfNzResponse data not JSON: %rrz)JSON parse failed - report to Cloudflare.rj�
text/plain�application/octet-stream�text/javascript�application/javascript�	text/html�text/css�text/csv�application/pdf�application/zip��audio/�image/�video/)rir�r�r�)r�r�)r�r�r�r�r�)r�r�)r�r�r�)r�r=�hasattrrorpr,rrBrrr*rtru�
splitlines�appendr
r8r<)r-rFr7rTrUrVrvrwrHr|r}r~�r�liner.r.r/�_raw�s�







zCloudFlare._v4base._rawc%Cs�|j||j||||||�}d|k�r�d|k�r&|ddkrV|jrL|jjd�d|d<n�|jrh|jjd�y|ddd}	Wntk
r�d	}	YnXyt|ddd
�}
Wntk
r�d	}
YnXydj|ddd�}Wntk
r�d	}YnXd
|	d|
d|d�g|d<d|d<n^d|k�rh|j�rD|jjd�|}g|d<|dj|�d|d<n|j�r||jjd�d|d<|ddk�r�d|k�r�|ddk	�r�|dd}
ni}
d|
k�r�|
d}nd}d|
k�r�|
d}	nd|
k�r�|
d}	nd	}	d|
k�rf|
d}x.|D]&}|j�r|jjd|d|d��qW|j�rZ|jjd||	�t||	|��|j�r~|jjd||	�t||	��|j	�r�i}y|d|d<Wntk
�r�||d<YnXd|k�r|d|d<n(y|d}Wntk
�r|}YnX|j�r�t
|tttf��rpt
t|��dk�rT|jjdt|�dd�jdd��n|jjdt|�jdd��n6t
|ttf��r�|jjd|dd��n|jjdd�|S)z Cloudflare v4 APIrjrkNz#Response: assuming success = "True"Tz$Response: assuming success = "False"rr�rf�location�>�pathi��z - )rgr�Fr�rgi��rh�error_chainzResponse: error %d %s - chainzResponse: error %d %sZresult_inforezResponse: %s...�
� zResponse: %sz...)r�r7r,rrnr=�joinr�r
rr8r<r9r>�replacer:r;)r-rFrTrUrVrvrwrHr~r�r�r�r�rkrgr�rhr�r.r.r/rX&s�





 













$zCloudFlare._v4base._callc
	Cs6|j||j||||||�}|jr.|jjd|�|}	|	S)z Cloudflare v4 APIzResponse: %s)r�r7r,r)
r-rFrTrUrVrvrwrHr~r�r.r.r/r[�s
z"CloudFlare._v4base._call_unwrappedc!Cs�|dkr|j}y|j|�}WnFtk
rb}z*|jrB|jjd|�tdd|�d�WYdd}~XnXyt|�\}}}}WnFtk
r�}z*|jr�|jjd|�tdd|�d�WYdd}~XnX|jr�|jjd|||�|S)z Cloudflare v4 APINz OpenAPI read from web failed: %srzOpenAPI bad json file: %sz7OpenAPI version: %s, Cloudflare API version: %s url: %s)r�_read_from_webrlr,rr
r�SyntaxError)r-rxrMr{Zopenapi_versionZcloudflare_versionZcloudflare_urlr.r.r/�api_from_openapi�s"""z#CloudFlare._v4base.api_from_openapicCs~y4|jr|jjd�|jd|�}|jr2|jjd�WnBtk
rv}z&|jrZ|jjd|�tdd�d�WYdd}~XnX|jS)z Cloudflare v4 APIzCall: doit!r2zCall: done!zCall: exception! "%s"rzconnection failed.N)r,rrrlr
�text)r-rxrzr{r.r.r/r��sz!CloudFlare._v4base._read_from_web)N)NNNN)NNNN)NNNN)NNNN)NNNN)N)�__name__�
__module__�__qualname__�__doc__r0r1rOrRrSrWrYrZr\r]r�r�rXr[r�r�r.r.r.r/�_v4base0s$(
M,

	





$lm	
r�c@sfeZdZdZddd�Zddd�Zdd�Zd	d
�Zddd�Zdd
d�Z	ddd�Z
ddd�Zddd�ZdS)zCloudFlare._CFbasez :meta private: NcCs$||_||_|r||_|jj|_dS)z Cloudflare v4 APIN)�_base�_parts�
_content_typerW�_do)r-�baserTrIr.r.r/r0�s
zCloudFlare._CFbase.__init__cCs|j||||||d�S)z Cloudflare v4 API)rVrG)�get)r-�identifier1�identifier2�identifier3�identifier4rVrGr.r.r/�__call__�szCloudFlare._CFbase.__call__cCsddj|j�dS)z Cloudflare v4 API�[r^z/:id/�]z[/)r�r�)r-r.r.r/�__str__�szCloudFlare._CFbase.__str__cCsddj|j�dS)z Cloudflare v4 APIr�r^z/:id/r�z[/)r�r�)r-r.r.r/�__repr__�szCloudFlare._CFbase.__repr__cCs|yHt|dd�r.|jd|j||||g|||j�S|jd|j||||g||�Stk
rv}zt|d�d�WYdd}~XnXdS)z Cloudflare v4 APIr�Fr2)r{N)�getattrr�r�r�r
)r-r�r�r�r�rVrGr{r.r.r/r��s zCloudFlare._CFbase.getcCs|yHt|dd�r.|jd|j||||g|||j�S|jd|j||||g||�Stk
rv}zt|d�d�WYdd}~XnXdS)z Cloudflare v4 APIr�F�PATCH)r{N)r�r�r�r�r
)r-r�r�r�r�rVrGr{r.r.r/�patch�s zCloudFlare._CFbase.patchc	Cs�yLt|dd�r0|jd|j||||g||||j�S|jd|j||||g|||�Stk
rz}zt|d�d�WYdd}~XnXdS)z Cloudflare v4 APIr�F�POST)r{N)r�r�r�r�r
)	r-r�r�r�r�rVrGrHr{r.r.r/�post�s"zCloudFlare._CFbase.postc	Cs�yLt|dd�r0|jd|j||||g||||j�S|jd|j||||g|||�Stk
rz}zt|d�d�WYdd}~XnXdS)z Cloudflare v4 APIr�F�PUT)r{N)r�r�r�r�r
)	r-r�r�r�r�rVrGrHr{r.r.r/�puts"zCloudFlare._CFbase.putcCs|yHt|dd�r.|jd|j||||g|||j�S|jd|j||||g||�Stk
rv}zt|d�d�WYdd}~XnXdS)z Cloudflare v4 APIr�F�DELETE)r{N)r�r�r�r�r
)r-r�r�r�r�rVrGr{r.r.r/�deletes zCloudFlare._CFbase.delete)N)NNNNNN)NNNNNN)NNNNNN)NNNNNNN)NNNNNNN)NNNNNN)
r�r�r�r�r0r�r�r�r�r�r�r�r�r.r.r.r/�_CFbase�s
	








r�cs eZdZdZ�fdd�Z�ZS)zCloudFlare._CFbaseUnusedz :meta private: cst�j|||�|jj|_dS)z Cloudflare v4 APIN)�superr0r�rWr�)r-r�rTrI)�	__class__r.r/r0sz!CloudFlare._CFbaseUnused.__init__)r�r�r�r�r0�
__classcell__r.r.)r�r/�
_CFbaseUnusedsr�csHeZdZdZ�fdd�Zd
dd�Zddd�Zdd	d
�Zddd�Z�Z	S)zCloudFlare._CFbaseNoAuthz :meta private: cs$t�j|||�|jj|_d|_dS)z Cloudflare v4 APITN)r�r0r�rYr��_valid)r-r�rTrI)r�r.r/r0!s
z!CloudFlare._CFbaseNoAuth.__init__NcCs�yLt|dd�r0|jjd|j||||g|||j�S|jjd|j||||g||�Stk
rz}zt|d�d�WYdd}~XnXdS)z Cloudflare v4 APIr�Fr�)r{N)r�r�rWr�r�r
)r-r�r�r�r�rVrGr{r.r.r/r�(s"zCloudFlare._CFbaseNoAuth.patchc	Cs�yPt|dd�r2|jjd|j||||g||||j�S|jjd|j||||g|||�Stk
r~}zt|d�d�WYdd}~XnXdS)z Cloudflare v4 APIr�Fr�)r{N)r�r�rWr�r�r
)	r-r�r�r�r�rVrGrHr{r.r.r/r�2s$ zCloudFlare._CFbaseNoAuth.postc	Cs�yLt|dd�r0|jjd|j||||g|||j�S|jjd|j||||g||�Stk
rz}zt|d�d�WYdd}~XnXdS)z Cloudflare v4 APIr�Fr�)r{N)r�r�rWr�r�r
)	r-r�r�r�r�rVrGrHr{r.r.r/r�<s"zCloudFlare._CFbaseNoAuth.putcCs�yLt|dd�r0|jjd|j||||g|||j�S|jjd|j||||g||�Stk
rz}zt|d�d�WYdd}~XnXdS)z Cloudflare v4 APIr�Fr�)r{N)r�r�rWr�r�r
)r-r�r�r�r�rVrGr{r.r.r/r�Fs"zCloudFlare._CFbaseNoAuth.delete)NNNNNN)NNNNNNN)NNNNNNN)NNNNNN)
r�r�r�r�r0r�r�r�r�r�r.r.)r�r/�
_CFbaseNoAuths





r�cs eZdZdZ�fdd�Z�ZS)zCloudFlare._CFbaseAuthz :meta private: cs$t�j|||�|jj|_d|_dS)z Cloudflare v4 APITN)r�r0r�rZr�r�)r-r�rTrI)r�r.r/r0Ss
zCloudFlare._CFbaseAuth.__init__)r�r�r�r�r0r�r.r.)r�r/�_CFbaseAuthPsr�cs eZdZdZ�fdd�Z�ZS)zCloudFlare._CFbaseAuthUnwrappedz :meta private: cs$t�j|||�|jj|_d|_dS)z Cloudflare v4 APITN)r�r0r�r\r�r�)r-r�rTrI)r�r.r/r0]s
z(CloudFlare._CFbaseAuthUnwrapped.__init__)r�r�r�r�r0r�r.r.)r�r/�_CFbaseAuthUnwrappedZsr�cs eZdZdZ�fdd�Z�ZS)zCloudFlare._CFbaseAuthCertz :meta private: cs$t�j|||�|jj|_d|_dS)z Cloudflare v4 APITN)r�r0r�r]r�r�)r-r�rTrI)r�r.r/r0gs
z#CloudFlare._CFbaseAuthCert.__init__)r�r�r�r�r0r�r.r.)r�r/�_CFbaseAuthCertdsr�cCsZtj|�r|d}d|dkr.d|dd�}d|krB|jdd�}d|krV|jdd�}|S)	z sanitize_verb �_�@rZat_rNrP�-)�keyword�	iskeywordr�)�clsrMr.r.r/�
sanitize_verbns
zCloudFlare.sanitize_verbN)rIcGs|j|||dd�dS)z add_carefully()
        F)�autoN)rA)r-rKrIrTr.r.r/�
add_carefullyszCloudFlare.add_carefullyT)rIr�c

Gs�g}x|D]}||jd�7}q
W|}x�|dd�D]�}yt|tj|��}Wq2tk
r�|sxtdd|dj|�f�d�|j|j|dd�}	t	|tj|�|	�t|tj|��}Yq2Xq2W|d}y4t|tj|��}tdddj|dd��|f��Wntk
�rYnX|dk�r(|j|j|dd�}	n�|d	k�rF|j
|j||d�}	nd|d
k�rd|j|j||d�}	nF|dk�r�|j|j||d�}	n(|dk�r�|j
|j||d�}	n
tdd
��t	|tj|�|	�dS)a� add()

        :param t: type of API call.
        :param p1: part1 of API call.
        :param p2: part1 of API call.
        :param p3: part1 of API call.
        :param p4: part1 of API call.
        :param p5: part1 of API call.
        :param content_type: optional value for the HTTP Content-Type for an API call.

        add() is the core fuction that creates a new API endpoint that can be called later on.
        r^rrz6api load: api_part **%s** missing when adding path /%sN)rIz-api load: duplicate api_part found: %s/**%s**ZVOIDZOPENZAUTHZAUTH_UNWRAPPEDZCERTzapi load type mismatchr6r6r6)rDr�rr��AttributeErrorr
r�r�r��setattrr�r�r�r�)
r-rKrIr�rTZapi_sections�pZbranchZapi_part�fr.r.r/rA�s>
$





zCloudFlare.addcCsj|}x`|jd�D]R}|dks|ddkr*qyt|tj|��}Wqtk
r`td|�d�YqXqW|S)z� find()

        :param cmd: API in slash format
        :return: fuction to call for that API

        You can use this call to convert a string API command into the actual function call
        r^rfrr3z
%s: not foundN)rDr�rr�r�)r-�cmd�mZverbr.r.r/�find�szCloudFlare.findcCs|j|d�S)z� api_list()

        :return: list of API calls

        A recursive walk of the api tree returning a list of api calls
        )r�)�	_api_list)r-r.r.r/�api_list�szCloudFlare.api_listrfcCs g}�xtt|��D�]}|ddkr(q|dkr2qyt||�}Wn$tk
rdtdd|�d	�YnXt|�}d
|krxqd|ko�d|k�rd|ks�d|ks�d|ks�d|ks�d|k�r|ddkr�tj|d	d��r�|jt|�d
d��n|jt|�d
d��||j	||d|�}qW|S)z :meta private: rr�r�r�r�r�r�z!%s: not found - should not happenNr�r�r�rr^)r�r�r�r�r�r6r6r6r6)
�sorted�dirr�r�r
r�r�r�r=r�)r-r��s�w�n�a�dr.r.r/r��s**zCloudFlare._api_listcCs|jj|�S)zh api_from_openapi()

        :param url: OpenAPI URL or None if you use the built official URL

        )r�r�)r-rxr.r.r/r��szCloudFlare.api_from_openapiFc
Cs�d|_|dk	r*t|t�r*tdt|���|dk	rNt|t�rNtdt|���|dk	rrt|t�rrtdt|���|dk	r�t|t�r�tdt|���yt|�}
Wn&tk
r�}z
|�WYdd}~XnX|dk	r�||
d<|dk	r�||
d<|dk	r�||
d<|dk	�r||
d	<|dk	�r||
d
<|dk	�r0||
d<|dk	�rB||
d<|dk	�rT||
d
<|	dk	�rf|	|
d<|
dk	�rx|
|
d<|dk	�r�||
d<|dk	�rt|t��s�td��x`|D]X}y|jdd�\}}Wn t	k
�r�td�d�YnXt
|j��dk�r�td�d��q�W||
d<x(|
j�D]\}}|dk�rd|
|<�qW|j
|
�|_y.t|�d|
k�rt|
d�rtt||
d�Wn(tk
�r�}z
|�WYdd}~XnXdS)z :meta private: Nzemail is %s - must be strzkey is %s - must be strztoken is %s - must be strzcerttoken is %s - must be strrrrrrrrrrrrzhttp_headers is not a listr3rzhttp_headers bad syntaxrrrfZextras)r�r8r=r)�typerr	r9rDr*r>rEr@r�r
rrl)r-rrrrrrrrrrrrrr{rNrKrMrLr.r.r/r0sp










zCloudFlare.__init__cCs|jr|`d|_dS)z :meta private: N)r�)r-r.r.r/r1JszCloudFlare.__del__cCstd��dS)z :meta private: zobject is not callableN)r))r-r.r.r/r�QszCloudFlare.__call__cCs|S)z :meta private: r.)r-r.r.r/�	__enter__VszCloudFlare.__enter__cCs|dkrdSdS)z :meta private: NTFr.)r-rKrM�tbr.r.r/�__exit__ZszCloudFlare.__exit__cCs8|jjdkrd|jjdf}nd|jj|jjdf}|S)z :meta private: Nz["%s","%s"]�REDACTEDz["%s","%s","%s"])r�r r)r-r�r.r.r/r�aszCloudFlare.__str__c
Csx|jjdkr>d|jt|�j|jjdd|jj|jj|jjf}n6d|jt|�j|jj|jjdd|jj|jj|jjf	}|S)z :meta private: Nz"%s,%s("%s","%s","%s","%s",%s,"%s")r�z'%s,%s("%s","%s","%s","%s","%s",%s,"%s"))	r�r r�r�r�rrrr)r-r�r.r.r/r�js
zCloudFlare.__repr__cCs |t|�kr||St|��dS)z :meta private: N)r�r�)r-rr.r.r/�__getattr__{szCloudFlare.__getattr__)Nrf)N)NNNNFFTNNNNN)r�r�r�r�r�r�r�r�r�r�r��classmethodr�r�rAr�r�r�r�r0r1r�r�r�r�r�r�r.r.r.r/rs8N	2


8	
#
	
G	rc@seZdZdZdS)�
CloudflarezU A Python interface Cloudflare's v4 API.

    Alternate upper/lowercase version.
    N)r�r�r�r�r.r.r.r/r��sr�c@seZdZdZdS)�
cloudflarezU A Python interface Cloudflare's v4 API.

    Alternate upper/lowercase version.
    N)r�r�r�r�r.r.r.r/r��sr�)r�rBr�rrrZlogging_helperrZutilsrrrr	r
rr�
exceptionsr
rr$r%r&r'rr�r�r.r.r.r/�<module>s2p