o
    ›¨Êh�  ã                   @   sX   d dl Z d dlmZ d dlmZ ddlmZ ddlmZmZm	Z	m
Z
 G dd	„ d	eƒZdS )
é    N)Údatetime)Úutcé   )ÚAnymailBaseWebhookViewé   )ÚAnymailTrackingEventÚ	EventTypeÚRejectReasonÚtrackingc                   @   s    e Zd ZdZdZeZdd„ Zej	dfej
dfejejfejejfejejfejejfejejfejdfejdfejdfejdfejdfejdfdœZdd„ ZdS )	ÚSendinBlueTrackingWebhookViewz@Handler for SendinBlue delivery and engagement tracking webhooksÚ
SendinBluec                 C   s   t  |j d¡¡}|  |¡gS )Nzutf-8)ÚjsonÚloadsÚbodyÚdecodeÚesp_to_anymail_event)ÚselfÚrequestÚ	esp_event© r   úM/var/www/html/env/lib/python3.10/site-packages/anymail/webhooks/sendinblue.pyÚparse_events   s   z*SendinBlueTrackingWebhookView.parse_eventsN)r   Ú	deliveredÚhard_bounceÚsoft_bounceÚblockedÚspamÚinvalid_emailÚdeferredÚopenedÚclickÚunsubscribeÚlist_additionÚunique_openedc           	      C   sê   |  d¡}| j  |tjd f¡\}}|  d¡}ztj|d d td�}W n ttfy0   d }Y nw z|d g}W n tyC   g }Y nw z	t	 
|d ¡}W n ttfyZ   i }Y nw td |d ||  d¡||  d	¡||||d |  d
¡d�S )NÚeventÚemailÚts_epochg     @�@)ÚtzÚtagzX-Mailin-customz
message-idÚreasonÚlink)Údescriptionr   Úevent_idÚ
event_typeÚ
message_idÚmetadataÚmta_responseÚ	recipientÚreject_reasonÚtagsÚ	timestampÚ
user_agentÚ	click_url)ÚgetÚevent_typesr   ÚUNKNOWNr   Úfromtimestampr   ÚKeyErrorÚ
ValueErrorr   r   Ú	TypeErrorr   )	r   r   Úesp_typer-   r2   r1   r4   r3   r/   r   r   r   r   '   sB   

ÿÿÿóz2SendinBlueTrackingWebhookView.esp_to_anymail_event)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úesp_namer
   Úsignalr   r   ÚQUEUEDÚ	DELIVEREDÚBOUNCEDr	   ÚREJECTEDÚBLOCKEDÚ
COMPLAINEDÚSPAMÚINVALIDÚDEFERREDÚOPENEDÚCLICKEDÚUNSUBSCRIBEDÚ
SUBSCRIBEDr8   r   r   r   r   r   r   
   s(    




òr   )r   r   Údjango.utils.timezoner   Úbaser   Úsignalsr   r   r	   r
   r   r   r   r   r   Ú<module>   s    