B
    9d
                 @   s`   d Z ddlZddlZddlmZ ddlmZmZ 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)genweb)IPythonHandler)maybe_futurec                   sH   e Zd ZdZe fddZejdd Zej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  jd S )Nz; sandbox allow-scripts)supercontent_security_policy)self)	__class__ d/work/yifan.wang/ringdown/master-ringdown-env/lib/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   st  |    | j}||r4|js4| jd td|d}d|krX|	dd\}}n|}t
|j|d|dV }| 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 |rp|d dkr6|d d}| t| n2|d dkrZ| t|d  n| |d  |   d S )Nz,Refusing to serve hidden file, via 404 Errori  /   file)typecontent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   	HTTPErrorstriprsplitr   r   Zget_argumentZset_attachment_headerlowerendswithZ
set_header	mimetypes
guess_typeencodewriter   r   dumpsflush)	r
   r   r   cm_namemodelZcur_mimeZ	b64_bytesr   r   r   r   $   s<    


zFilesHandler.get)T)__name__
__module____qualname____doc__propertyr	   r   authenticatedr   r   	coroutiner   __classcell__r   r   )r   r   r      s   r   )r1   r$   r   r   r   tornador   r   Znotebook.base.handlersr   Znotebook.utilsr   r   Zdefault_handlersr   r   r   r   <module>   s   D