
    )Jf,                     j    d dl Z d dlmZ d dlmZ d dlmZ  G d de          Z G d de	          Z
dS )	    N)	parse_qsl)	urlencode)get_adapterc                       e Zd ZdS )OAuth2ErrorN)__name__
__module____qualname__     p/home/alex/cs2snipeproduction/venv/lib/python3.11/site-packages/allauth/socialaccount/providers/oauth2/client.pyr   r   	   s        Dr   r   c                   0    e Zd Z	 	 	 ddZd Zd	dZd ZdS )
OAuth2Client NFc                     || _         || _        || _        || _        || _        || _        |                    t          |                    | _        d | _	        |	| _
        |
| _        d S N)requestaccess_token_methodaccess_token_urlcallback_urlconsumer_keyconsumer_secretjoinsetscopestateheaders
basic_auth)selfr   r   r   r   r   r   r   scope_delimiterr   r   s              r   __init__zOAuth2Client.__init__   sg     #6  0((.$))#e**55

$r   c                     | j         | j        | j        dd}| j        r
| j        |d<   |                    |           |dt          |          S )Ncode)	client_idredirect_urir   response_typer   ?)r   r   r   r   updater   )r   authorization_urlextra_paramsparamss       r   get_redirect_urlzOAuth2Client.get_redirect_url&   sg    * -Z#	
 
 : 	)"jF7Ol###+++Yv->->->??r   c                    | j         d|d}| j        r+t          j                            | j        | j                  }n$d }|                    | j        | j        d           d }|                     |           | j	        }| j
        dk    r|}d }|r|r||d<   t                                                                          | j
        |||| j        |          }d }|j        dv rs|j        d                             d	          d
         dk    s|j        d d         dk    r|                                }n!t'          t)          |j                            }|rd|vrt+          d|j        z            |S )Nauthorization_code)r%   
grant_typer#   )r$   client_secretGETcode_verifier)r+   datar   auth)      zcontent-type;r   zapplication/json   z{"access_tokenz!Error retrieving access token: %s)r   r   requestsr4   HTTPBasicAuthr   r   r(   _strip_empty_keysr   r   r   get_requests_sessionr   r   status_codesplittextjsondictr   r   content)	r   r#   pkce_code_verifierr3   r4   r+   urlrespr9   s	            r   get_access_tokenzOAuth2Client.get_access_token2   s    -.
 

 ? 		=..t/@$BVWWDDDKK!%!2%)%9    t$$$##u,,FD 	7& 	7$6D! MM!!##W(    	 z)) ^,22377:>PPP9RaR=D((#yy{{#Idi$8$899 	R~\AAADLPQQQr   c                 R    d |                                 D             }|D ]}||= dS )zlAdded because the Dropbox OAuth2 flow doesn't
        work when scope is passed in, which is empty.
        c                 $    g | ]\  }}|d k    |S ) r   ).0kvs      r   
<listcomp>z2OAuth2Client._strip_empty_keys.<locals>.<listcomp>j   s!    888daRr   N)items)r   r+   keyskeys       r   r<   zOAuth2Client._strip_empty_keysf   sA     98fllnn888 	 	Cs	 	r   )r   NFr   )r   r	   r
   r!   r,   rG   r<   r   r   r   r   r      si         % % % %0
@ 
@ 
@2 2 2 2h    r   r   )r:   urllib.parser   django.utils.httpr   allauth.socialaccount.adapterr   	Exceptionr   objectr   r   r   r   <module>rW      s     " " " " " " ' ' ' ' ' ' 5 5 5 5 5 5	 	 	 	 	) 	 	 	_ _ _ _ _6 _ _ _ _ _r   