o
    pkjH                     @   sr  d Z ddlZddlmZ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dlZ	d#ded	eee  d
eeeef eeee f f fddZdeded
ee	 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OptionalTuple)	BaseModel)	FieldInfo   )SecurityMetadatafind_field_metadatasecurityallowed_fieldsreturnc           
      C   s  i }i }| d u r||fS t | tstd| jj}|d u r#t| n|}|D ]U}||vr.q'|| }t| |}|d u r<q't|t	}	|	d u rFq'|	j
rUt||| ||f  S |	jr||	jdv rkt |tskt|||	||  nt|||	|| |	js|||f  S q'||fS )Nz!security must be a pydantic model)basiccustom)
isinstancer   	TypeError	__class__model_fieldslistkeysgetattrr   r
   option_parse_security_optionschemesub_type_parse_security_scheme	composite)
r   r   headersquery_params
sec_fieldssec_field_namesname	sec_fieldvaluemetadata r&   _/home/djax/ivt_ai_plugin/venv/lib/python3.10/site-packages/google/genai/_gaos/utils/security.pyget_security&   s@   


r(   security_classc                 C   s   | d ur| S t |tstdi }tdrtd|d< tdr)td|d< tdr5td|d< |r>|di |S d S )	Nz-security_class must be a pydantic model classGOOGLE_GENAI_ACCESS_TOKENaccess_tokenGOOGLE_GENAI_API_KEYapi_keyGOOGLE_GENAI_DEFAULT_HEADERSdefault_headersr&   )
issubclassr   r   osgetenv)r   r)   security_dictr&   r&   r'   get_security_from_envV   s   



r4   r   r   r   c                 C   s   t |ts	td|jj}|D ]7}|| }t|t}|d u s!|js"qt||}|j	dkr>|j
dkr>t |ts>t| |  d S t| |||| qd S )Nz(security option must be a pydantic modelhttpr   )r   r   r   r   r   r   r
   r   r   scheme_typer   _parse_basic_auth_schemer   )r   r   r   
opt_fieldsr"   	opt_fieldr%   r$   r&   r&   r'   r   k   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 )Nr5   r   r   )r6   r   r   r   r7   r   r   r   r
   r;   r   _parse_security_scheme_value)r   r   r:   r;   r   r6   r   scheme_fieldsr"   scheme_fieldr%   r$   r&   r&   r'   r      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rj|d	krVt|| |< d S |d
kr`|| |< d S |dkrfd S tdtd)NapiKeyheaderqueryz!sub type {sub_type} not supportedopenIdConnectoauth2client_credentialsr5   bearerr   r   z'scheme type {scheme_type} not supported)r6   r   get_field_name
ValueError_apply_bearer)	r   r   r:   r?   r;   r$   r6   r   header_namer&   r&   r'   r<      s0   
r<   tokenc                 C   s   |   dr	| pd|  S )Nzbearer zBearer )lower
startswith)rK   r&   r&   r'   rI      s   rI   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   rO   rP   r=   r"   r>   r%   r;   r$   datar&   r&   r'   r7      s&   


r7   )N)__doc__rT   typingr   r   r   r   r   pydanticr   pydantic.fieldsr   r%   r
   r   r1   strr(   r4   r   r   r<   rI   r7   r&   r&   r&   r'   <module>   sb   

0



%

&