§
    é©Éj¸  ã                   óü   — d Z ddlZddlZddlmZmZ ddlmZ dZ ed¦  «        Z	dZ
dZdd	„Z G d
„ de¦  «        Zedk    r: ede¦  «        Z ed e¦   «         z  d¬¦  «         e                     ¦   «          dS dS )a;  X4 briefing-card server.

Serves /opt/x4-cards statically (card PNGs/BMPs) plus one smart endpoint:

    /cards/auto.bmp  ->  morning or nightstand card, chosen by
                         America/Toronto time (weekend variants Sat/Sun).

Lets the X4 auto-switch between morning/night cards from a single slot URL.
é    N)ÚSimpleHTTPRequestHandlerÚThreadingHTTPServer)ÚZoneInfoz/opt/x4-cardszAmerica/Torontoé   é   c                 ó$  — | p#t           j                              t          ¦  «        } | j        t          k    s| j        t
          k     rdnd}|                      ¦   «         dk    rdnd}t          j         	                    t          d|›|›d�¦  «        S )NÚ
nightstandÚmorningé   Ú_weekendÚ Úcardsz.bmp)ÚdatetimeÚnowÚTZÚhourÚNIGHT_STARTÚMORNING_STARTÚweekdayÚosÚpathÚjoinÚROOT)r   ÚpartÚsuffixs      ú/opt/x4-cards/serve.pyÚ	pick_cardr      s}   € Ø
Ð
*•Ô"×&Ò&¥rÑ*Ô*€CØœH­Ò3Ð3°s´xÅ-Ò7OÐ7Oˆ<ˆ<ÐV_€DØŸ;š;™=œ=¨AÒ-Ð-ˆZˆZ°2€FÝŒ7�<Š<�˜g°T°T¸6¸6¸6Ð'BÑCÔCÐCó    c                   ó.   ‡ — e Zd Zˆ fd„Zd„ Zˆ fd„Zˆ xZS )ÚHandlerc                 óH   •—  t          ¦   «         j        |dt          i|¤Ž d S )NÚ	directory)ÚsuperÚ__init__r   )ÚselfÚargsÚkwargsÚ	__class__s      €r   r$   zHandler.__init__!   s*   ø€ Ø�‰ŒÔ˜$Ð9­$Ð9°&Ð9Ð9Ð9Ð9Ð9r   c                 ó   — d S ©N© )r%   r&   s     r   Úlog_messagezHandler.log_message$   s   € Øˆr   c                 ó¶  •— | j                              d¦  «        d         dk    �rt          ¦   «         }	 t          |d¦  «        5 }|                     ¦   «         }d d d ¦  «         n# 1 swxY w Y   n'# t
          $ r |                      dd¦  «         Y d S w xY w|                      d¦  «         |                      dd	¦  «         |                      d
t          t          |¦  «        ¦  «        ¦  «         |                      dd¦  «         |                      ¦   «          | j                             |¦  «         d S t          ¦   «                              ¦   «         S )Nú?r   z/cards/auto.bmpÚrbi”  zcard not rendered yetéÈ   zContent-Typez	image/bmpzContent-LengthzCache-Controlzno-cache, no-store)r   Úsplitr   ÚopenÚreadÚOSErrorÚ
send_errorÚsend_responseÚsend_headerÚstrÚlenÚend_headersÚwfileÚwriter#   Údo_GET)r%   ÚfpÚfÚbodyr(   s       €r   r=   zHandler.do_GET'   s|  ø€ ØŒ9�?Š?˜3ÑÔ Ô"Ð&7Ò7Ñ7Ý‘”ˆBðÝ˜"˜d‘^”^ð $ qØŸ6š6™8œ8�Dð$ð $ð $ñ $ô $ð $ð $ð $ð $ð $ð $øøøð $ð $ð $ð $øøåð ð ð Ø—’ Ð%<Ñ=Ô=Ð=Ø��ðøøøð ×Ò˜sÑ#Ô#Ð#Ø×Ò˜^¨[Ñ9Ô9Ð9Ø×ÒÐ-­sµ3°t±9´9©~¬~Ñ>Ô>Ð>Ø×Ò˜_Ð.BÑCÔCÐCØ×ÒÑÔÐØŒJ×Ò˜TÑ"Ô"Ð"ØˆFÝ‰wŒw�~Š~ÑÔÐs5   ¶A3 ÁA'ÁA3 Á'A+Á+A3 Á.A+Á/A3 Á3 BÂB)Ú__name__Ú
__module__Ú__qualname__r$   r,   r=   Ú__classcell__)r(   s   @r   r    r        s`   ø€ € € € € ð:ð :ð :ð :ð :ðð ð ð ð  ð  ð  ð  ð  ð  ð  ð  r   r    Ú__main__)z0.0.0.0i�  z+x4-cards serving on :8080  (auto.bmp -> %s)T)Úflushr*   )Ú__doc__r   r   Úhttp.serverr   r   Úzoneinfor   r   r   r   r   r   r    rA   ÚsrvÚprintÚserve_foreverr+   r   r   ú<module>rM      s  ððð ð €€€Ø 	€	€	€	Ø EÐ EÐ EÐ EÐ EÐ EÐ EÐ EØ Ð Ð Ð Ð Ð à€Ø€XÐÑ Ô €ð €Ø€ðDð Dð Dð Dð ð  ð  ð  ð  Ð&ñ  ô  ð  ð4 ˆzÒÐØ
Ð
Ð/°Ñ
9Ô
9€CØ	€EÐ
7¸)¸)¹+¼+Ñ
EÈTÐRÑRÔRÐRØ×ÒÑÔÐÐÐð Ðr   