
    &e                         d dl Z d dlZd dlZd dlZd dlmZ d dlm	Z	  e	e
          Z G d dej        j                  ZdS )    N)ComponentRegistry)
get_loggerc                   ~    e Zd ZdefdZdeddfdZddZddZdd	Z	e
defd
            Ze
dedefd            ZdS )ComponentRequestHandlerregistryc                     || _         d S )N)	_registry)selfr   s     Nlib/python3.11/site-packages/streamlit/web/server/component_request_handler.py
initializez"ComponentRequestHandler.initialize   s    !    pathreturnNc                 D   |                     d          }|d         }| j                            |          }|,|                     d           |                     d           d S t
          j                            |          }d                    |dd                    }t
          j                            t
          j                            ||                    }t
          j        	                    ||g          |k    r,|                     d           |                     d           d S 	 t          |d          5 }|                                }d d d            n# 1 swxY w Y   n_# t          $ rR}	t                              d	||	
           |                     d           |                     d           Y d }	~	d S d }	~	ww xY w|                     |           |                     d|                     |                     |                     |           d S )N/r   z	not foundi     	forbiddeni  rbz*ComponentRequestHandler: GET %s read error)exc_infoz
read errorzContent-Type)splitr	   get_component_pathwrite
set_statusosr   realpathjoin
commonpathopenreadOSError_LOGGERerror
set_headerget_content_typeset_extra_headers)
r
   r   partscomponent_namecomponent_rootfilenameabspathfilecontentses
             r   getzComponentRequestHandler.get   s8   

3q::>JJ!JJ{###OOC   F )).9988E!""I&&'""27<<#I#IJJ 7~w788NJJJJ{###OOC   F		gt$$ '99;;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' 	 	 	MM<gPQ     JJ|$$$OOC   FFFFF	 	

8(=(=g(F(FGGGt$$$$$s=   1E. E"E. "E&&E. )E&*E. .
G
8AGG
c                     t          |          dk    }|s|                    d          r|                     dd           dS |                     dd           dS )zDisable cache for HTML files.

        Other assets like JS and CSS are suffixed with their hash, so they can
        be cached indefinitely.
        r   z.htmlzCache-Controlzno-cachepublicN)lenendswithr#   )r
   r   is_index_urls      r   r%   z)ComponentRequestHandler.set_extra_headersB   sb     4yyA~ 	74==11 	7OOOZ88888OOOX66666r   c                     t           j        j        j                                        r|                     dd           d S d S )NzAccess-Control-Allow-Origin*)	streamlitwebserverroutesallow_cross_origin_requestsr#   r
   s    r   set_default_headersz+ComponentRequestHandler.set_default_headersO   sF    =&BBDD 	@OO93?????	@ 	@r   c                 X    |                      d           |                                  dS )z+/OPTIONS handler for preflight CORS checks.   N)r   finishr;   s    r   optionszComponentRequestHandler.optionsS   s%    r   c                 T    t          j        |           \  }}|dk    rdS |dS ||S dS )zuReturns the ``Content-Type`` header to be used for this request.
        From tornado.web.StaticFileHandler.
        gzipzapplication/gzipNzapplication/octet-stream)	mimetypes
guess_type)r*   	mime_typeencodings      r   r$   z(ComponentRequestHandler.get_content_typeX   sL    
 (27;;	8v%% !--" .-r   file_idc                 ,    d                     |           S )z6Return the URL for a component file with the given ID.zcomponents/{})format)rG   s    r   get_urlzComponentRequestHandler.get_urll   s     %%g...r   )r   N)__name__
__module____qualname__r   r   strr.   r%   r<   r@   staticmethodr$   rJ    r   r   r   r      s        "#4 " " " "!% !% !% !% !% !%F7 7 7 7@ @ @ @   
 .S . . . \.& / / / / / \/ / /r   r   )rC   r   tornado.webtornadostreamlit.web.server.routesr6   "streamlit.components.v1.componentsr   streamlit.loggerr   rK   r!   r7   RequestHandlerr   rP   r   r   <module>rW      s        				     " " " " @ @ @ @ @ @ ' ' ' ' ' '
*X

T/ T/ T/ T/ T/gk8 T/ T/ T/ T/ T/r   