
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
U
    „á§\f  ã                   @   sˆ   d dl Z d dlmZmZ d dlmZ d dlmZmZm	Z	m
Z
 d dlmZ d dlmZ dd„ Zd	d
„ ZG dd„ deƒZdd„ Zdd„ ZdS )é    N)ÚHubÚ_should_send_default_pii)Úreraise)ÚAnnotatedValueÚcapture_internal_exceptionsÚevent_from_exceptionÚlogger)ÚIntegration)Ú_filter_headersc                    s   ‡ fdd„}|S )Nc           	   
      sä   t j}| t¡}|d kr*ˆ | |f|ž|ŽS | ¡ �¨}tƒ �& | ¡  |j|_| 	t
| |ƒ¡ W 5 Q R X z ˆ | |f|ž|ŽW W  5 Q R £ S  tk
rÔ   t ¡ }t||jjdddœd�\} }|j| |d� t|Ž  Y nX W 5 Q R X d S )NÚ
aws_lambdaF)ÚtypeZhandled)Zclient_optionsZ	mechanism)Úhint)r   ÚcurrentÚget_integrationÚAwsLambdaIntegrationZ
push_scoper   Zclear_breadcrumbsÚfunction_nameZtransactionZadd_event_processorÚ_make_request_event_processorÚ	ExceptionÚsysÚexc_infor   ÚclientÚoptionsZcapture_eventr   )	ÚeventÚcontextÚargsÚkwargsÚhubÚintegrationZscoper   r   ©Úhandler© úS/opt/alt/python38/lib/python3.8/site-packages/sentry_sdk/integrations/aws_lambda.pyÚsentry_handler   s(    

 ý
z%_wrap_handler.<locals>.sentry_handlerr    )r   r"   r    r   r!   Ú_wrap_handler   s    r#   c               	   C   s8   t ƒ �( tj} |  t¡}|d k	r*| j ¡  W 5 Q R X d S ©N)r   r   r   r   r   r   Úflush)r   r   r    r    r!   Ú_drain_queue+   s
    
r&   c                   @   s   e Zd ZdZedd„ ƒZdS )r   r   c                     sæ   dd l } d}t| dƒs<zdd l} d}W n tk
r:   Y nX t| dƒsTt d¡ d S |r¢| j‰ ‡ fdd„}|| _| j‰‡fd	d
„}|| _| j‰‡fdd„}|| _n@| j‰ ‡ fdd„}|| _dd„ }|| j	j
ƒ| j	_
|| j	jƒ| j	_d S )Nr   TÚhandle_http_requestFÚhandle_event_requestzDNot running in AWS Lambda environment, AwsLambdaIntegration disabledc                    s   t | ƒ} ˆ | f|ž|ŽS r$   ©r#   ©Úrequest_handlerr   r   ©Úold_handle_event_requestr    r!   Úsentry_handle_event_requestP   s    zDAwsLambdaIntegration.setup_once.<locals>.sentry_handle_event_requestc                    s   t | ƒ} ˆ | f|ž|ŽS r$   r)   r*   )Úold_handle_http_requestr    r!   Úsentry_handle_http_requestX   s    zCAwsLambdaIntegration.setup_once.<locals>.sentry_handle_http_requestc                     s   t ƒ  ˆ | |ŽS r$   ©r&   ©r   r   )Úold_to_jsonr    r!   Úsentry_to_jsonc   s    z7AwsLambdaIntegration.setup_once.<locals>.sentry_to_jsonc                    s   t |ƒ}ˆ | |f|ž|ŽS r$   r)   )Zlambda_runtime_clientr+   r   r   r,   r    r!   r.   k   s     ÿÿÿc                    s   ‡ fdd„}|S )Nc                     s   t ƒ  ˆ | |ŽS r$   r1   r2   ©Úfr    r!   Úinnery   s    zKAwsLambdaIntegration.setup_once.<locals>._wrap_post_function.<locals>.innerr    )r6   r7   r    r5   r!   Ú_wrap_post_functionx   s    z<AwsLambdaIntegration.setup_once.<locals>._wrap_post_function)Ú__main__ÚhasattrZ	bootstrapÚImportErrorr   Zwarningr(   r'   Zto_jsonZLambdaRuntimeClientZpost_invocation_resultZpost_invocation_error)Zlambda_bootstrapZpre_37r.   r0   r4   r8   r    )r-   r/   r3   r!   Ú
setup_once8   sB    

ÿÿÿzAwsLambdaIntegration.setup_onceN)Ú__name__Ú
__module__Ú__qualname__Z
identifierÚstaticmethodr<   r    r    r    r!   r   5   s   r   c                    s   ‡ ‡fdd„}|S )Nc                    s  |   di ¡}ˆ  ¡ ˆ jˆ jˆ jˆ jdœ|d< |   di ¡}dˆkrLˆd |d< tˆˆ ƒ|d< dˆkrnˆd |d	< d
ˆkr†tˆd
 ƒ|d
< ˆ dd ¡r®t	ddddddggiƒ|d< t
ƒ �r|   di ¡}ˆ di ¡ d¡}|d k	rä||d< ˆ di ¡ d¡}|d k	�r||d< | S )NÚextra)Zremaining_time_in_millisr   Úfunction_versionÚinvoked_function_arnÚaws_request_idÚlambdaÚrequestZ
httpMethodÚmethodZurlZqueryStringParametersZquery_stringÚheadersZbodyÚ Zremz!rawÚxr   ÚdataÚuserZidentityZuserArnÚidZsourceIpZ
ip_address)Ú
setdefaultZget_remaining_time_in_millisr   rB   rC   rD   Ú_get_urlr
   Úgetr   r   )r   r   rA   rF   Z	user_inforM   Zip©Úaws_contextÚ	aws_eventr    r!   Úevent_processorˆ   s4    û

z6_make_request_event_processor.<locals>.event_processorr    )rS   rR   rT   r    rQ   r!   r   ‡   s    )r   c                 C   sV   |   dd ¡}|   di ¡}|  dd ¡}|  dd ¡}|rJ|rJ|rJd |||¡S d |j¡S )NÚpathrH   ZHostzX-Forwarded-Protoz	{}://{}{}zawslambda:///{})rP   Úformatr   )r   r   rU   rH   ÚhostÚprotor    r    r!   rO   ´   s    rO   )r   Zsentry_sdk.hubr   r   Zsentry_sdk._compatr   Zsentry_sdk.utilsr   r   r   r   Zsentry_sdk.integrationsr	   Z$sentry_sdk.integrations._wsgi_commonr
   r#   r&   r   r   rO   r    r    r    r!   Ú<module>   s   
R-