o
    ˜º¥gK  ã                   @   sœ   d dl Z d dlZd dlmZ d dlmZ zd dlmZ d dl	m
Z
 W n ey-   edƒ‚w er>d dlmZmZ d dlmZ G d	d
„ d
ƒZG dd„ dƒZdS )é    N)ÚTYPE_CHECKING)ÚIntegrationEnablingError)ÚVERSION)ÚsignalszDjango not installed)ÚAnyÚDict)ÚWSGIRequestc                   @   s&   e Zd ZdZdZddd„Zdd„ ZdS )	ÚDjangoIntegrationz7
    Autocapture errors from a Django application.
    ÚdjangoNc                    s4   t dk rtdƒ‚|ˆ _d‡ fdd„	}tj |¡ d S )N)é   é   z Django 4.2 or newer is required.c                    s,   i }| d urt | ƒ ¡ }ˆ  t ¡ |¡ d S ©N)ÚDjangoRequestExtractorÚextract_person_dataÚcapture_exception_fnÚsysÚexc_info)ÚrequestÚkwargsÚextra_props©Úself© ú\/var/www/visachat/venv/lib/python3.10/site-packages/posthog/exception_integrations/django.pyÚ_got_request_exception)   s   z:DjangoIntegration.__init__.<locals>._got_request_exceptionr   )ÚDJANGO_VERSIONr   r   r   Úgot_request_exceptionÚconnect)r   r   r   r   r   r   Ú__init__   s
   
zDjangoIntegration.__init__c                 C   s   d S r   r   r   r   r   r   Ú	uninstall5   s   zDjangoIntegration.uninstallr   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú
identifierr   r   r   r   r   r   r	      s
    
r	   c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )r   c                 C   s
   || _ d S r   )r   )r   r   r   r   r   r   ;   s   
zDjangoRequestExtractor.__init__c                 C   sX   |   ¡ }| d¡}| d¡}d }|rt d|¡}|r| d¡}|| d¡| d¡|dœS )NÚtraceparentÚ
tracestatezposthog-distinct-id=([^,]+)é   zX-Forwarded-Forz
User-Agent)Údistinct_idÚipÚ
user_agentr%   )ÚheadersÚgetÚreÚsearchÚgroup)r   r+   r%   r&   r(   Úmatchr   r   r   r   ?   s   


üz*DjangoRequestExtractor.extract_person_datac                 C   s   t | jjƒS r   )Údictr   r+   r   r   r   r   r+   V   s   zDjangoRequestExtractor.headersN)r    r!   r"   r   r   r+   r   r   r   r   r   9   s    r   )r-   r   Útypingr   Úposthog.exception_integrationsr   r
   r   r   Údjango.corer   ÚImportErrorr   r   Údjango.core.handlers.wsgir   r	   r   r   r   r   r   Ú<module>   s    ÿ$