
    ;e3                     :   	 d dl mZmZ d dlZd dlZd dlmZ d dlm	Z	 dZ
g dZde
z   Z e	            dz   ej                                        d          z   Zed	z   ez   Z G d
 de          Z G d de          Z G d de          Zd ZeefdZedk    r edde          5 Zej                                        Z eded          ded         d           d dlZ ej        d           e                                 ddd           dS # 1 swxY w Y   dS dS )    )BaseHTTPRequestHandler
HTTPServerN)SimpleHandler)python_implementationz0.2)
WSGIServerWSGIRequestHandlerdemo_appmake_serverWSGIServer// c                       e Zd ZeZd ZdS )ServerHandlerc                     	 | j                             | j                            dd          d         | j                   t          j        |            d S # t          j        |            w xY w)Nr      r   )request_handlerlog_requeststatussplit
bytes_sentr   closeselfs    ,/usr/lib/python3.11/wsgiref/simple_server.pyr   zServerHandler.close    sp    	& ,,!!#a((+T_   %%%%%M%%%%s   ?A A-N)__name__
__module____qualname__software_versionserver_softwarer        r   r   r      s(        &O& & & & &r!   r   c                   ,    e Zd Z	 dZd Zd Zd Zd ZdS )r   Nc                 X    	 t          j        |            |                                  d S N)r   server_bindsetup_environr   s    r   r%   zWSGIServer.server_bind0   s.    <t$$$r!   c                     i x}| _         | j        |d<   d|d<   t          | j                  |d<   d|d<   d|d<   d|d<   d S )	NSERVER_NAMEzCGI/1.1GATEWAY_INTERFACESERVER_PORT REMOTE_HOSTCONTENT_LENGTHSCRIPT_NAME)base_environserver_namestrserver_port)r   envs     r   r&   zWSGIServer.setup_environ5   sa    "$$d!-M#,  !122MM Mr!   c                     | j         S r$   applicationr   s    r   get_appzWSGIServer.get_app?   s    r!   c                     || _         d S r$   r5   )r   r6   s     r   set_appzWSGIServer.set_appB   s    &r!   )r   r   r   r6   r%   r&   r7   r9   r    r!   r   r   r   *   sX        AK  
          ' ' ' ' 'r!   r   c                   *    e Zd Zdez   Zd Zd Zd ZdS )r   r   c                    | j         j                                        }| j        |d<   | j        |d<   | j        |d<   d| j        v r| j                            dd          \  }}n	| j        d}}t          j	        
                    |d          |d<   ||d	<   |                                 }|| j        d
         k    r||d<   | j        d
         |d<   | j                            d          | j                                        |d<   n| j        d         |d<   | j                            d          }|r||d<   | j                                        D ]l\  }}|                    dd                                          }|                                }||v rFd|z   |v r|d|z   xx         d|z   z  cc<   d||d|z   <   m|S )NSERVER_PROTOCOLSERVER_SOFTWAREREQUEST_METHOD?r   r+   z
iso-8859-1	PATH_INFOQUERY_STRINGr   r,   REMOTE_ADDRzcontent-typeCONTENT_TYPEzcontent-lengthr-   -_HTTP_,)serverr/   copyrequest_versionserver_versioncommandpathr   urllibparseunquoteaddress_stringclient_addressheadersgetget_content_typeitemsreplaceupperstrip)r   r3   rM   queryhostlengthkvs           r   get_environzWSGIRequestHandler.get_environK   s   k&++--!%!5!%!4 $$)Q//JD2D!<//lCCK#N""$$4&q)))!%C!03M<N++3"&,"?"?"A"AC"&,~">C!!"233 	+$*C !L&&(( 	# 	#DAqiiC  &&((AAGGII!CxxqyCGAI#a%'!"GAI
r!   c                     t           j        S r$   )sysstderrr   s    r   
get_stderrzWSGIRequestHandler.get_stderrp   s
    zr!   c                    	 | j                             d          | _        t          | j                  dk    r,d| _        d| _        d| _        |                     d           d S |                                 sd S t          | j         | j
        |                                 |                                 d          }| |_        |                    | j                                                   d S )Ni  i   r+   i  F)multithread)rfilereadlineraw_requestlinelenrequestlinerJ   rL   
send_errorparse_requestr   wfilerc   r_   r   runrH   r7   )r   handlers     r   handlezWSGIRequestHandler.handles   s    *#z22599t#$$u,,!D#%D DLOOC   F!!## 	FJ
DOO$5$5t7G7G7I7I
 
 
 #'DK''))*****r!   N)r   r   r   __version__rK   r_   rc   rp   r    r!   r   r   r   G   sL        "[0N# # #J  + + + + +r!   r   c                 `   ddl m}  |            }t          d|           t          |           t          |                                           }|D ]%\  }}t          |dt          |          |           & |ddg           |                                                    d          gS )	Nr   )StringIOzHello world!)file=z200 OK)zContent-Typeztext/plain; charset=utf-8zutf-8)iors   printsortedrV   reprgetvalueencode)environstart_responsers   stdouthr]   r^   s          r   r	   r	      s    XZZF	.v&&&&	vw}}A * *!aDGG&)))))N8JKLLLOO$$W--..r!   c                 N    	  || |f|          }|                     |           |S r$   )r9   )r[   portappserver_classhandler_classrH   s         r   r
   r
      s4     L\4,66F
NN3Mr!   __main__r+   i@  zServing HTTP onr   r   z...zhttp://localhost:8000/xyz?abc)http.serverr   r   ra   urllib.parserN   wsgiref.handlersr   platformr   rq   __all__rK   versionr   sys_versionr   r   r   r   r	   r
   r   httpdsocketgetsocknamesarw   
webbrowseropenhandle_requestr    r!   r   <module>r      sN  
 ; : : : : : : : 



     * * * * * * * * * * * *
I
I
I ,##%%+ck.?.?.A.A!.DD!C'+5 
& 
& 
& 
& 
&M 
& 
& 
&' ' ' ' ' ' ' ':?+ ?+ ?+ ?+ ?+/ ?+ ?+ ?+F	/ 	/ 	/ #-<N    z	Rx	(	( E\%%''A1u===
7888                  s   $ADDD