o
    Á¿iÂ  ã                	   @   sx   d dl mZ d dlmZ d dlmZ d dlmZ dd„ Zdd„ Z	d	e
fd
d„Zddd„Zddededed	dfdd„ZdS )é    )ÚIAST_SPAN_TAGS)Ú_get_iast_env)Ú_num_objects_tainted_in_request)Ú_metric_key_as_snake_casec                 C   s$   t ƒ }|dkr|  tj|¡ d S d S )Nr   )r   Úset_tagr   ÚTELEMETRY_REQUEST_TAINTED)ÚspanÚtotal_objects_tainted© r
   úV/home/ubuntu/.local/lib/python3.10/site-packages/ddtrace/appsec/_iast/_span_metrics.pyÚ"_set_span_tag_iast_request_tainted   s   ÿr   c                 C   sZ   t ƒ }|d ur(| ¡ D ]\}}| tj¡s!| tj¡s!| tj¡r'|  ||¡ qtƒ  d S ©N)	Úget_iast_span_metricsÚitemsÚ
startswithr   ÚTELEMETRY_EXECUTED_SINKÚTELEMETRY_EXECUTED_SOURCEÚ"TELEMETRY_SUPPRESSED_VULNERABILITYr   Úreset_iast_span_metrics)r   ÚdataÚkeyÚvaluer
   r
   r   Ú _set_span_tag_iast_executed_sink   s   
ÿ
þ
ý€
r   Úreturnc                  C   s   t ƒ  } r| jS tƒ S r   )r   Úiast_span_metricsÚdict)Úenvr
   r
   r   r      s   
r   Nc                  C   s   t ƒ } |  ¡  d S r   )r   Úclear)Úmetricsr
   r
   r   r   #   s   r   é   ÚprefixÚ
metric_keyÚcounterc                 C   s2   t ƒ }| d t|ƒ }| |d¡}|| ||< d S )NÚ.r   )r   r   Úget)r    r!   r"   r   Úfull_keyÚresultr
   r
   r   Úincrement_iast_span_metric(   s   r'   )r   N)r   )Úddtrace.appsec._constantsr   Úddtrace.appsec._iast._iast_envr   Ú/ddtrace.appsec._iast._iast_request_context_baser   Úddtrace.appsec._iast._metricsr   r   r   r   r   r   ÚstrÚintr'   r
   r
   r
   r   Ú<module>   s    
 