
    l8'h                    t   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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        T/var/www/html/trade_iq/venv/lib/python3.12/site-packages/pymongo/auth_oidc_shared.pyr   r      s&    K#D1Hm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#(#6M=6&+D&9H#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'    */*==#(#6M=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   r4   r   r5   r6   listr8   r9   r   r   r   r   r3   r3   <   sY    ',T':H$:-24-@N*@!&t!4K4$T:M9:$)$$7NM7Hcr   r3      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    ZZ^^$56
[  * 	G%388:3C3C3EF	G 	G 	G   (A**A3Nr-   r   r   r   r,   r   r   r   r@   r@   O       Gr   r@   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 setrC   rD   rL   s       r   r,   z_OIDCAWSCallback.fetch[   sd    ZZ^^$AB
f  * 	G%388:3C3C3EF	G 	G 	GrO   Nr-   rP   r   r   r   rS   rS   Z   rQ   r   rS   c                      e Zd ZddZddZy)_OIDCAzureCallbackc                $    t        |      | _        y Nr   r9   r*   r9   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   r9   r   r   r$   r*   r+   resps      r   r,   z_OIDCAzureCallback.fetchi   s>    "4#6#68H8H'JaJab!n-$|BT
 	
r   Nr9   r   r.   Noner-   r   r   r   r\   r,   r   r   r   rW   rW   e   s    4
r   rW   c                      e Zd ZddZddZy)_OIDCGCPCallbackc                $    t        |      | _        y rY   rZ   r[   s     r   r\   z_OIDCGCPCallback.__init__q   r]   r   c                `    t        | j                  |j                        }t        |d         S )Nr%   rC   )r	   r9   r   r$   r`   s      r   r,   z_OIDCGCPCallback.fetcht   s*     !4!4g6M6MN!tN/CDDr   Nrb   r-   rd   r   r   r   rf   rf   p   s    4Er   rf   )r/   
__future__r   r0   rE   dataclassesr   r   typingr   urllib.parser   pymongo._azure_helpersr   pymongo._gcp_helpersr	   r   r   r$   ABCr(   r3   TOKEN_BUFFER_MINUTESHUMAN_CALLBACK_TIMEOUT_SECONDSCALLBACK_VERSION MACHINE_CALLBACK_TIMEOUT_SECONDSTIME_BETWEEN_CALLS_SECONDSr@   rS   rW   rf   r   r   r   <module>ru      s     M " 
 	 (   6 2 = = = : : : 7 7 7>377 >    < !'  #%    G GG| G
 
E| Er   