
    9ix                     x    d dl Z d dlZ ej                  e      ZdZdZdZd ZdZ	dZ
dZdZd	Zd
 Z G d de      Zy)    Nzclient-request-idzx-client-current-telemetryzx-client-last-telemetry               c                  <    t        t        j                               S )N)struuiduuid4     A/var/www/html/venv/lib/python3.12/site-packages/msal/telemetry.py_get_new_correlation_idr      s    tzz|r   c                   D    e Zd ZdZdZdZdZdZdZddZ	d	 Z
d
 Zd Zd Zy)_TelemetryContextzLIt is used for handling the telemetry context for current OAuth2 "exchange".	succeededfailedfailure_sized   i^  Nc                     || _         || _        || _        |xs
 t               | _        |xs t
        | _        t        j                  d| j                         y )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_reasons         r   __init__z_TelemetryContext.__init__   sJ    
-J1H1J-@;T=Q=QRr   c                 l   | j                   5  dj                  | j                  | j                        }t	        |      | j
                  kD  r.t        j                  dj                  | j
                               | j                  j                  | j                  g       }t        | j                  t        |t        dj                  | j                  j                  | j                  d      dj!                  d |D              dj!                  d |D              	      icd d d        S # 1 sw Y   y xY w)
Nz4|{api_id},{cache_refresh}|)r"   cache_refreshz9Telemetry header greater than {} will be truncated by AADz)4|{succeeded}|{failed_requests}|{errors}|r   ,c              3   @   K   | ]  } d j                   di |  yw)z{a},{c}Nr   )format.0fs     r   	<genexpr>z5_TelemetryContext.generate_headers.<locals>.<genexpr>5   s!     ,Uq-=Y-=-=-B-B,Us   c              3   &   K   | ]	  }|d      yw)eNr   r+   s     r   r.   z5_TelemetryContext.generate_headers.<locals>.<genexpr>6   s     #=qAcF#=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failuress      r   generate_headersz"_TelemetryContext.generate_headers'   s    ZZ 	3::||43G3G ; IG7|d===OVV3356 ||''b9H!4#7#7('%'R'Y'Y"ll..tB$'HH,UH,U$U88#=H#== (Z (	 	 	s   DD**D3c                     | j                   5  | j                  j                  | j                  d      dz   | j                  | j                  <   d d d        y # 1 sw Y   y xY w)Nr   r   )r   r   r6   r;   )r   s    r   hit_an_access_tokenz%_TelemetryContext.hit_an_access_token:   sO    ZZ 	U,0LL,<,<T__a,PST,TDLL)	U 	U 	Us   AAA c                     |rI| j                   5  d|v r| j                  |d          n| j                  j                          d d d        y y # 1 sw Y   y xY w)Nerror)r   _record_failurer   clear)r   auth_results     r   update_telemetryz"_TelemetryContext.update_telemetry>   sV     )k)((W)=>LL&&(	) ) ) )s   4AAc                    t        dj                  | j                  | j                  |            }| j                  j                  | j                  d      |z   | j                  k  r| j                  j                  | j                  d      |z   | j                  | j                  <   | j                  j                  | j                  g       j                  | j                  | j                  |d       y y )Nz",{api_id},{correlation_id},{error})r"   r#   rC   r   )acr0   )r3   r*   r   r   r   r6   _FAILURE_SIZE_LAST_HEADER_SIZE_LIMIT
setdefaultr7   append)r   rC   
simulations      r   rD   z!_TelemetryContext._record_failureF   s    =DD<<0D0DE E S T
<<D..2Z?$B^B^^/3||/?/?""A0')304DLL++,LL##DLL"5<<\\(<(<5>J K _r   )NN)__name__
__module____qualname____doc__r;   r7   rK   r4   rL   r%   r?   rA   rG   rD   r   r   r   r   r      s<    VJG"M!$!S&U)Kr   r   )r
   logging	getLoggerrP   r   r8   r9   r:   r   FORCE_REFRESH	AT_ABSENT
AT_EXPIREDAT_AGINGRESERVEDr   objectr   r   r   r   <module>r\      sb      
		8	$' 7 1 	
7K 7Kr   