Ë
    4\Òi›  ã                   óÊ   — d dl m Z mZ d dlZd dlmZ d dlmZ d dlmZm	Z	m
Z
mZ d dlmZ d dlmZ dd	„Zd
ede fd„Zddœdeeef   dedz  dedz  dedz  def
d„Zdedefd„Zy)é    )ÚdatetimeÚtimezoneN)ÚHTTPException)ÚGoogleWorkspaceConnection)Úexpires_at_from_secondsÚis_google_workspace_configuredÚrefresh_google_access_tokenÚutc_now_isoformat)Úget_google_workspace_store)ÚSessionIdentityÚreturnc                  ó2   — t        «       st        dd¬«      ‚y )Ni÷  zfGoogle Workspace non configurato. Imposta GOOGLE_WORKSPACE_CLIENT_ID e GOOGLE_WORKSPACE_CLIENT_SECRET.©Ústatus_codeÚdetail)r   r   © ó    úG/var/www/html/apps/backend-hub/app/services/google_workspace_session.pyÚ"ensure_google_workspace_configuredr      s    € Ü)Ô+ÜØØ{ô
ð 	
ð ,r   Úvaluec                 óL   — t        j                  | j                  dd«      «      S )NÚZz+00:00)r   ÚfromisoformatÚreplace)r   s    r   Úparse_google_workspace_datetimer      s   € Ü×!Ñ! %§-¡-°°XÓ">Ó?Ð?r   )Úconnected_atÚtoken_payloadÚrefresh_tokenÚaccount_emailr   c                óŒ  — | j                  d«      }t        |t        t        f«      st	        dd¬«      ‚| j                  d«      }|st	        dd¬«      ‚t        t        |«      |t        | j                  d«      xs d«      t        | j                  d	«      xs d
«      t        |«      ||xs
 t        «       t        «       ¬«      S )NÚ
expires_inéö  z)Risposta token Google priva di expires_inr   Úaccess_tokenz+Risposta token Google priva di access_tokenÚscopeÚ Ú
token_typeÚBearer)r#   r   r$   r&   Ú
expires_atr   r   Ú
updated_at)	ÚgetÚ
isinstanceÚintÚfloatr   r   Ústrr   r
   )r   r   r   r   r!   r#   s         r   Ú!build_google_workspace_connectionr/      s¶   € ð ×"Ñ" <Ó0€JÜj¤3¬ ,Ô/Ü¨Ð4_Ô`Ð`à ×$Ñ$ ^Ó4€LÙÜ¨Ð4aÔbÐbä$Ü˜Ó&Ø#Ü-×#Ñ# GÓ,Ò2°Ó3Ü}×(Ñ(¨Ó6ÒB¸(ÓCÜ*¨:Ó6Ø#Ø!Ò8Ô%6Ó%8Ü$Ó&ô	ð 	r   Úsessionc              ƒ   óæ  K  — t        «       }|j                  | j                  d¬«      }|€t        dd¬«      ‚t	        |j
                  «      }t        j                  t        j                  «      }||j                  d¬«      kD  r|S |j                  st        dd¬«      ‚	 t        |j                  «      ƒ d {  –—† }t        |t!        |j#                  d«      xs |j                  «      |j$                  |j&                  ¬«      }|j(                  s|j(                  |_        |j+                  | j                  |«       |S 7 Œˆ# t        j                  $ r}t        d	d
|› ¬«      |‚d }~ww xY w­w)NT)Úadopt_legacy_if_neededi™  zNessun account Google collegator   r   )Úmicrosecondz:Refresh token Google non disponibile. Ricollega l'account.r"   zRefresh token Google fallito: r   )r   r   r   )r   Úget_connectionÚ	tenant_idr   r   r(   r   Únowr   Úutcr   r   r	   ÚhttpxÚ	HTTPErrorr/   r.   r*   r   r   r$   Úset_connection)r0   ÚstoreÚ
connectionr(   r6   r   ÚexcÚ	refresheds           r   Ú&get_active_google_workspace_connectionr?   8   sO  è ø€ Ü&Ó(€EØ×%Ñ% g×&7Ñ&7ÐPTÐ%ÓU€JØÐÜ¨Ð4UÔVÐVä0°×1FÑ1FÓG€JÜ
,‰,”x—|‘|Ó
$€CØC—K‘K¨AKÓ.Ò.ØÐà×#Ò#Ü¨Ð4pÔqÐqðeÜ9¸*×:RÑ:RÓS×Sˆô 2ØÜ˜-×+Ñ+¨OÓ<ÒXÀ
×@XÑ@XÓYØ ×.Ñ.Ø×,Ñ,ô	€Ið ?Š?Ø$×*Ñ*ˆ	ŒØ	×Ñ˜×*Ñ*¨IÔ6ØÐð TùÜ?‰?ò eÜ¨Ð6TÐUXÐTYÐ4ZÔ[ÐadÐdûðeüs=   ‚BE1Â"E Â:EÂ;E Â?BE1ÅE ÅE.ÅE)Å)E.Å.E1)r   N)r   r   r8   Úfastapir   Úapp.models.google_workspacer   Ú$app.services.google_workspace_clientr   r   r	   r
   Ú#app.services.google_workspace_storer   Úapp.services.tenant_storer   r   r.   r   ÚdictÚobjectr/   r?   r   r   r   ú<module>rG      s¢   ðß 'ã Ý !å A÷ó õ KÝ 5ó
ð@¨3ð @°8ó @ð  $òØ˜˜V˜Ñ$ðð ˜‘:ðð ˜‘:ð	ð
 ˜‘*ðð óð6¸/ð ÐNgô r   