
    0jx                     |    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dS )    Nzclient-request-idzx-client-current-telemetryzx-client-last-telemetry               c                  B    t          t          j                              S )N)struuiduuid4     V/home/rurouni/.hermes/hermes-agent/venv/lib/python3.11/site-packages/msal/telemetry.py_get_new_correlation_idr      s    tz||r   c                   F    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dS )_TelemetryContextzLIt is used for handling the telemetry context for current OAuth2 "exchange".	succeededfailedfailure_sized   i^  Nc                     || _         || _        || _        |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_reasons         r   __init__z_TelemetryContext.__init__   sV    
-J1H1J1J-@;T=QRRRRRr   c                 n   | j         5  d                    | j        | j                  }t	          |          | j        k    r2t                              d                    | j                             | j        	                    | j
        g           }t          | j        t          |t          d                    | j        	                    | j        d          d                    d |D                       d                    d |D                       	          icd d d            S # 1 swxY w 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              3   0   K   | ]} d j         di |V  dS )z{a},{c}Nr   )format.0fs     r   	<genexpr>z5_TelemetryContext.generate_headers.<locals>.<genexpr>5   s6      ,U,Uq-=Y-=-B-B-B-B,U,U,U,U,U,Ur   c              3   &   K   | ]}|d          V  dS )eNr   r+   s     r   r.   z5_TelemetryContext.generate_headers.<locals>.<genexpr>6   s&      #=#=qAcF#=#=#=#=#=#=r   )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'   ss   Z 	 	3::|43G ; I IG7||d===OVV35 56 6 6 |''b99H!4#7('%'R'Y'Y"l..tBB$'HH,U,UH,U,U,U$U$U88#=#=H#=#=#=== (Z ( (	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   DD**D.1D.c                     | j         5  | j                            | j        d          dz   | j        | j        <   d d d            d S # 1 swxY w Y   d S )Nr   r   )r   r   r6   r;   )r   s    r   hit_an_access_tokenz%_TelemetryContext.hit_an_access_token:   s    Z 	U 	U,0L,<,<T_a,P,PST,TDL)	U 	U 	U 	U 	U 	U 	U 	U 	U 	U 	U 	U 	U 	U 	U 	U 	U 	Us   1AA
A
c                     |r[| j         5  d|v r|                     |d                    n| j                                         d d d            d S # 1 swxY w Y   d S d S )Nerror)r   _record_failurer   clear)r   auth_results     r   update_telemetryz"_TelemetryContext.update_telemetry>   s     	) ) )k))((W)=>>>>L&&(((	) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )	) 	)s   :AAAc                    t          d                    | j        | j        |                    }| j                            | j        d          |z   | j        k     rs| j                            | j        d          |z   | j        | j        <   | j                            | j	        g           
                    | j        | j        |d           d S d S )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<0DE E S S T T
<D.22Z?$B^^^/3|/?/?"A0' 0')304DL+,L##DL"55<<\(<5>J >J K K K K K _^r   )NN)__name__
__module____qualname____doc__r;   r7   rK   r4   rL   r%   r?   rA   rG   rD   r   r   r   r   r      s        VVJG"M!$!S S S S  &U U U) ) )K K K K 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\      s      
	8	$	$' 7 1 	
  7K 7K 7K 7K 7K 7K 7K 7K 7K 7Kr   