Ë
    ½úbjÝ  ã                   óœ   — d dl Z d dlmZmZ d dlmZ  ee«      j                  «       j                  d   dz  dz  Z G d„ d«      Z	 e	«       Z
y)	é    N)ÚdatetimeÚtimezone)ÚPathé   Úbrowser_datazsession_state.jsonc                   ó  — e Zd ZdZefdefd„Zdefd„Zdeddfd„Z	d	e
ddfd
„Zde
dz  fd„Zd	e
ddfd„Zdd„Zde
dz  fd„Zde
ddfd„Zdefd„Zdddœdede
dz  dedz  fd„Zdde
dz  dedz  fd„Zddede
dz  ddfd„Zdd„Zy)ÚSessionStorezHTracks login state in a small JSON file (cookies stay in browser_data/).Úpathc                 ó`   — || _         | j                   j                  j                  dd¬«       y )NT)ÚparentsÚexist_ok)r
   ÚparentÚmkdir)Úselfr
   s     úC/var/www/html/sergio/sergio-backend/app/automation/session_store.pyÚ__init__zSessionStore.__init__   s&   € ØˆŒ	Ø�	‰	×Ñ×Ñ t°dÐÕ;ó    Úreturnc                 óØ   — | j                   j                  «       sddiS 	 t        j                  | j                   j	                  d¬«      «      S # t        j
                  $ r ddicY S w xY w)NÚ	logged_inFúutf-8©Úencoding)r
   ÚexistsÚjsonÚloadsÚ	read_textÚJSONDecodeError©r   s    r   ÚreadzSessionStore.read   sc   € Ø�y‰y×ÑÔ!Ø Ð'Ð'ð	(Ü—:‘:˜dŸi™i×1Ñ1¸7Ð1ÓCÓDÐDøÜ×#Ñ#ò 	(Ø Ð'Ò'ð	(ús    .A ÁA)Á(A)ÚdataNc                 óh   — | j                   j                  t        j                  |d¬«      d¬«       y )Nr   )Úindentr   r   )r
   Ú
write_textr   Údumps©r   r!   s     r   ÚwritezSessionStore.write   s*   € Ø�	‰	×ÑÜ�J‰J�t AÔ&Øð 	õ 	
r   Úurlc                 óÂ   — | j                  «       }d|d<   ||d<   t        j                  t        j                  «      j                  «       |d<   | j                  |«       y )NTr   Úlast_urlÚ
updated_at)r    r   Únowr   ÚutcÚ	isoformatr'   ©r   r(   r!   s      r   Úmark_logged_inzSessionStore.mark_logged_in   sM   € Ø�y‰y‹{ˆØ ˆˆ[ÑØˆˆZÑÜ%Ÿ\™\¬(¯,©,Ó7×AÑAÓCˆˆ\ÑØ�
‰
�4Õr   c                 ó@   — | j                  «       j                  d«      S ©NÚexchanges_url©r    Úgetr   s    r   Úget_exchanges_urlzSessionStore.get_exchanges_url$   s   € Ø�y‰y‹{�‰˜Ó/Ð/r   c                 óP   — | j                  «       }||d<   | j                  |«       y r2   ©r    r'   r/   s      r   Úset_exchanges_urlzSessionStore.set_exchanges_url'   s#   € Ø�y‰y‹{ˆØ #ˆˆ_ÑØ�
‰
�4Õr   c                 óŒ   — | j                  dd t        j                  t        j                  «      j                  «       dœ«       y )NF)r   r*   r+   )r'   r   r,   r   r-   r.   r   s    r   Úmark_logged_outzSessionStore.mark_logged_out,   s2   € Ø�
‰
à"Ø Ü&Ÿl™l¬8¯<©<Ó8×BÑBÓDñõ	
r   c                 ó@   — | j                  «       j                  d«      S ©NÚaccount_holder_namer4   r   s    r   Úget_account_holder_namez$SessionStore.get_account_holder_name5   s   € Ø�y‰y‹{�‰Ð4Ó5Ð5r   Únamec                 óP   — | j                  «       }||d<   | j                  |«       y r=   r8   )r   r@   r!   s      r   Úset_account_holder_namez$SessionStore.set_account_holder_name8   s$   € Ø�y‰y‹{ˆØ&*ˆÐ"Ñ#Ø�
‰
�4Õr   c                 óR   — t        | j                  «       j                  d«      «      S )Nr   )Úboolr    r5   r   s    r   Úis_marked_logged_inz SessionStore.is_marked_logged_in=   s   € Ü�D—I‘I“K—O‘O KÓ0Ó1Ð1r   i  ©Úmax_age_secondsÚteam_idrG   rH   c                óz  — | j                  «       }|j                  d«      }|syt        |xs d«      j                  «       }t        |j                  d«      xs |j                  d«      xs d«      j                  «       }|r|r||k7  ry|dk  r|S |j                  d«      }|s|S 	 t	        j
                  |«      }|j                  € |j                  t        j                  ¬«      }t	        j                  t        j                  «      |z
  j                  «       }	|	|kD  ry	 |S # t        t        f$ r |cY S w xY w)	zBReturn cached storage warning if still fresh (default 30 minutes).Ústorage_warningNÚ Ústorage_warning_team_idrH   r   Ústorage_warning_at)Útzinfo)r    r5   ÚstrÚstripr   ÚfromisoformatrN   Úreplacer   r-   r,   Útotal_secondsÚ	TypeErrorÚ
ValueError)
r   rG   rH   r!   ÚwarningÚwantedÚcached_teamr+   ÚtsÚages
             r   Úget_storage_warningz SessionStore.get_storage_warning@   s$  € ð �y‰y‹{ˆØ—(‘(Ð,Ó-ˆÙØä�W’] Ó#×)Ñ)Ó+ˆÜ˜$Ÿ(™(Ð#<Ó=Ò]ÀÇÁÈYÓAWÒ]Ð[]Ó^×dÑdÓfˆá‘k f°Ò&;Øà˜QÒØˆNØ—X‘XÐ2Ó3ˆ
ÙØˆNð	Ü×'Ñ'¨
Ó3ˆBØ�y‰yÐ Ø—Z‘Z¤x§|¡|�ZÓ4�Ü—<‘<¤§¡Ó-°Ñ2×AÑAÓCˆCØ�_Ò$Øð %ð ˆøô œ:Ð&ò 	ØŠNð	ús   Â(A:D& Ä&D:Ä9D:c                 ó(   — | j                  d|¬«      S )zFReturn cached storage warning regardless of age (for sidebar display).éÿÿÿÿrF   )r[   )r   rH   s     r   Úget_storage_warning_cachedz'SessionStore.get_storage_warning_cached_   s   € à×'Ñ'¸ÀGÐ'ÓLÐLr   rV   c                 óV  — | j                  «       }t        |xs |j                  d«      xs d«      j                  «       xs d }t	        |xs i «      }|r||d<   ||d<   ||d<   t        j                  t        j                  «      j                  «       |d<   | j                  |«       y )NrH   rK   rJ   rL   rM   )r    rO   r5   rP   Údictr   r,   r   r-   r.   r'   )r   rV   rH   r!   ÚtidÚpayloads         r   Úset_storage_warningz SessionStore.set_storage_warningc   s–   € Ø�y‰y‹{ˆÜ�'Ò9˜WŸ[™[¨Ó3Ò9°rÓ:×@Ñ@ÓBÒJÀdˆÜ�w’} "Ó%ˆÙØ!$ˆG�IÑØ")ˆÐÑØ*-ˆÐ&Ñ'Ü%-§\¡\´(·,±,Ó%?×%IÑ%IÓ%KˆÐ!Ñ"Ø�
‰
�4Õr   c                 ó²   — | j                  «       }|j                  dd «       |j                  dd «       |j                  dd «       | j                  |«       y )NrJ   rL   rM   )r    Úpopr'   r&   s     r   Úclear_storage_warningz"SessionStore.clear_storage_warningn   sF   € Ø�y‰y‹{ˆØ�‰Ð" DÔ)Ø�‰Ð*¨DÔ1Ø�‰Ð% tÔ,Ø�
‰
�4Õr   )r   N)N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚSESSION_STATE_FILEr   r   r`   r    r'   rO   r0   r6   r9   r;   r?   rB   rD   rE   Úintr[   r^   rc   rf   © r   r   r	   r	      s  „ ÙRà$6ñ <˜Tó <ð(�dó (ð
˜$ð 
 4ó 
ð #ð ¨$ó ð0 3¨¡:ó 0ð Sð ¨Tó ó

ð6¨¨t©ó 6ð¨Cð °Dó ð
2 Tó 2ð )-ÀDòØ"%ðØ7:¸T±zðà	�‰óñ>M°#¸±*ð MÈÈtÉó Mñ	¨4ð 	¸#À¹*ð 	ÐPTó 	ôr   r	   )r   r   r   Úpathlibr   Ú__file__Úresolver   rk   r	   Úsession_storerm   r   r   Ú<module>rr      sM   ðÛ ß 'Ý á˜(“^×+Ñ+Ó-×5Ñ5°aÑ8¸>ÑIÐL`Ñ`Ð ÷kñ kñ\ “�r   