
    &g                       S r SSKJr  SSKrSSKrSSKJrJr  SSKJ	r	  SSK
Jr  SSKJr  SSKJr  \ " S	 S
5      5       r\ " S S5      5       r\ " S S5      5       r " S S\R&                  5      r\ " S S5      5       r SrSrSrSrSr " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S  S!\5      rS#S" jr g)$zFConstants, types, and classes shared across OIDC auth implementations.    )annotationsN)	dataclassfield)Optional)quote)_get_azure_response)_get_gcp_responsec                  L    \ rS rSr% S\S'   \" SS9rS\S'   \" SS9rS\S	'   S
rg)OIDCIdPInfo   strissuerNdefaultOptional[str]clientIdzOptional[list[str]]requestScopes )	__name__
__module____qualname____firstlineno____annotations__r   r   r   __static_attributes__r       ]C:\Suresh\moveshuttle\MDcreated\moveengine\venv\Lib\site-packages\pymongo/auth_oidc_shared.pyr   r      s&    K#D1Hm1).t)<M&<r   r   c                  `    \ rS rSr% S\S'   S\S'   S\S'   \" SS	9rS
\S'   \" SS	9rS\S'   Srg)OIDCCallbackContext$   floattimeout_secondsr   usernameintversionNr   r   refresh_tokenzOptional[OIDCIdPInfo]idp_infor   )	r   r   r   r   r   r   r%   r&   r   r   r   r   r   r   $   s1    ML#(#6M=6&+D&9H#9r   r   c                  L    \ rS rSr% S\S'   \" SS9rS\S'   \" SS9rS\S	'   S
rg)OIDCCallbackResult-   r   access_tokenNr   zOptional[float]expires_in_secondsr   r%   r   )	r   r   r   r   r   r   r+   r%   r   r   r   r   r(   r(   -   s'    */*==#(#6M=6r   r(   c                  @    \ rS rSrSr\R                  SS j5       rSrg)OIDCCallback4   z)A base class for defining OIDC callbacks.c                    g)z/Convert the given BSON value into our own type.Nr   selfcontexts     r   fetchOIDCCallback.fetch7   s    r   r   Nr2   r   returnr(   )	r   r   r   r   __doc__abcabstractmethodr3   r   r   r   r   r-   r-   4   s    3> >r   r-   c                      \ rS rSr% \" SS9rS\S'   \" SS9rS\S'   \" SS9rS\S'   \" \	S	9r
S
\S'   \" SS9rS\S'   SrS\S'   Srg)_OIDCProperties<   Nr   zOptional[OIDCCallback]callbackhuman_callbackr   environment)default_factoryz	list[str]allowed_hoststoken_resource r   r"   r   )r   r   r   r   r   r=   r   r>   r?   listrA   rB   r"   r   r   r   r   r;   r;   <   sY    ',T':H$:-24-@N*@!&t!4K4$T:M9:$)$$7NM7Hcr   r;      i,     r<   g?c                      \ rS rSrSS jrSrg)_OIDCTestCallbackO   c                    [         R                  R                  S5      nU(       d  [        S5      e[	        U5       n[        UR                  5       R                  5       S9sS S S 5        $ ! , (       d  f       g = f)NOIDC_TOKEN_FILEzIMONGODB-OIDC with an "test" provider requires "OIDC_TOKEN_FILE" to be setr*   osenvirongetRuntimeErroropenr(   readstripr1   r2   
token_filefids       r   r3   _OIDCTestCallback.fetchP   sW    ZZ^^$56
[  *%388:3C3C3EF    %A,,
A:r   Nr5   r   r   r   r   r3   r   r   r   r   rH   rH   O       Gr   rH   c                      \ rS rSrSS jrSrg)_OIDCAWSCallbackZ   c                    [         R                  R                  S5      nU(       d  [        S5      e[	        U5       n[        UR                  5       R                  5       S9sS S S 5        $ ! , (       d  f       g = f)NAWS_WEB_IDENTITY_TOKEN_FILEzTMONGODB-OIDC with an "aws" provider requires "AWS_WEB_IDENTITY_TOKEN_FILE" to be setrL   rM   rU   s       r   r3   _OIDCAWSCallback.fetch[   sW    ZZ^^$AB
f  *%388:3C3C3EF rY   r   Nr5   rZ   r   r   r   r]   r]   Z   r[   r   r]   c                  (    \ rS rSrSS jrSS jrSrg)_OIDCAzureCallbacke   c                $    [        U5      U l        g Nr   rB   r1   rB   s     r   __init___OIDCAzureCallback.__init__f       #N3r   c                x    [        U R                  UR                  UR                  5      n[	        US   US   S9$ )Nr*   
expires_in)r*   r+   )r   rB   r"   r!   r(   r1   r2   resps      r   r3   _OIDCAzureCallback.fetchi   s>    "4#6#68H8H'JaJab!n-$|BT
 	
r   rB   NrB   r   r6   Noner5   r   r   r   r   ri   r3   r   r   r   r   rc   rc   e   s    4
r   rc   c                  (    \ rS rSrSS jrSS jrSrg)_OIDCGCPCallbackp   c                $    [        U5      U l        g rf   rg   rh   s     r   ri   _OIDCGCPCallback.__init__q   rk   r   c                Z    [        U R                  UR                  5      n[        US   S9$ )Nr*   rL   )r	   rB   r!   r(   rn   s      r   r3   _OIDCGCPCallback.fetcht   s*     !4!4g6M6MN!tN/CDDr   rq   Nrr   r5   rt   r   r   r   rv   rv   p   s    4Er   rv   c                      \ rS rSrSS jrSrg)_OIDCK8SCallbacky   c                $    [        [        5       S9$ )NrL   )r(   _get_k8s_tokenr0   s     r   r3   _OIDCK8SCallback.fetchz   s    !~/?@@r   r   Nr5   rZ   r   r   r   r}   r}   y   s    Ar   r}   c                     Sn S H,  nU[         R                  ;   d  M  [         R                  U   n M.     [        U 5       nUR                  5       sS S S 5        $ ! , (       d  f       g = f)Nz3/var/run/secrets/kubernetes.io/serviceaccount/token)AZURE_FEDERATED_TOKEN_FILEr`   )rN   rO   rR   rS   )fnamekeyrW   s      r   r   r   ~   sI    AEL"**JJsOE M 
exxz 
s    A
A()r6   r   )!r7   
__future__r   r8   rN   dataclassesr   r   typingr   urllib.parser   pymongo._azure_helpersr   pymongo._gcp_helpersr	   r   r   r(   ABCr-   r;   TOKEN_BUFFER_MINUTESHUMAN_CALLBACK_TIMEOUT_SECONDSCALLBACK_VERSION MACHINE_CALLBACK_TIMEOUT_SECONDSTIME_BETWEEN_CALLS_SECONDSrH   r]   rc   rv   r}   r   r   r   r   <module>r      s    M " 
 	 (   6 2 = = = : : : 7 7 7>377 >    < !'  #%    G GG| G
 
E| EA| A
r   