o
    &zh                     @   s   d dl mZ d dlmZ d dlmZ d dlmZ d dlm	Z	 d dl
mZmZ dejvr/edG d	d
 d
eZdd Zdd ZG dd deZegZdS )    )settings)ImproperlyConfigured)reverse)	urlencode)get_adapter)OpenIDAccountOpenIDProviderz&allauth.socialaccount.providers.openidzTThe steam provider requires 'allauth.socialaccount.providers.openid' to be installedc                       s,   e Zd Z fddZdd Zdd Z  ZS )SteamAccountc                    s   t t|  }| jjd|S )Npersonaname)superr	   to_straccount
extra_dataget)selfdflt	__class__ i/var/www/html/kangema/venv/lib/python3.10/site-packages/allauth/socialaccount/providers/steam/provider.pyr      s   zSteamAccount.to_strc                 C   s   | j jdS )N
profileurlr   r   r   r   r   r   r   get_profile_url   s   zSteamAccount.get_profile_urlc                 C   s*   | j jdp| j jdp| j jdS )N
avatarfullavatarmediumavatarr   r   r   r   r   get_avatar_url   s
   zSteamAccount.get_avatar_url)__name__
__module____qualname__r   r   r   __classcell__r   r   r   r   r	      s    r	   c                 C   s&   d}|  |st| | t|d  S )Nz%https://steamcommunity.com/openid/id/)
startswith
ValueErrorlen)urlprefixr   r   r   extract_steam_id#   s   
r'   c                 C   sb   d}d}| |d}t   j|| |d}|  | }|di dg }|r-|d S d|iS )	Nzhttps://api.steampowered.com/z$ISteamUser/GetPlayerSummaries/v0002/)keysteamids)paramsresponseplayersr   steamid)r   get_requests_sessionr   raise_for_statusjson)api_keysteam_idapi_basemethodr*   respdata
playerlistr   r   r   request_steam_account_summary*   s   
r8   c                       sZ   e Zd ZdZdZeZdZd fdd	Zdd Z	 fd	d
Z
dd Zdd Zdd Z  ZS )SteamOpenIDProvidersteamSteamTNc                    s,   |d u rt  || j}t j||d d S )N)app)r   get_appidr   __init__)r   requestr<   r   r   r   r?   =   s   zSteamOpenIDProvider.__init__c                 K   s    t d}|r|dt| 7 }|S )Nsteam_login?)r   r   )r   r@   kwargsr%   r   r   r   get_login_urlB   s   z!SteamOpenIDProvider.get_login_urlc                    s0   t |j}| jj}t|||_tt| ||S N)	r'   identity_urlr<   secretr8   _extrar   r9   sociallogin_from_response)r   r@   r+   r2   steam_api_keyr   r   r   rI   H   s   

z-SteamOpenIDProvider.sociallogin_from_responsec                 C   s
   |j d S )Nr-   )rH   r   r+   r   r   r   extract_uidP      
zSteamOpenIDProvider.extract_uidc                 C   s
   |j  S rE   )rH   copyrK   r   r   r   extract_extra_dataS   rM   z&SteamOpenIDProvider.extract_extra_datac                 C   s^   |j dd }|ddkr| \}}n|d}}|j dd}|p)|j d |||dS )Nrealname     r
   r-   )username
first_name	last_name	full_name)rH   r   stripcountsplit)r   r+   rW   rU   rV   rT   r   r   r   extract_common_fieldsV   s   
z)SteamOpenIDProvider.extract_common_fieldsrE   )r   r   r    r>   namer	   account_class	uses_appsr?   rD   rI   rL   rO   r[   r!   r   r   r   r   r9   7   s    r9   N)django.confr   django.core.exceptionsr   django.urlsr   django.utils.httpr   allauth.socialaccount.adapterr   /allauth.socialaccount.providers.openid.providerr   r   INSTALLED_APPSr	   r'   r8   r9   provider_classesr   r   r   r   <module>   s    

0