U
    {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 p0|dd | _|dd | _|d| _d| j| _| jsh| js| jrt| jrt	| j| j| jgst
dd S )NZEMAILZTOKENZAPI_KEYZBEARER_TOKENZ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formatZcloudflare_purge_endpoint_urlanyr   )selfparams	__class__ z/var/www/dating/data/www/fatepal.com/env/lib/python3.8/site-packages/wagtail/contrib/frontend_cache/backends/cloudflare.pyr	      s<     zCloudflareBackend.__init__c           
   
   C   s:  zd | j}ddi}| jr.d| j |d< n| j|d< | j|d< d|i}tj|||d	}z| }W n> tk
r   |j	d
kr|
  n|D ]}td| qY nX W nH tjjk
r } z&|D ]}td||jj	 qW Y d S d }~X Y nX |d dkr6ddd |d D }	|D ]}td||	 qd 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   urlsZ	purge_urlr   datar.   Zresponse_jsonurleZerror_messagesr   r   r   _purge_urls1   sZ    



zCloudflareBackend._purge_urlsc                 C   s8   t dt|| jD ] }|||| j  }| | qd S )Nr   )rangelen
CHUNK_SIZEr4   )r   r0   ichunkr   r   r   purge_batchj   s    zCloudflareBackend.purge_batchc                 C   s   |  |g d S )N)r4   )r   r2   r   r   r   purgeq   s    zCloudflareBackend.purge)	__name__
__module____qualname__r7   r	   r4   r:   r;   __classcell__r   r   r   r   r      s
    9)
r,   r#   Zdjango.core.exceptionsr   baser   	getLoggerr(   __all__r   r   r   r   r   <module>   s   
