o
    +ifx                     @   sZ   d dl Z d dlZeeZdZdZdZd ZdZ	dZ
dZdZd	Zd
d ZG dd deZdS )    Nzclient-request-idzx-client-current-telemetryzx-client-last-telemetry               c                   C   s   t t S )N)struuiduuid4 r
   r
   G/var/www/html/corbot_env/lib/python3.10/site-packages/msal/telemetry.py_get_new_correlation_id   s   r   c                   @   sN   e Zd ZdZdZdZdZdZdZddd	Z	d
d Z
dd Zdd Zdd ZdS )_TelemetryContextzLIt is used for handling the telemetry context for current OAuth2 "exchange".	succeededfailedfailure_sized   i^  Nc                 C   s:   || _ || _|| _|pt | _|pt| _td| j d S )Nz$Generate or reuse correlation_id: %s)	_buffer_lock_api_idr   _correlation_idNON_SILENT_CALL_refresh_reasonloggerdebug)selfbufferlockapi_idcorrelation_idrefresh_reasonr
   r
   r   __init__   s   
z_TelemetryContext.__init__c                 C   s   | j N dj| j| jd}t|| jkrtd| j | j	| j
g }t| jt|tdj| j	| jdddd |D dd	d |D d
iW  d    S 1 sTw   Y  d S )Nz4|{api_id},{cache_refresh}|)r   cache_refreshz9Telemetry header greater than {} will be truncated by AADz)4|{succeeded}|{failed_requests}|{errors}|r   ,c                 s   s     | ]}d j di |V  qdS )z{a},{c}Nr
   )format.0fr
   r
   r   	<genexpr>5   s    z5_TelemetryContext.generate_headers.<locals>.<genexpr>c                 s   s    | ]}|d  V  qdS )eNr
   r$   r
   r
   r   r'   6   s    )r   failed_requestserrors)r   r#   r   r   len_CURRENT_HEADER_SIZE_LIMITr   warningr   get_FAILEDCLIENT_REQUEST_IDr   CLIENT_CURRENT_TELEMETRYCLIENT_LAST_TELEMETRY
_SUCCEEDEDjoin)r   currentfailuresr
   r
   r   generate_headers'   s(   $z"_TelemetryContext.generate_headersc                 C   sH   | j  | j| jdd | j| j< W d    d S 1 sw   Y  d S )Nr   r   )r   r   r.   r3   )r   r
   r
   r   hit_an_access_token:   s   "z%_TelemetryContext.hit_an_access_tokenc                 C   sf   |r1| j " d|v r| |d  n| j  W d    d S W d    d S 1 s*w   Y  d S d S )Nerror)r   _record_failurer   clear)r   auth_resultr
   r
   r   update_telemetry>   s   "z"_TelemetryContext.update_telemetryc                 C   sx   t dj| j| j|d}| j| jd| | jk r:| j| jd| | j| j< | j| j	g 
| j| j|d d S d S )Nz",{api_id},{correlation_id},{error})r   r   r9   r   )acr(   )r+   r#   r   r   r   r.   _FAILURE_SIZE_LAST_HEADER_SIZE_LIMIT
setdefaultr/   append)r   r9   
simulationr
   r
   r   r:   F   s   

z!_TelemetryContext._record_failure)NN)__name__
__module____qualname____doc__r3   r/   r@   r,   rA   r    r7   r8   r=   r:   r
   r
   r
   r   r      s    
r   )r   logging	getLoggerrE   r   r0   r1   r2   r   FORCE_REFRESH	AT_ABSENT
AT_EXPIREDAT_AGINGRESERVEDr   objectr   r
   r
   r
   r   <module>   s    
