o
    rN)j(                     @  s^   d dl mZ d dlmZ d dlmZmZmZmZ d dl	m
Z
mZmZmZmZ G dd dZdS )    )annotations)Any)handle_base64_response_bodyhandle_exclude_headershandle_multi_value_headersmaybe_encode_body)LambdaConfigLambdaContextLambdaEventResponseScopec                   @  sJ   e Zd Zedd	d
ZdddZedddZedddZdddZ	dS )LambdaAtEdgeeventr
   contextr	   configr   returnboolc                 C  s(   d|v ot |d dkod|d d v S )NRecordsr   cf)len)clsr   r   r    r   /var/www/html/finance.cargoinsureonline.com/_shared/backend-venv/lib/python3.10/site-packages/mangum/handlers/lambda_at_edge.pyinfer   s   (zLambdaAtEdge.inferNonec                 C  s   || _ || _|| _d S )N)r   r   r   )selfr   r   r   r   r   r   __init__   s   
zLambdaAtEdge.__init__bytesc                 C  s<   | j d d d d di }t|d|ddd	kd
S )Nr   r   r   requestbodydataencoding base64)	is_base64)r   getr   )r   cf_request_bodyr   r   r   r      s
   zLambdaAtEdge.bodyr   c                 C  s  | j d d d d }|d di g}|d dd}|d d	i g}|d dd
}d|vrC|d di g}|d dd}n|d\}}|t|f}|d }	|	df}
|d }d|ddd |d  D |d d d||d  ||
ddd| j | jdS )Nr   r   r   r   headerszcloudfront-forwarded-protovaluehttpshostmangum:zx-forwarded-portP   clientIpmethodhttpz1.1c                 S  s(   g | ]\}}|  |d  d   gqS )r   r(   )encode).0kvr   r   r   
<listcomp>:   s   ( z&LambdaAtEdge.scope.<locals>.<listcomp>urir"   querystringz3.0z2.0)versionspec_version)typer/   http_versionr'   pathraw_path	root_pathschemequery_stringserverclientasgiz	aws.eventzaws.context)r   r%   splitintitemsr1   r   )r   
cf_requestscheme_headerr?   host_headerserver_nameforwarded_port_headerserver_portrA   	source_iprB   http_methodr   r   r   scope$   s8   
zLambdaAtEdge.scoperesponser   dict[str, Any]c                 C  sV   t |d \}}t|d || jd \}}dd |d D }|d t|| j||dS )Nr'   r   text_mime_typesc                 S  s2   i | ]\}}|   |   |  d gqS ))keyr(   )decodelower)r2   rS   valr   r   r   
<dictcomp>L   s     z)LambdaAtEdge.__call__.<locals>.<dictcomp>status)rX   r'   r   isBase64Encoded)r   r   r   r   )r   rP   multi_value_headers_response_bodyis_base64_encodedfinalized_headersr   r   r   __call__G   s   
zLambdaAtEdge.__call__N)r   r
   r   r	   r   r   r   r   )r   r
   r   r	   r   r   r   r   )r   r   )r   r   )rP   r   r   rQ   )
__name__
__module____qualname__classmethodr   r   propertyr   rO   r_   r   r   r   r   r      s    
"r   N)
__future__r   typingr   mangum.handlers.utilsr   r   r   r   mangum.typesr   r	   r
   r   r   r   r   r   r   r   <module>   s
    