o
    h                     @   sL   d dl Z d dlZd dlmZ ddlmZ e dZdgZG dd deZ	dS )    N)ImproperlyConfigured   )BaseBackendzwagtail.frontendcacheCloudflareBackendc                       s8   e Zd ZdZ fddZdd Zdd Zdd	 Z  ZS )
r      c                    s   t  | |dd | _|dd p|dd | _|dd | _|d| _d| j| _| js4| jsD| jr:| jrDt	| j| j| jgsHt
dd S )NEMAILTOKENAPI_KEYBEARER_TOKENZONEID9https://api.cloudflare.com/client/v4/zones/{}/purge_cachezjThe setting 'WAGTAILFRONTENDCACHE' requires both 'EMAIL' and 'API_KEY', or 'BEARER_TOKEN' to be specified.)super__init__popcloudflare_emailcloudflare_api_keycloudflare_tokencloudflare_zoneidformatcloudflare_purge_endpoint_urlanyr   )selfparams	__class__ r/var/www/html/ndineBlogger/venv/lib/python3.10/site-packages/wagtail/contrib/frontend_cache/backends/cloudflare.pyr      s<   zCloudflareBackend.__init__c           
   
   C   s2  zSd | j}ddi}| jrd| j |d< n
| j|d< | j|d< d|i}tj|||d	}z| }W n tyQ   |j	d
krD|
  n|D ]}td| qFY nw W n# tjjyv } z|D ]}td||jj	 q_W Y d }~d S d }~ww |d du rddd |d D }	|D ]	}td||	 qd S d S )Nr   zContent-Typezapplication/jsonzBearer AuthorizationzX-Auth-Emailz
X-Auth-Keyfiles)jsonheaders   zACouldn't purge '%s' from Cloudflare. Unexpected JSON parse error.z2Couldn't purge '%s' from Cloudflare. HTTPError: %dsuccessFz, c                 S   s   g | ]}t |d  qS )message)str).0errr   r   r   
<listcomp>`   s    z1CloudflareBackend._purge_urls.<locals>.<listcomp>errorsz;Couldn't purge '%s' from Cloudflare. Cloudflare errors '%s')r   r   r   r   r   requestsdeleter   
ValueErrorstatus_coderaise_for_statusloggererror
exceptions	HTTPErrorlogging	exceptionresponsejoin)
r   urls	purge_urlr    datar4   response_jsonurleerror_messagesr   r   r   _purge_urls1   sf   




	zCloudflareBackend._purge_urlsc                 C   s8   t dt|| jD ]}|||| j  }| | q	d S )Nr   )rangelen
CHUNK_SIZEr=   )r   r6   ichunkr   r   r   purge_batchj   s   zCloudflareBackend.purge_batchc                 C   s   |  |g d S )N)r=   )r   r:   r   r   r   purgeq   s   zCloudflareBackend.purge)	__name__
__module____qualname__r@   r   r=   rC   rD   __classcell__r   r   r   r   r      s     9)
r2   r)   django.core.exceptionsr   baser   	getLoggerr.   __all__r   r   r   r   r   <module>   s    
