
    .hh                        S SK JrJr  S SKrS SKrS SKJr  S SKJ	r	  Sr
/ SQrS\
-   r\	" 5       S-   \R                  R                  5       S    -   r\S	-   \-   r " S
 S\5      r " S S\5      r " S S\5      rS r\\4S jr\S:X  af  \" SS\5       r\R0                  R3                  5       r\" S\S    S\S   S5        S SKr\R:                  " S5        \R=                  5         SSS5        gg! , (       d  f       g= f)    )BaseHTTPRequestHandler
HTTPServerN)SimpleHandler)python_implementationz0.2)
WSGIServerWSGIRequestHandlerdemo_appmake_serverWSGIServer// c                       \ rS rSr\rS rSrg)ServerHandler   c                      U R                   R                  U R                  R                  SS5      S   U R                  5        [
        R                  " U 5        g ! [
        R                  " U 5        f = f)Nr      r   )request_handlerlog_requeststatussplit
bytes_sentr   closeselfs    >/opt/python-3.13.8/usr/lib/python3.13/wsgiref/simple_server.pyr   ServerHandler.close    sY    	&  ,,!!#a(+T__ %M%s   AA A4 N)__name__
__module____qualname____firstlineno__software_versionserver_softwarer   __static_attributes__r       r   r   r      s    &O&r%   r   c                   0    \ rS rSrSrS rS rS rS rSr	g)r   *   Nc                 P    [         R                  " U 5        U R                  5         g N)r   server_bindsetup_environr   s    r   r*   WSGIServer.server_bind0   s    t$r%   c                     0 =ol         U R                  US'   SUS'   [        U R                  5      US'   SUS'   SUS'   SUS'   g )	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+   WSGIServer.setup_environ5   s\    "$$!--M#,  !1!12MM Mr%   c                     U R                   $ r)   applicationr   s    r   get_appWSGIServer.get_app?   s    r%   c                     Xl         g r)   r<   )r   r=   s     r   set_appWSGIServer.set_appB   s    &r%   )r=   r5   )
r   r   r    r!   r=   r*   r+   r>   rA   r$   r   r%   r   r   r   *   s     K
  'r%   r   c                   0    \ rS rSrS\-   rS rS rS rSr	g)r   G   r   c                 r   U R                   R                  R                  5       nU R                  US'   U R                  US'   U R
                  US'   SU R                  ;   a  U R                  R                  SS5      u  p#OU R                  Sp2[        R                  R                  US5      US'   X1S	'   U R                  S
   US'   U R                  R                  S5      c  U R                  R                  5       US'   OU R                  S   US'   U R                  R                  S5      nU(       a  XAS'   U R                  R                  5        H`  u  pVUR!                  SS5      R#                  5       oVR%                  5       nXQ;   a  M;  SU-   U;   a  USU-   ==   SU-   -  ss'   MY  XaSU-   '   Mb     U$ )NSERVER_PROTOCOLSERVER_SOFTWAREREQUEST_METHOD?r   r1   z
iso-8859-1	PATH_INFOQUERY_STRINGr   REMOTE_ADDRzcontent-typeCONTENT_TYPEzcontent-lengthr3   -_HTTP_,)serverr5   copyrequest_versionserver_versioncommandpathr   urllibparseunquoteclient_addressheadersgetget_content_typeitemsreplaceupperstrip)r   r9   rW   querylengthkvs          r   get_environWSGIRequestHandler.get_environK   s   kk&&++-!%!5!5!%!4!4 $$))Q/JD2!<<//lCK#N!003M<<N+3"&,,"?"?"AC"&,,~">C!!"23$* !LL&&(DAiiC &&(AGGI!xqyCGAI#a%'!"GAI ) 
r%   c                 "    [         R                  $ r)   )sysstderrr   s    r   
get_stderrWSGIRequestHandler.get_stderrl   s    zzr%   c                    U R                   R                  S5      U l        [        U R                  5      S:  a'  SU l        SU l        SU l        U R                  S5        g U R                  5       (       d  g [        U R                   U R                  U R                  5       U R                  5       SS9nXl        UR                  U R                  R!                  5       5        g )Ni  i   r1   i  F)multithread)rfilereadlineraw_requestlinelenrequestlinerT   rV   
send_errorparse_requestr   wfilerl   rg   r   runrR   r>   )r   handlers     r   handleWSGIRequestHandler.handleo   s      $zz2259t##$u,!D#%D DLOOC !!##JJ

DOO$5t7G7G7I
 #'DKK'')*r%   )rV   rr   rT   rt   N)
r   r   r    r!   __version__rU   rg   rl   rz   r$   r   r%   r   r   r   G   s    "[0NB+r%   r   c                    SSK Jn  U" 5       n[        SUS9  [        US9  [        U R	                  5       5      nU H  u  pV[        US[        U5      US9  M     U" SS/5        UR                  5       R                  S5      /$ )	Nr   )StringIOzHello world!)file=z200 OK)zContent-Typeztext/plain; charset=utf-8zutf-8)ior~   printsortedr_   reprgetvalueencode)environstart_responser~   stdouthre   rf   s          r   r	   r	      su    ZF	.v&	vw}}AaDG&) 8JKLOO$$W-..r%   c                 <    U" X4U5      nUR                  U5        U$ r)   )rA   )hostportappserver_classhandler_classrR   s         r   r
   r
      s#     4,6F
NN3Mr%   __main__r1   i@  zServing HTTP onr   r   z...zhttp://localhost:8000/xyz?abc)http.serverr   r   rj   urllib.parserX   wsgiref.handlersr   platformr   r|   __all__rU   versionr   sys_versionr"   r   r   r   r	   r
   r   httpdsocketgetsocknamesar   
webbrowseropenhandle_requestr   r%   r   <module>r      s   ; 
  * *
I ,#%+ckk.?.?.A!.DD!C'+5 
&M 
&' ':;+/ ;+~	/ #-<N z	Rx	(E\\%%'A1u=78 
)	( 	(	(s   AC00
C>