Ë
    ˆuOj¤  ã                   óø  — d dl mZmZmZmZmZ d dlmZ d dlm	Z	 d dl
mZmZmZ d dlmZ d dlm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mZmZmZm Z m!Z!  e ee«      g¬	«      Z"d
ede#ee$f   fd„Z%dede&fd„Z'de(defd„Z)e"jU                  ded¬«      defd„«       Z+e"jY                  dedz  d¬«       ee«      fdefd„«       Z-e"jU                  deej\                  d¬«       ee«      fdededefd„«       Z/y) é    )Ú	APIRouterÚDependsÚHTTPExceptionÚRequestÚstatus)ÚSession©Úrun_task)ÚHudlCredentialsÚLoginVerificationErrorÚcanonical_hudl_login_url)Úrequire_auth)Úget_db)ÚAccountCreateSchemaÚAccountIngestResponseSchemaÚAccountResponseSchemaÚAccountVerifySchemaÚHudlCredentialsSchemaÚPlaywrightVerificationSchema)ÚDEFAULT_HUDL_LOGIN_URLÚcreate_accountÚget_account_by_account_idÚget_active_accountÚresolve_account_fieldsÚto_account_ingest_responseÚto_account_responseÚupsert_account)ÚdependenciesÚcredentialsÚreturnc                 óv   — | j                   xs t        }t        | j                  | j                  |¬«      }||fS )N©ÚemailÚpasswordÚ	login_url)Úhudl_login_urlr   r   Ú
hudl_emailÚhudl_password)r   r%   Úcredss      ú@/var/www/html/sergio/sergio-backend/app/routes/account_routes.pyÚ_credentials_from_schemar+      sA   € ð ×*Ñ*ÒDÔ.D€IÜØ×$Ñ$Ø×*Ñ*Øô€Eð
 �)ÐÐó    r)   c              ƒ   ó8   K  — t        d| ¬«      ƒ d {  –—† S 7 Œ­w)NÚverify_credentials)r   r	   )r)   s    r*   Ú_run_playwright_verificationr/   *   s   è ø€ ÜÐ.¸EÔB×BÐBÐBús   ‚“”Úexcc                 ó  — t        | t        «      r$t        t        j                  t        | «      ¬«      S t        | t        «      r$t        t        j                  t        | «      ¬«      S t        t        j                  d¬«      S )N©Ústatus_codeÚdetailz#Hudl credential verification failed)Ú
isinstancer   r   r   ÚHTTP_400_BAD_REQUESTÚstrÚ
ValueErrorÚHTTP_500_INTERNAL_SERVER_ERROR)r0   s    r*   Ú_http_error_from_verificationr:   .   sn   € Ü�#Ô-Ô.ÜÜ×3Ñ3Ü�s“8ô
ð 	
ô �#”zÔ"ÜÜ×3Ñ3Ü�s“8ô
ð 	
ô Ü×9Ñ9Ø4ôð r,   z/accounts/verifyz+Live Hudl verify (Playwright only, no save))Úresponse_modelÚsummaryÚbodyc              ƒ   óò   K  — t        | j                  «      \  }}	 t        |«      ƒ d {  –—† }t        di |¤ŽS 7 Œ# t        t        f$ r}t        |«      |‚d }~wt        $ r}t        |«      |‚d }~ww xY w­w)N© )r+   r   r/   r   r8   r:   Ú	Exceptionr   )r=   r)   Ú_Úresultr0   s        r*   Úverify_account_credentialsrC   ?   sz   è ø€ ô (¨×(8Ñ(8Ó9�H€Eˆ1ð:Ü3°EÓ:×:ˆô (Ñ1¨&Ñ1Ð1ð ;ùÜ"¤JÐ/ò :Ü+¨CÓ0°cÐ9ûÜò :Ü+¨CÓ0°cÐ9ûð:üs=   ‚A7œ< ª:«< ¯A7º< ¼A4ÁAÁA4Á#A/Á/A4Á4A7z/accounts/activeNz1Get the active stored Hudl account (no passwords)Údbc              ƒ   ó<   K  — t        | «      }|sy t        |«      S ­w)N)r   r   )rD   Úaccounts     r*   Úget_active_account_apirG   Q   s#   è ø€ ô ! Ó$€GÙØÜ˜wÓ'Ð'ùs   ‚z	/accountsz<Ingest account: validate, Playwright verify, encrypt & store)r;   r3   r<   Úrequestc           	   ƒ   ó   K  — t        | j                  j                  | j                  | j                  «      \  }}t        | j                  «      \  }}t        |«      }t        |j                  |j                  |¬«      }	 t        |«      ƒ d {  –—† }d }	| j                  r| j                  j!                  d¬«      }		 t#        |||| j                  j                  | j                  j$                  ||	¬«      }
t/        |
||j0                  j2                  ¬«      S 7 Œ‹# t        t        f$ r}t        |«      |‚d }~wt        $ r}t        |«      |‚d }~ww xY w# t        $ r*}t'        t(        j*                  t-        |«      ¬«      |‚d }~ww xY w­w)Nr"   T)Úexclude_none)Ú
account_idÚnamer'   r(   r&   Úmetadatar2   )Úrequest_host)r   r   r'   rK   rL   r+   r   r   r#   r$   r/   r   r8   r:   r@   rM   Ú
model_dumpr   r(   r   r   r9   r7   r   ÚurlÚhostname)r=   rH   rD   rK   rL   r)   r%   Úverificationr0   rM   rF   s              r*   Úingest_accountrS   ]   su  è ø€ ô .Ø×Ñ×#Ñ#Ø�‰Ø�	‰	óÑ€J�ô 0°×0@Ñ0@ÓAÑ€Eˆ9Ü(¨Ó3€IÜØ�k‰kØ—‘Øô€Eð:Ü9¸%Ó@×@ˆð €HØ‡}‚}Ø—=‘=×+Ñ+¸Ð+Ó>ˆðÜ ØØ!ØØ×'Ñ'×2Ñ2Ø×*Ñ*×8Ñ8Ø$Øô
ˆô &ØØØ—[‘[×)Ñ)ôð ð5 AùÜ"¤JÐ/ò :Ü+¨CÓ0°cÐ9ûÜò :Ü+¨CÓ0°cÐ9ûð:ûô" ò ÜÜ×=Ñ=Ü�s“8ô
ð ð	ûðüsl   ‚A>FÂD ÂDÂD Â*FÂ?:E Ã9"FÄD ÄEÄ,D8Ä8EÅEÅEÅFÅ	FÅ!%FÆFÆF)0Úfastapir   r   r   r   r   Úsqlalchemy.ormr   Úapp.automation.runnerr
   Úapp.automation.tasks.loginr   r   r   Úapp.core.auth_depsr   Úapp.core.databaser   Úapp.schemas.account_schemar   r   r   r   r   r   Úapp.services.account_servicer   r   r   r   r   r   r   r   ÚrouterÚtupler7   r+   Údictr/   r@   r:   ÚpostrC   ÚgetrG   ÚHTTP_201_CREATEDrS   r?   r,   r*   Ú<module>rb      s\  ðß FÕ FÝ "å *ß hÑ hÝ +Ý $÷÷ ÷	÷ 	ó 	ñ 
¡¨Ó!6Ð 7Ô	8€ð	Ø&ð	à
ˆ?˜CÐÑ ó	ðC¨oð CÀ$ó Cð yð °]ó ð" ‡�ØØ/Ø9ð ó ð

2Ð+>ò 
2óð

2ð ‡�ØØ(¨4Ñ/Ø?ð ó ñ
 07°v«ñ ( Wò (óð
(ð ‡�ØØ.Ø×'Ñ'ØJð	 ó ñ ˜&“/ñ3Ø
ð3àð3ð 	ò3óñ3r,   