o
    z‡j¯  ã                   @   s´   d dl mZmZ d dlZd dlZd dlZd dlZd dlZe 	ej
j¡ dZdZG dd„ deƒZedkrXdej_ed	e› d
ƒ edefeƒZze ¡  W dS  eyW   Y dS w dS )é    )ÚThreadingHTTPServerÚSimpleHTTPRequestHandlerNi³  z@https://mtr.ciapongi.szablix.pl/mtr/api/map/arrivals?dimension=0c                       s,   e Zd Zdd„ Z‡ fdd„Zdd„ Z‡  ZS )ÚCORSRequestHandlerc                 C   s:   |   d¡ |  dd¡ |  dd¡ |  dd¡ |  ¡  d S )NéÈ   úAccess-Control-Allow-OriginÚ*zAccess-Control-Allow-MethodszPOST, GET, OPTIONSzAccess-Control-Allow-HeadersúContent-Type)Úsend_responseÚsend_headerÚend_headers)Úself© r   ú/app/proxy_server.pyÚ
do_OPTIONS   s
   
zCORSRequestHandler.do_OPTIONSc              
      sê   | j  d¡rnz7tj | j ¡}|j}d|› }tj|ddd}|  |j	¡ |  
dd¡ |  
dd	¡ |  ¡  | j |j¡ W d S  tym } z$|  d
¡ |  
dd	¡ |  ¡  | j dt|ƒ› d ¡ ¡ W Y d }~d S d }~ww tƒ  ¡  d S )Nz/api/vehiclesz5https://mtr.ciapongi.szablix.pl/mtr/api/map/vehicles?é
   F)ÚtimeoutÚverifyúContent-typeúapplication/jsonr   r   éô  ú{"error": "Proxy Error: ú"})ÚpathÚ
startswithÚurllibÚparseÚurlparseÚqueryÚrequestsÚgetr	   Ústatus_coder
   r   ÚwfileÚwriteÚcontentÚ	ExceptionÚstrÚencodeÚsuperÚdo_GET)r   ÚparsedÚqsÚurlÚrespÚe©Ú	__class__r   r   r(      s&   

*€üzCORSRequestHandler.do_GETc           
   
   C   s8  | j  d¡rsz<t| j dd¡ƒ}| j |¡}tjt	|dddœddd	}|  
|j¡ |  d
d¡ |  dd¡ |  ¡  | j |j¡ W d S  tyr } z$|  
d¡ |  dd¡ |  ¡  | j dt|ƒ› d ¡ ¡ W Y d }~d S d }~ww | j  d¡rdd l}tj | j ¡}tj |j¡}|  
d¡ |  d
d¡ |  dd¡ |  ¡  | ddg¡d dkr´| j d¡ d S z=t| j dd¡ƒ}| j |¡}| |¡}tdddd}	|j||	ddd W d   ƒ n1 säw   Y  | j d¡ W d S  ty } z| j | dt|ƒi¡ ¡ ¡ W Y d }~d S d }~ww |  d¡ d S )Nz/api/departureszContent-Lengthr   r   zMozilla/5.0)r   z
User-Agenté   F)ÚdataÚheadersr   r   r   r   r   r   r   r   z/api/borders-saver   ÚpassÚ Z
szablix123s   {"error": "Brak autoryzacji"}z/app/web/borders.jsonÚwzutf-8)Úencodingé   )Úensure_asciiÚindents   {"status": "ok"}Úerrori”  )r   r   Úintr2   r   ÚrfileÚreadr   ÚpostÚ
TARGET_URLr	   r    r
   r   r!   r"   r#   r$   r%   r&   Újsonr   r   r   Úparse_qsr   ÚloadsÚopenÚdumpÚdumpsÚ
send_error)
r   Úcontent_lengthZ	post_datar,   r-   r@   Zparsed_pathr   r1   Úfr   r   r   Údo_POST(   s^   û
*€ü

ÿ,€ÿzCORSRequestHandler.do_POST)Ú__name__Ú
__module__Ú__qualname__r   r(   rI   Ú__classcell__r   r   r.   r   r      s    r   Ú__main__Tz Serwer Proxy startuje na porcie z...z0.0.0.0)Úhttp.serverr   r   r   ÚsysÚsocketserverÚurllib3Úurllib.parser   Údisable_warningsÚ
exceptionsÚInsecureRequestWarningÚPORTr?   r   rJ   Ú	TCPServerÚallow_reuse_addressÚprintÚhttpdÚserve_foreverÚKeyboardInterruptr   r   r   r   Ú<module>   s(    Iÿú