U
    /e                     @  s   d Z ddlmZ ddlZeeZddlmZ ddl	m
Z
 ddlmZmZ ddlmZ ddlmZ d	d
lmZ dZG dd deZdS )zG Provide a request handler that returns a page displaying a document.

    )annotationsN)urlparse)AUTOLOAD_JS)Scriptbundle_for_objs_and_resources)script_for_render_items)
RenderItem   )SessionHandler)AutoloadJsHandlerc                   @  s(   e Zd ZdZdd Zdd Zdd ZdS )	r   zD Implements a custom Tornado handler for the autoload JS chunk

    c                 C  s(   |  dd |  dd |  dd d S )NzAccess-Control-Allow-Headers*zAccess-Control-Allow-MethodszPUT, GET, OPTIONSzAccess-Control-Allow-Origin)
set_header)self r   J/tmp/pip-unpacked-wheel-f5fndrjf/bokeh/server/views/autoload_js_handler.pyset_default_headers8   s    z%AutoloadJsHandler.set_default_headersc              	     s   |   I d H }| jdd d}|s2| jddd d S | jddd}| jdd d}|rdd	jt|d
}nd }| dd}|dkr| j|nd }	td |	}
t|j	|ddg}|

tti |||d tj|
|d}| dd | | d S )Nzbokeh-autoload-element)defaulti  z)No bokeh-autoload-element query parameter)status_codereasonzbokeh-app-path/zbokeh-absolute-urlz{uri.scheme}://{uri.netloc})uri	resourcesr   noneF)token	elementidZuse_for_title)app_pathabsolute_url)bundler   zContent-Typezapplication/javascript)Zget_sessionZget_argumentZ
send_errorformatr   Zapplicationr   r   r   r   addr   r   r   renderr   write)r   argskwargssessionZ
element_idr   r   Z
server_urlZresources_paramr   r   Zrender_itemsZjsr   r   r   get=   s$    
zAutoloadJsHandler.getc                   s   dS )zBBrowsers make OPTIONS requests under the hood before a GET requestNr   )r   r"   r#   r   r   r   optionsY   s    zAutoloadJsHandler.optionsN)__name__
__module____qualname____doc__r   r%   r&   r   r   r   r   r   3   s   r   )r*   
__future__r   logging	getLoggerr'   logurllib.parser   Zbokeh.core.templatesr   Zbokeh.embed.bundler   r   Zbokeh.embed.elementsr   Zbokeh.embed.utilr   Zsession_handlerr
   __all__r   r   r   r   r   <module>   s   
