§
    àißiÈ  ã            
       ó  — 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 d dlZddlmZ ddlmZ dd	lmZ dd
lmZ ddlmZmZ ddlmZ  eddg¬¦  «        Ze                     de	e         ej        ¬¦  «         ee¦  «         ee¦  «        fdede	e         dedefd„¦   «         Ze                     de	e         ¬¦  «         ee¦  «        fdedefd„¦   «         Ze                     d¦  «        de fd„¦   «         Z!dS )é    )Ú	APIRouterÚDependsÚHTTPExceptionÚstatusÚResponse)ÚSession)ÚList)ÚUUIDNé   )Úget_db)ÚStream)ÚChatMessage)ÚUser)ÚChatMessageCreateÚChatMessageResponse)Úget_current_admin_userz/api/streams/{stream_id}/chatÚchat)ÚprefixÚtagsz/upload)Úresponse_modelÚstatus_codeÚ	stream_idÚmessagesÚdbÚcurrent_userc           	   ƒ   óø  K  — |                      t          ¦  «                             t          j        | k    ¦  «                             ¦   «         }|st          t          j        d¬¦  «        ‚g }|D ]Z}t          | |j	        |j
        |j        |j        |j        ¬¦  «        }|                     |¦  «         |                     |¦  «         Œ[|                     ¦   «          |D ]}|                     |¦  «         Œ|S )NúStream not found©r   Údetail)r   ÚusernameÚmessageÚtimestamp_offsetÚcolorÚbadges)Úqueryr   ÚfilterÚidÚfirstr   r   ÚHTTP_404_NOT_FOUNDr   r    r!   r"   r#   r$   ÚaddÚappendÚcommitÚrefresh)	r   r   r   r   ÚstreamÚchat_messagesÚmsg_dataÚchat_msgÚmsgs	            ú/app/app/api/chat.pyÚupload_chatr4      s  è è € ð �XŠX•fÑÔ×$Ò$¥V¤Y°)Ò%;Ñ<Ô<×BÒBÑDÔD€Fàð 
ÝÝÔ1Ø%ð
ñ 
ô 
ð 	
ð €MØð 
'ð 
'ˆÝØØÔ&ØÔ$Ø%Ô6Ø”.Ø”?ð
ñ 
ô 
ˆð 	�ŠˆxÑÔÐØ×Ò˜XÑ&Ô&Ð&Ð&à‡I‚I�K„K€Kð ð ð ˆØ
�
Š
�3‰ŒˆˆàÐó    Ú )r   c              ƒ   ó²  K  — |                      t          ¦  «                             t          j        | k    ¦  «                             ¦   «         }|st          t          j        d¬¦  «        ‚|                      t          ¦  «                             t          j	        | k    ¦  «         
                    t          j        ¦  «                             ¦   «         }|S )Nr   r   )r%   r   r&   r'   r(   r   r   r)   r   r   Úorder_byr"   Úall)r   r   r.   r   s       r3   Úget_chat_messagesr:   7   s²   è è € ð �XŠX•fÑÔ×$Ò$¥V¤Y°)Ò%;Ñ<Ô<×BÒBÑDÔD€Fàð 
ÝÝÔ1Ø%ð
ñ 
ô 
ð 	
ð �xŠx�Ñ$Ô$×+Ò+ÝÔ Ò*ñô ç‚h�{Ô+Ñ,Ô,¯SªS©U¬Uð ð €Or5   z/proxy-imageÚurlc           
   ƒ   ó€  K  — 	 t          j        d¬¦  «        4 ƒd{V —†}|                     | ¦  «        ƒ d{V —†}|j        dk    rt	          |j        d|j        › �¬¦  «        ‚t          |j        |j                             dd¦  «        d	d
dd
dœ¬¦  «        cddd¦  «        ƒd{V —† S # 1 ƒd{V —†swxY w Y   dS # t           j        $ r t	          dd¬¦  «        ‚t           j	        $ r&}t	          ddt          |¦  «        › �¬¦  «        ‚d}~wt          $ r#}t	          dt          |¦  «        ¬¦  «        ‚d}~ww xY w)z8Proxy images (badges, emotes, etc.) to avoid CORS issuesg      $@)ÚtimeoutNéÈ   zFailed to fetch image: r   zcontent-typez	image/pngzpublic, max-age=86400Ú*ÚGET)zCache-ControlzAccess-Control-Allow-OriginzAccess-Control-Allow-MethodszAccess-Control-Allow-Headers)ÚcontentÚ
media_typeÚheadersiø  zImage fetch timeoutiö  iô  )ÚhttpxÚAsyncClientÚgetr   r   r   rA   rC   ÚTimeoutExceptionÚRequestErrorÚstrÚ	Exception)r;   ÚclientÚresponseÚes       r3   Úproxy_imagerN   M   s  è è € ð<ÝÔ$¨TÐ2Ñ2Ô2ð 	ð 	ð 	ð 	ð 	ð 	ð 	°fØ#ŸZšZ¨™_œ_Ð,Ð,Ð,Ð,Ð,Ð,ˆHØÔ# sÒ*Ð*Ý#Ø (Ô 4ØK°XÔ5IÐKÐKðñ ô ð õ Ø Ô(Ø#Ô+×/Ò/°ÀÑLÔLà%<Ø36Ø49Ø47ð	ð ð	ñ 	ô 	ð	ð 	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	øõ& Ô!ð Kð Kð KÝ¨Ð4IÐJÑJÔJÐJÝÔð Xð Xð XÝ¨Ð4VÍcÐRSÉfÌfÐ4VÐ4VÐWÑWÔWÐWøøøøÝð <ð <ð <Ý¨µC¸±F´FÐ;Ñ;Ô;Ð;øøøøð<øøøsG   „B> ŸA9B+ÂB> Â+
B5Â5B> Â8B5Â9B> Â>.D=Ã,!DÄD=ÄD8Ä8D=)"Úfastapir   r   r   r   r   Úsqlalchemy.ormr   Útypingr	   Úuuidr
   rD   Údatabaser   Úmodels.streamr   Úmodels.chat_messager   Úmodels.userr   Úschemas.chatr   r   Úauthr   ÚrouterÚpostÚHTTP_201_CREATEDr4   rF   r:   rI   rN   © r5   r3   ú<module>r]      s  ðØ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GØ "Ð "Ð "Ð "Ð "Ð "Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø €€€Ø Ð Ð Ð Ð Ð Ø "Ð "Ð "Ð "Ð "Ð "Ø -Ð -Ð -Ð -Ð -Ð -Ø Ð Ð Ð Ð Ð Ø AÐ AÐ AÐ AÐ AÐ AÐ AÐ AØ )Ð )Ð )Ð )Ð )Ð )à	ˆÐ9ÀÀÐ	IÑ	IÔ	I€ð ‡‚ˆY tÐ,?Ô'@ÈfÔNe€ÑfÔfð �'˜&‘/”/Ø ˜Ð!7Ñ8Ô8ð	#ð #Øð#àÐ$Ô%ð#ð 	ð#ð ð	#ð #ð #ñ gÔfð#ðL ‡‚ˆB˜tÐ$7Ô8€Ñ9Ô9ð �'˜&‘/”/ðð Øðàðð ð ñ :Ô9ðð* ‡‚ˆNÑÔð<˜3ð <ð <ð <ñ Ôð<ð <ð <r5   