U
    UtiH                     @   s   d dl Z d dlmZmZmZmZmZmZ d dlm	Z	m
Z
mZ d dlmZ edeZeedddZeeed	d
dZejddddd Zejddddd Zejddgdddd ZdS )    N)	Blueprintrequestsessionredirectflashurl_for)build_authorize_urlexchange_code_for_tokenquery_creator_info)
save_tokenZoauth)sreturnc                 C   s   | pd   } g }d}| D ]T}d|  kr4dksNn d|  krJdkr^n n|| d}q|s|d d}qd| d}|pd	S )
z[
    ASCII-ish slug without extra deps (Python 3.8).
    Keeps it stable and URL-safe.
     Faz09-TZaccount)striplowerappendjoin)r   outZ	prev_dashchZslug r   2/var/www/html/luxverbi-app/app/blueprints/oauth.py_slug   s    .

r   )nicknameopen_idr   c                 C   s&   |pddd pd}t |  d| S )z
    Human-friendly alias, but collision-resistant and stable:
      <slug(nickname)>-<last6(open_id)>
    Example: luxverbi-3fa91c
    r   iNZ000000r   )r   )r   r   tailr   r   r   build_alias_from_channel!   s    r    z/loginlogin)endpointc                  C   s:   t jdpd } td}|td< | td< tt|S )z
    /login?alias=... is still supported as an override,
    but by default we will generate a channel-based alias after OAuth callback.
    aliasr      oauth_stateoauth_alias_requested)	r   argsgetr   secrets	token_hexr   r   r   )r#   stater   r   r   r!   +   s
    
z/tiktok/callbacktiktok_callbackc            
   
   C   sj  t jd} | r,td|  d ttdS t jd}t jd}|rZ|rZ|tdkrptdd ttdS zt|}|td< d	t_td
pd	 }|}|s|pi dpd}z(t
|dpd}|pi dpd}W n tk
r   d}Y nX t||}|td< t|| td| dd W n4 tk
r\ }	 ztd|	 d W 5 d }	~	X Y nX ttdS )NerrorzTikTok error: ui.app_homecoder+   r%   z$Invalid OAuth state or missing code.tiktok_tokenTr&   r   r   access_tokencreator_nicknameZtiktokoauth_aliasz$Successfully connected with TikTok (z).successzError exchanging code: )r   r'   r(   r   r   r   r   r	   modifiedr   r
   	Exceptionr    r   )
r-   r/   r+   
token_dataZ	requestedr#   r   creatorr   er   r   r   r,   9   s:    



"z/logoutPOSTlogout)methodsr"   c                   C   s:   t dd  t dd  t dd  tdd ttdS )Nr0   draftsr&   zDisconnected.r4   r.   )r   popr   r   r   r   r   r   r   r;   e   s
    
)r)   flaskr   r   r   r   r   r   tiktok_clientr   r	   r
   token_storer   __name__bpstrr   r    router!   r,   r;   r   r   r   r   <module>   s    



+