
    d@%j                        d Z ddlmZ ddlZddlZddlZddlZddlm	Z	  e	e
                                          j        Z G d dej        j                  Zdd	ZddZedk    r e e                      dS )zFServe the trading dashboard and state JSON from the outputs directory.    )annotationsN)Pathc                  *     e Zd Z fdZd fdZ xZS )Handlerc                b     t                      j        |dt          t                    i| d S )N	directory)super__init__strROOT)selfargskwargs	__class__s      outputs/dashboard_server.pyr
   zHandler.__init__   s0    $>#d))>v>>>>>    returnNonec                    |                      dd           |                      dd           t                                                       d S )NzCache-Controlzno-storezAccess-Control-Allow-Origin*)send_headerr	   end_headers)r   r   s    r   r   zHandler.end_headers   sL    *5556<<<r   )r   r   )__name__
__module____qualname__r
   r   __classcell__)r   s   @r   r   r      sV        ? ? ? ? ?         r   r   r   r   c                 ,   	 t          j         t           j        t           j                  } |                     d           |                     d           |                                 d         }|                                  |S # t          $ r Y dS w xY w)N   )z8.8.8.8P   r   z	127.0.0.1)socketAF_INET
SOCK_DGRAM
settimeoutconnectgetsocknameclose	Exception)sockips     r   local_ipr*      s    }V^V->??_%%%"

	   {{s   BB 
BBintc                 ^   t          j                    } |                     dt          d           |                                 }t                      }d|j         d}d| d|j         d}t          dz                      |d	z   d
           t          d           t          d|            t          d|            t          d            G d dt          j                  } |d|j        ft                    5 }|                                 d d d            d S # 1 swxY w Y   d S )Nz--porti="  )typedefaultzhttp://127.0.0.1:z/trading_order_dashboard.htmlzhttp://:zdashboard_link.local.txt
zutf-8)encodingzTrading dashboard serverzMac local: zPhone same Wi-Fi: u`   For Kakao 상세보기 outside Wi-Fi, use a public tunnel/cloud URL and set KAKAO_DASHBOARD_URL.c                      e Zd ZdZdS )%main.<locals>.ReusableThreadingServerTN)r   r   r   allow_reuse_address r   r   ReusableThreadingServerr3   5   s        "r   r6   z0.0.0.0)argparseArgumentParseradd_argumentr+   
parse_argsr*   portr   
write_textprintsocketserverThreadingTCPServerr   serve_forever)parserr   r)   	local_urllan_urlr6   httpds          r   mainrE   &   s   $&&F
sD999D	BLDILLLIEEETYEEEG	&&227T>G2TTT	
$%%%	
#	
#
#$$$	
(w
(
()))	
lmmm# # # # #,"A # # # 
!	 )TY!7	A	A U                 s    D""D&)D&__main__)r   r   )r   r+   )__doc__
__future__r   r7   http.serverhttpr    r>   pathlibr   __file__resolveparentr   serverSimpleHTTPRequestHandlerr   r*   rE   r   
SystemExitr5   r   r   <module>rR      s    L L " " " " " "                 tH~~&    dk2   	 	 	 	   , z
*TTVV

 r   