
    f2                         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
  G d d      Zd Z G d	 d
e      Z e
j                  e      Z e	j                  e      Zy)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OAuth2LoginViewc                   (    e Zd ZdZdZdZdZdZdZdZ	y)	RegionapaccneukrseatwusN)
__name__
__module____qualname__APACCNEUKRSEATWUS     j/var/www/cs2snipe.com/venv/lib/python3.12/site-packages/allauth/socialaccount/providers/battlenet/views.pyr
   r
      s%    D	B	B	B
C	B	Br   r
   c                 x   	 | j                         }| j                  dk\  sd|v r^|j                  dd      xs |j                  dd      }|j                  dd      xs |j                  dd      }t        d|d	|d
      d|vrt        d|z        |S # t        $ r t        d| j                  z        w xY w)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_errorsr/   %   s    T}} s"go "%=&")=xx+R0JDHHXr4JEFF
 4@DIJJK3  T@HMMRSSTs   B "B9c                       e Zd ZdZd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
    	battlenetc                 r   | j                   j                  j                  dd      j                         }|t        j
                  k(  rt        j                  S || j                  v r|S t        t        di       j                  di       j                  dd      }|| j                  v r|S t        j                  S )Nregionr!   SOCIALACCOUNT_PROVIDERSr2   REGIONr   )
requestGETr+   lowerr
   r   r   valid_regionsgetattrr   selfr4   s     r   battlenet_regionz'BattleNetOAuth2Adapter.battlenet_regionZ   s     !!%%h399;VZZ99T'''M H7<Sb!S4  	 T'''Myyr   c                 L    | j                   }|t        j                  k(  ry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'    &&VYY1&&11r   c                      | j                   dz   S )Nz/oauth/tokenr@   r=   s    r   access_token_urlz'BattleNetOAuth2Adapter.access_token_urlw   s    &&77r   c                      | j                   dz   S )Nz/oauth/authorizerB   rC   s    r   authorize_urlz$BattleNetOAuth2Adapter.authorize_url{   s    &&);;;r   c                      | j                   dz   S )Nz/oauth/userinforB   rC   s    r   profile_urlz"BattleNetOAuth2Adapter.profile_url   s    &&):::r   c                     d|j                   i}t               j                         j                  | j                  |      }t        |      }| j                  |d<   | j                         j                  ||      S )Naccess_token)paramsr4   )	tokenr   get_requests_sessionr+   rH   r/   r>   get_providersociallogin_from_response)r=   r7   apprL   kwargsrK   r,   r-   s           r   complete_loginz%BattleNetOAuth2Adapter.complete_login   sr     %++.M..044T5E5Ef4U 	 X& ..X  "<<WdKKr   c                     t         t        |   ||      }|j                  j	                  dd      j                         }|r|| j                  v r|d|z  z  }|S )Nr4   r!   z
?region=%s)superr1   get_callback_urlr8   r+   r9   r:   )r=   r7   rP   rr4   	__class__s        r   rU   z'BattleNetOAuth2Adapter.get_callback_url   sX    ($@#N2.446f 2 22((Ar   )r   r   r   __doc__provider_idr
   r   r   r   r   r   r   r   r:   propertyr>   r@   rD   rF   rH   rR   rU   __classcell__)rW   s   @r   r1   r1   D   s     K 							

				M  * 2 2 8 8 < < ; ;
L r   r1   N)rX   django.confr   allauth.socialaccount.adapterr   -allauth.socialaccount.providers.oauth2.clientr   ,allauth.socialaccount.providers.oauth2.viewsr   r   r   r
   r/   r1   adapter_viewoauth2_loginoauth2_callbackr   r   r   <module>rc      sf    ! 5 E  >Q] Qh ,++,BC1$112HIr   