B
    3\                  @   sv   d Z ddlZddlZyddlmZ W n  ek
rD   ddlmZ Y nX ddlmZ ddl	m
Z
 G dd de
Zg ZdS )	z.Serve files directly from the ContentsManager.    N)decodebytes)decodestring)web)IPythonHandlerc                   sB   e Zd ZdZe fddZejdd Zejd	ddZ	  Z
S )
FilesHandlerzserve files via ContentsManager

    Normally used when ContentsManager is not a FileContentsManager.

    FileContentsManager subclasses use AuthenticatedFilesHandler by default,
    a subclass of StaticFileHandler.
    c                s   t t| jd S )Nz; sandbox allow-scripts)superr   content_security_policy)self)	__class__ 6lib/python3.7/site-packages/notebook/files/handlers.pyr      s    
z$FilesHandler.content_security_policyc             C   s   |    | j|ddS )NF)include_body)check_xsrf_cookieget)r	   pathr   r   r   head$   s    zFilesHandler.headTc       	      C   sj  |    | j}||r4|js4| jd td|d}d|krX|	dd\}}n|}|j
|d|d}| ddr| | |d	r| d
d n`t|d }|dkr| d
d n<|d k	r| d
| n&|d dkr| d
d n| d
d |rf|d dkr,|d d}| t| n2|d dkrP| t|d  n| |d  |   d S )Nz,Refusing to serve hidden file, via 404 Errori  /   file)typecontentZdownloadFz.ipynbzContent-Typezapplication/x-ipynb+jsonr   z
text/plainztext/plain; charset=UTF-8formatbase64zapplication/octet-streamr   asciijson)r   Zcontents_managerZ	is_hiddenZallow_hiddenloginfor   Z	HTTPErrorstriprsplitr   Zget_argumentZset_attachment_headerendswithZ
set_header	mimetypesZ
guess_typeencodewriter   r   dumpsflush)	r	   r   r   cm_nameZmodelZcur_mimeZ	b64_bytesr   r   r   r   )   s<    



zFilesHandler.get)T)__name__
__module____qualname____doc__propertyr   r   Zauthenticatedr   r   __classcell__r   r   )r
   r   r      s
   r   )r+   r    r   r   r   ImportErrorr   Ztornador   Znotebook.base.handlersr   r   Zdefault_handlersr   r   r   r   <module>   s   D