
    )Jfb                         d Z ddlmZ ddlmZ ddlmZ ddlmZm	Z	m
Z
 ddlmZ  G d d	          Zd
 Z G d de          Z e
j        e          Z e	j        e          ZdS )aT  
OAuth2 Adapter for Battle.net

Resources:

* Battle.net OAuth2 documentation:
    https://dev.battle.net/docs/read/oauth
* Battle.net API documentation:
    https://dev.battle.net/io-docs
* Original announcement:
    https://us.battle.net/en/forum/topic/13979297799
* The Battle.net API forum:
    https://us.battle.net/en/forum/15051532/
    )settings)get_adapter)OAuth2Error)OAuth2AdapterOAuth2CallbackViewOAuth2LoginView   )BattleNetProviderc                   *    e Zd ZdZdZdZdZdZdZdZ	dS )	RegionapaccneukrseatwusN)
__name__
__module____qualname__APACCNEUKRSEATWUS     r/home/alex/cs2snipeproduction/venv/lib/python3.11/site-packages/allauth/socialaccount/providers/battlenet/views.pyr   r      s1        D	B	B	B
C	B	BBBr   r   c                    	 |                                  }n%# t          $ r t          d| j        z            w xY w| j        dk    sd|v rn|                    dd          p|                    dd          }|                    dd          p|                    dd          }t          d|d	|d
          d|vrt          d|z            |S )Nz$Invalid JSON from Battle.net API: %ri  error typeerror_descriptiondetailzBattle.net error: z ()idz$Invalid data from Battle.net API: %r)json
ValueErrorr   textstatus_codeget)responsedatar"   descs       r    _check_errorsr1   &   s    T}} T T T@HMRSSST s""goo "%%=&")=)=xx+R00JDHHXr4J4JkEFFF
 4@DIJJJKs    "9c                        e Zd ZdZej        Zej        ej	        ej
        ej        ej        ej        ej        fZed             Zed             Zed             Zed             Zed             Zd Z fdZ xZS )	BattleNetOAuth2Adapterz
    OAuth2 adapter for Battle.net
    https://dev.battle.net/docs/read/oauth

    Region is set to us by default, but can be overridden with the
    `region` GET parameter when performing a login.
    Can be any of eu, us, kr, sea, tw or cn
    c                 ^   | j         j                            dd                                          }|t          j        k    rt          j        S || j        v r|S t          t          di                               di                               dd          }|| j        v r|S t          j        S )Nregionr#   SOCIALACCOUNT_PROVIDERS	battlenetREGIONr   )
requestGETr-   lowerr   r   r   valid_regionsgetattrr   selfr5   s     r    battlenet_regionz'BattleNetOAuth2Adapter.battlenet_regionZ   s     !%%h3399;;VZ9T'''M H7<<Sb!!S4   	 T'''Myr   c                 >    | j         }|t          j        k    rdS d|z  S )Nzhttps://www.battlenet.com.cnzhttps://%s.battle.net)r@   r   r   r>   s     r    battlenet_base_urlz)BattleNetOAuth2Adapter.battlenet_base_urlp   s(    &VY11&&11r   c                     | j         dz   S )Nz/oauth/tokenrB   r?   s    r    access_token_urlz'BattleNetOAuth2Adapter.access_token_urlw   s    &77r   c                     | j         dz   S )Nz/oauth/authorizerD   rE   s    r    authorize_urlz$BattleNetOAuth2Adapter.authorize_url{   s    &);;;r   c                     | j         dz   S )Nz/oauth/userinforD   rE   s    r    profile_urlz"BattleNetOAuth2Adapter.profile_url   s    &):::r   c                 
   d|j         i}t                                                                          | j        |          }t          |          }| j        |d<   |                                                     ||          S )Naccess_token)paramsr5   )	tokenr   get_requests_sessionr-   rJ   r1   r@   get_providersociallogin_from_response)r?   r9   apprN   kwargsrM   r.   r/   s           r    complete_loginz%BattleNetOAuth2Adapter.complete_login   s{     %+.MM..0044T5Ef4UU 	 X&& .X  ""<<WdKKKr   c                     t          t          |                               ||          }|j                            dd                                          }|r|| j        v r|d|z  z  }|S )Nr5   r#   z
?region=%s)superr3   get_callback_urlr:   r-   r;   r<   )r?   r9   rR   rr5   	__class__s        r    rW   z'BattleNetOAuth2Adapter.get_callback_url   sm    ($//@@#NN2..4466 	)f 222((Ar   )r   r   r   __doc__r
   r(   provider_idr   r   r   r   r   r   r   r   r<   propertyr@   rB   rF   rH   rJ   rT   rW   __classcell__)rY   s   @r    r3   r3   E   s         $&K			
		M   X* 2 2 X2 8 8 X8 < < X< ; ; X;
L 
L 
L        r   r3   N)rZ   django.confr   allauth.socialaccount.adapterr   -allauth.socialaccount.providers.oauth2.clientr   ,allauth.socialaccount.providers.oauth2.viewsr   r   r   providerr
   r   r1   r3   adapter_viewoauth2_loginoauth2_callbackr   r   r    <module>rf      s$    !           5 5 5 5 5 5 E E E E E E          ( ' ' ' ' '         >P P P P P] P P Pf ,+,BCC1$12HIIr   