o
    ˷e                     @   s   d dl Z d dlZd dlmZ d dlmZmZ d dlmZ d dl	m
Z
mZmZ ddlmZ G dd	 d	e
ZG d
d deZeeZeeZdS )    N)settings)HttpResponseHttpResponseBadRequest)ImmediateHttpResponse)OAuth2AdapterOAuth2CallbackViewOAuth2LoginView   )ShopifyProviderc                   @   sV   e Zd ZejZdZdZdd Zdd Z	e
dd Ze
d	d
 Ze
dd Zdd ZdS )ShopifyOAuth2AdapterF,c                 C   s>   | j jdd}d|vrd|}td|sttd|S )Nshop .z{}.myshopify.comz^[a-z0-9-]+\.myshopify\.com$zInvalid `shop` parameter)requestGETgetformatrematchr   r   )selfr    r   d/var/www/ideatree/venv/lib/python3.10/site-packages/allauth/socialaccount/providers/shopify/views.py_shop_domain   s   
z!ShopifyOAuth2Adapter._shop_domainc                 C   s   |   }d||S )Nzhttps://{}{})r   r   )r   pathr   r   r   r   	_shop_url#   s   zShopifyOAuth2Adapter._shop_urlc                 C   
   |  dS )Nz/admin/oauth/access_tokenr   r   r   r   r   access_token_url'      
z%ShopifyOAuth2Adapter.access_token_urlc                 C   r   )Nz/admin/oauth/authorizer   r   r   r   r   authorize_url+   r    z"ShopifyOAuth2Adapter.authorize_urlc                 C   r   )Nz/admin/shop.jsonr   r   r   r   r   profile_url/   r    z ShopifyOAuth2Adapter.profile_urlc           	      K   sT   ddj |jdi}tj| j|d}| }|d d}|r"||d< |  ||S )NzX-Shopify-Access-Tokenz{token})token)headersresponseassociated_user)r   r#   requestsr   r"   jsonget_providersociallogin_from_response)	r   r   appr#   kwargsr$   r%   
extra_datar&   r   r   r   complete_login3   s   z#ShopifyOAuth2Adapter.complete_loginN)__name__
__module____qualname__r
   idprovider_idsupports_statescope_delimiterr   r   propertyr   r!   r"   r.   r   r   r   r   r      s    


r   c                       s   e Zd Z fddZ  ZS )ShopifyOAuth2LoginViewc                    s   t tdi di dd}|r5t j|g|R i |}	 dddj|jdd	f}t|d
}d|_	|S t j
|g|R i |S )NSOCIALACCOUNT_PROVIDERSshopifyIS_EMBEDDEDFr   z:<!DOCTYPE html><html><head><script type="text/javascript">z#window.top.location.href = "{url}";)urlz$</script></head><body></body></html>)contentT)getattrr   r   superloginjoinr   r;   r   xframe_options_exemptdispatch)r   r   argsr,   is_embeddedr%   js	__class__r   r   rB   >   s"   

zShopifyOAuth2LoginView.dispatch)r/   r0   r1   rB   __classcell__r   r   rF   r   r7   =   s    r7   )r   r'   django.confr   django.httpr   r   allauth.exceptionsr   ,allauth.socialaccount.providers.oauth2.viewsr   r   r   providerr
   r   r7   adapter_viewoauth2_loginoauth2_callbackr   r   r   r   <module>   s    ,
$