
    Ib
                     f    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e	      Zg Zy)	z.Serve files directly from the ContentsManager.    N)decodebytes)genweb)IPythonHandler)maybe_futurec                        e Zd ZdZe fd       Zej                  d        Zej                  e	j                  dd              Z x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                     t         |   dz   S )Nz; sandbox allow-scripts)supercontent_security_policy)self	__class__s    9/usr/lib/python3/dist-packages/notebook/files/handlers.pyr   z$FilesHandler.content_security_policy   s     w.1JJJ    c                 H    | j                          | j                  |d      S )NF)include_body)check_xsrf_cookieget)r   paths     r   headzFilesHandler.head   s!     xx5x11r   c              #      K   | j                          | j                  }|j                  |      r<|j                  s0| j                  j                  d       t        j                  d      |j                  d      }d|v r|j                  dd      \  }}n|}t        |j                  |d|            }| j                  dd      r| j                  |       |j                         j                  d	      r| j!                  d
d       nrt#        j$                  |      d   }|dk(  r| j!                  d
d       nB|| j!                  d
|       n-|d   dk(  r| j!                  d
d       n| j!                  d
d       |r|d   dk(  r/|d   j'                  d      }| j)                  t+        |             nD|d   dk(  r(| j)                  t-        j.                  |d                n| j)                  |d          | j1                          y y w)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   contents_manager	is_hiddenallow_hiddenloginfor   	HTTPErrorstriprsplitr   r   get_argumentset_attachment_headerlowerendswith
set_header	mimetypes
guess_typeencodewriter   r!   dumpsflush)	r   r   r   cm_namemodelcur_mime	b64_bytess	            r   r   zFilesHandler.get$   s     	 ""<<booHHMMHI--$$zz#$;kk#q)GAtD"266$V\6#RSSZ/&&t, ::<  *OON,FG ++D1!4H<'0KL%9?h.OON4NOOON4OPX(*!),33G<	

;y12xF*

4::eI&678

5+,JJL s   HH)T)__name__
__module____qualname____doc__propertyr   r   authenticatedr   r   	coroutiner   __classcell__)r   s   @r   r	   r	      s^     K K
 	2 2 	]]+  +r   r	   )r>   r/   r!   r   r   tornador   r   notebook.base.handlersr   notebook.utilsr   r	   default_handlers r   r   <module>rH      s3    4
     1 'A> AH  r   