o
    rN)j                     @  s|   d dl mZ d dlZd dlmZ d dlmZ d dlmZm	Z	 d'ddZ
d(ddZd)ddZd*ddZd+d!d"Zd,d%d&ZdS )-    )annotationsN)Any)unquote)HeadersLambdaConfigbodystr | bytes	is_base64boolreturnbytesc                C  s0   | pd} |rt | } | S t| ts|  } | S )N    )base64	b64decode
isinstancer   encode)r   r	    r   v/var/www/html/finance.cargoinsureonline.com/_shared/backend-venv/lib/python3.10/site-packages/mangum/handlers/utils.pymaybe_encode_body
   s   

r   headersdict[str, Any]tuple[str, int]c                 C  s@   |  dd}d|vr|  dd}n|d\}}|t|f}|S )Nhostmangum:zx-forwarded-portP   )getsplitint)r   server_nameserver_portserverr   r   r   get_server_and_port   s   r"   pathstrapi_gateway_base_pathc                C  sJ   | sdS |r!|dkr!| dsd| }|  |r!| t|d  } t| S )N/)
startswithlenr   )r#   r%   r   r   r   strip_api_gateway_path   s   


r)   response_headersr   +tuple[dict[str, str], dict[str, list[str]]]c                 C  sv   i }i }| D ]0\}}|   }||v r|| |   q||v r0|| |  g||< ||= q|  ||< q||fS )N)decodelowerappend)r*   r   multi_value_headerskeyvalue	lower_keyr   r   r   handle_multi_value_headers,   s   r3   dict[str, str]text_mime_types	list[str]tuple[str, bool]c              	   C  s   d}d}| dkr<|D ](}|| ddv r2z|  }W n ty,   t|  }d}Y nw  ||fS q
t|  }d}||fS )NF r   zcontent-typeT)r   r,   UnicodeDecodeErrorr   	b64encode)r   r   r5   is_base64_encodedoutput_bodytext_mime_typer   r   r   handle_base64_response_bodyA   s"   r>   configr   c                 C  s0   i }|   D ]\}}||d v rq|||< q|S )Nexclude_headers)items)r   r?   finalized_headers
header_keyheader_valuer   r   r   handle_exclude_headersX   s   
rE   )r   r   r	   r
   r   r   )r   r   r   r   )r#   r$   r%   r$   r   r$   )r*   r   r   r+   )r   r   r   r4   r5   r6   r   r7   )r   r   r?   r   r   r   )
__future__r   r   typingr   urllib.parser   mangum.typesr   r   r   r"   r)   r3   r>   rE   r   r   r   r   <module>   s    





