o
    i                     @   s<  d Z ddlZddlmZmZmZmZ ddlmZ ddl	m
Z
 ddlmZmZ ded	eeeef eeee f f fd
dZdeeef deeee f defddZdeeef deeee f dededef
ddZdeeef deeee f dedededefddZded	efddZdeeef defddZdS )zACode generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.    N)AnyDictListTuple)	BaseModel)	FieldInfo   )SecurityMetadatafind_field_metadatasecurityreturnc                 C   s   i }i }| d u r||fS t | tstd| jj}|D ]G}|| }t| |}|d u r+qt|t}|d u r5q|jrDt	||| ||f  S |j
rb|jdv rZt |tsZt|||||  qt||||| q||fS )Nz!security must be a pydantic model)basiccustom)
isinstancer   	TypeError	__class__model_fieldsgetattrr
   r	   option_parse_security_optionschemesub_type_parse_security_scheme)r   headersquery_params
sec_fieldsname	sec_fieldvaluemetadata r    d/var/www/html/karishye-ai-python/venv/lib/python3.10/site-packages/mistralai_azure/utils/security.pyget_security   s4   


r"   r   r   r   c              	   C   s`   t |ts	td|jj}|D ]}|| }t|t}|d u s!|js"qt| |||t	|| qd S )Nz(security option must be a pydantic model)
r   r   r   r   r   r
   r	   r   r   r   )r   r   r   
opt_fieldsr   	opt_fieldr   r    r    r!   r   7   s   

r   scheme_metadata
field_namer   c                 C   s   |j }|j}t|trL|dkr |dkrt| | d S |dkr d S |jj}|D ]#}|| }	t|	t}
|
d u s:|
j	d u r;q&t
||}t| |||
|| q&d S t| ||||| d S )Nhttpr   r   )scheme_typer   r   r   _parse_basic_auth_schemer   r   r
   r	   r&   r   _parse_security_scheme_value)r   r   r%   r&   r   r(   r   scheme_fieldsr   scheme_fieldr   r   r    r    r!   r   I   s.   



r   security_metadatar   c           	      C   s   |j }|j}||}|dkr(|dkr|| |< d S |dkr$|g||< d S td|dkr4t|| |< d S |dkrF|dkrDt|| |< d S d S |dkr`|d	krVt|| |< d S |d
kr\d S tdtd)NapiKeyheaderqueryz!sub type {sub_type} not supportedopenIdConnectoauth2client_credentialsr'   bearerr   z'scheme type {scheme_type} not supported)r(   r   get_field_name
ValueError_apply_bearer)	r   r   r%   r-   r&   r   r(   r   header_namer    r    r!   r*   n   s,   
r*   tokenc                 C   s   |   dr	| pd|  S )Nzbearer zBearer )lower
startswith)r9   r    r    r!   r7      s   r7   c                 C   s   d}d}t |tstd|jj}|D ])}|| }t|t}|d u s'|jd u r(q|j}t||}	|dkr6|	}|dkr<|	}q| d| 	 }
dt
|
  | d< d S )N z*basic auth scheme must be a pydantic modelusernamepassword:zBasic Authorization)r   r   r   r   r   r
   r	   r&   r   encodebase64	b64encodedecode)r   r   r=   r>   r+   r   r,   r   r&   r   datar    r    r!   r)      s&   


r)   )__doc__rB   typingr   r   r   r   pydanticr   pydantic.fieldsr   r   r	   r
   strr"   r   r   r*   r7   r)   r    r    r    r!   <module>   sP    .$



%

$