o
    ±3Ihs  ã                   @   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© úe/home/air/sanwanet/gpt-api/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   Ú	uninstall9   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d„ Zd	S )
r   c                 C   s
   || _ d S r   )r   )r   r   r   r   r   r   >   s   
zDjangoRequestExtractor.__init__c                 C   sj   |   ¡ }| d¡}| d¡}d }|rt d|¡}|r| d¡}i |  ¡ ¥|| d¡| d¡|| jjdœ¥S )NÚTraceparentÚ
Tracestatezposthog-distinct-id=([^,]+)é   zX-Forwarded-Forz
User-Agent)Údistinct_idÚipÚ
user_agentÚtraceparentz$request_path)ÚheadersÚgetÚreÚsearchÚgroupÚuserr   Úpath)r   r,   r+   Ú
tracestater(   Úmatchr   r   r   r   B   s"   


ÿúz*DjangoRequestExtractor.extract_person_datac                 C   s’   i }t | jdd ƒ}|d u s|js|S zt|jƒ}|r | d|¡ W n	 ty*   Y nw zt|jƒ}|r<| d|¡ W |S W |S  tyH   Y |S w )Nr1   z$user_idÚemail)Úgetattrr   Úis_authenticatedÚstrÚpkÚ
setdefaultÚ	Exceptionr5   )r   Ú	user_datar1   Úuser_idr5   r   r   r   r1   [   s.   
€ÿ
ûýýzDjangoRequestExtractor.userc                 C   s   t | jjƒS r   )Údictr   r,   r   r   r   r   r,   s   s   zDjangoRequestExtractor.headersN)r    r!   r"   r   r   r1   r,   r   r   r   r   r   =   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   ÿ#