Ë
    Ü_ËiŒ  ã                  ó’  — d Z ddlmZ ddlZddlZddlmZmZ ddlm	Z	 ddl
mZ ddlmZ ddlmZ e G d	„ d
«      «       Ze G d„ d«      «       Ze G d„ d«      «       Z G d„ dej&                  «      Ze G d„ d«      «       Z	 dZdZdZdZdZ G d„ de«      Z G d„ de«      Z G d„ de«      Z G d„ de«      Z G d „ d!e«      Zd#d"„Z y)$zFConstants, types, and classes shared across OIDC auth implementations.é    )ÚannotationsN)Ú	dataclassÚfield)ÚOptional)Úquote)Ú_get_azure_response)Ú_get_gcp_responsec                  óP   — e Zd ZU ded<    ed¬«      Zded<    ed¬«      Zded<   y)	ÚOIDCIdPInfoÚstrÚissuerN©ÚdefaultúOptional[str]ÚclientIdzOptional[list[str]]ÚrequestScopes)Ú__name__Ú
__module__Ú__qualname__Ú__annotations__r   r   r   © ó    ú[/var/www/pod-logistic/pod-api/venv/lib/python3.12/site-packages/pymongo/auth_oidc_shared.pyr   r      s&   … àƒKÙ#¨DÔ1€HˆmÓ1Ù).°tÔ)<€MÐ&Ô<r   r   c                  ód   — e Zd ZU ded<   ded<   ded<    ed¬«      Zd	ed
<    ed¬«      Zded<   y)ÚOIDCCallbackContextÚfloatÚtimeout_secondsr   ÚusernameÚintÚversionNr   r   Úrefresh_tokenzOptional[OIDCIdPInfo]Úidp_info)r   r   r   r   r   r!   r"   r   r   r   r   r   $   s1   … àÓØƒMØƒLÙ#(°Ô#6€M�=Ó6Ù&+°DÔ&9€HÐ#Ô9r   r   c                  óP   — e Zd ZU ded<    ed¬«      Zded<    ed¬«      Zded<   y)	ÚOIDCCallbackResultr   Úaccess_tokenNr   zOptional[float]Úexpires_in_secondsr   r!   )r   r   r   r   r   r&   r!   r   r   r   r$   r$   -   s'   … àÓÙ*/¸Ô*=Ð˜Ó=Ù#(°Ô#6€M�=Ô6r   r$   c                  ó6   — e Zd ZdZej
                  dd„«       Zy)ÚOIDCCallbackz)A base class for defining OIDC callbacks.c                 ó   — y)z/Convert the given BSON value into our own type.Nr   ©ÚselfÚcontexts     r   ÚfetchzOIDCCallback.fetch7   s   � r   N©r,   r   Úreturnr$   )r   r   r   Ú__doc__ÚabcÚabstractmethodr-   r   r   r   r(   r(   4   s   „ Ù3à×Ñò>ó ñ>r   r(   c                  ó¨   — e Zd ZU  ed¬«      Zded<    ed¬«      Zded<    ed¬«      Zded<    ee¬«      Z	d	ed
<    ed¬«      Z
ded<   dZded<   y)Ú_OIDCPropertiesNr   zOptional[OIDCCallback]ÚcallbackÚhuman_callbackr   Úenvironment)Údefault_factoryz	list[str]Úallowed_hostsÚtoken_resourceÚ r   r   )r   r   r   r   r5   r   r6   r7   Úlistr9   r:   r   r   r   r   r4   r4   <   sY   … á',°TÔ':€HÐ$Ó:Ù-2¸4Ô-@€NÐ*Ó@Ù!&¨tÔ!4€K�Ó4Ù$°TÔ:€M�9Ó:Ù$)°$Ô$7€N�MÓ7Ø€HˆcÔr   r4   é   i,  é   é<   gš™™™™™¹?c                  ó   — e Zd Zdd„Zy)Ú_OIDCTestCallbackc                óì   — t         j                  j                  d«      }|st        d«      ‚t	        |«      5 }t        |j                  «       j                  «       ¬«      cd d d «       S # 1 sw Y   y xY w)NÚOIDC_TOKEN_FILEzIMONGODB-OIDC with an "test" provider requires "OIDC_TOKEN_FILE" to be set©r%   ©ÚosÚenvironÚgetÚRuntimeErrorÚopenr$   ÚreadÚstrip©r+   r,   Ú
token_fileÚfids       r   r-   z_OIDCTestCallback.fetchP   sd   € Ü—Z‘Z—^‘^Ð$5Ó6ˆ
ÙÜØ[óð ô �*Óð 	G Ü%°3·8±8³:×3CÑ3CÓ3EÔF÷	G÷ 	Gò 	Gúó   ¸(A*Á*A3Nr.   ©r   r   r   r-   r   r   r   rA   rA   O   ó   „ ôGr   rA   c                  ó   — e Zd Zdd„Zy)Ú_OIDCAWSCallbackc                óì   — t         j                  j                  d«      }|st        d«      ‚t	        |«      5 }t        |j                  «       j                  «       ¬«      cd d d «       S # 1 sw Y   y xY w)NÚAWS_WEB_IDENTITY_TOKEN_FILEzTMONGODB-OIDC with an "aws" provider requires "AWS_WEB_IDENTITY_TOKEN_FILE" to be setrD   rE   rM   s       r   r-   z_OIDCAWSCallback.fetch[   sd   € Ü—Z‘Z—^‘^Ð$AÓBˆ
ÙÜØfóð ô �*Óð 	G Ü%°3·8±8³:×3CÑ3CÓ3EÔF÷	G÷ 	Gò 	GúrP   Nr.   rQ   r   r   r   rT   rT   Z   rR   r   rT   c                  ó   — e Zd Zdd„Zdd„Zy)Ú_OIDCAzureCallbackc                ó$   — t        |«      | _        y ©N©r   r:   ©r+   r:   s     r   Ú__init__z_OIDCAzureCallback.__init__f   ó   € Ü# NÓ3ˆÕr   c                ó~   — t        | j                  |j                  |j                  «      }t	        |d   |d   ¬«      S )Nr%   Ú
expires_in)r%   r&   )r   r:   r   r   r$   ©r+   r,   Úresps      r   r-   z_OIDCAzureCallback.fetchi   s>   € Ü" 4×#6Ñ#6¸×8HÑ8HÈ'×JaÑJaÓbˆÜ!Ø˜nÑ-À$À|ÑBTô
ð 	
r   N©r:   r   r/   ÚNoner.   ©r   r   r   r]   r-   r   r   r   rX   rX   e   s   „ ó4ô
r   rX   c                  ó   — e Zd Zdd„Zdd„Zy)Ú_OIDCGCPCallbackc                ó$   — t        |«      | _        y rZ   r[   r\   s     r   r]   z_OIDCGCPCallback.__init__q   r^   r   c                ó`   — t        | j                  |j                  «      }t        |d   ¬«      S )Nr%   rD   )r	   r:   r   r$   ra   s      r   r-   z_OIDCGCPCallback.fetcht   s*   € Ü  ×!4Ñ!4°g×6MÑ6MÓNˆÜ!¨t°NÑ/CÔDÐDr   Nrc   r.   re   r   r   r   rg   rg   p   s   „ ó4ôEr   rg   c                  ó   — e Zd Zdd„Zy)Ú_OIDCK8SCallbackc                ó*   — t        t        «       ¬«      S )NrD   )r$   Ú_get_k8s_tokenr*   s     r   r-   z_OIDCK8SCallback.fetchz   s   € Ü!¬~Ó/?Ô@Ð@r   Nr.   rQ   r   r   r   rk   rk   y   s   „ ôAr   rk   c                 óÂ   — d} dD ](  }|t         j                  v sŒt         j                  |   } Œ* t        | «      5 }|j                  «       cd d d «       S # 1 sw Y   y xY w)Nz3/var/run/secrets/kubernetes.io/serviceaccount/token)ÚAZURE_FEDERATED_TOKEN_FILErV   )rF   rG   rJ   rK   )ÚfnameÚkeyrO   s      r   rm   rm   ~   sX   € ØA€EØLò $ˆØ”"—*‘*ÒÜ—J‘J˜s‘O‰Eð$ô 
ˆe‹ð ˜Ø�x‰x‹z÷÷ ò ús   »AÁA)r/   r   )!r0   Ú
__future__r   r1   rF   Údataclassesr   r   Útypingr   Úurllib.parser   Úpymongo._azure_helpersr   Úpymongo._gcp_helpersr	   r   r   r$   ÚABCr(   r4   ÚTOKEN_BUFFER_MINUTESÚHUMAN_CALLBACK_TIMEOUT_SECONDSÚCALLBACK_VERSIONÚ MACHINE_CALLBACK_TIMEOUT_SECONDSÚTIME_BETWEEN_CALLS_SECONDSrA   rT   rX   rg   rk   rm   r   r   r   ú<module>r~      s  ðñ  MÝ "ã 
Û 	ß (Ý Ý å 6Ý 2ð ÷=ð =ó ð=ð ÷:ð :ó ð:ð ÷7ð 7ó ð7ô>�3—7‘7ô >ð ÷ð ó ðð <àÐ Ø!'Ð ØÐ Ø#%Ð  Ø Ð ôG˜ô GôG�|ô Gô
˜ô 
ôE�|ô EôA�|ô Aô
r   