Edit File: simple_server.cpython-36.pyc
3 � \��������������� ���@���s ��d�Z�ddlmZmZ�ddlZddlZddlmZ�ddl m Z �dZddd d gZde�Z e ��d�ejj��d��Ze d �e�ZG�dd��de�ZG�dd��de�ZG�dd��de�Zdd ��Zeefdd �Zedk�redde��BZejj��Zeded�ded�d��ddlZejd��ej���W�dQ�R�X�dS�)a!��BaseHTTPServer that implements the Python WSGI protocol (PEP 3333) This is both an example of how WSGI can be implemented, and a basis for running simple web applications on a local machine, such as might be done when testing or debugging an application. It has not been reviewed for security issues, however, and we strongly recommend that you use a "real" web server for production use. For example usage, see the 'if __name__=="__main__"' block at the end of the module. See also the BaseHTTPServer module docs for other API information. �����)�BaseHTTPRequestHandler� HTTPServerN)� SimpleHandler)�python_implementationz0.2� WSGIServer�WSGIRequestHandler�demo_app�make_serverzWSGIServer/�/� c���������������@���s���e�Zd�ZeZdd��ZdS�)� ServerHandlerc�������������C���s4���z"|�j�j|�jjdd�d�|�j��W�d�tj|���X�d�S�)Nr�������r���)�request_handlerZlog_requestZstatus�splitZ bytes_sentr����close)�self��r����-/usr/lib64/python3.6/wsgiref/simple_server.pyr��� ���s����zServerHandler.closeN)�__name__� __module__�__qualname__�software_versionZserver_softwarer���r���r���r���r���r������s���r���c���������������@���s4���e�Zd�ZdZdZdd��Zdd��Zdd��Zd d ��ZdS�)r���z7BaseHTTPServer that implements the Python WSGI protocolNc�������������C���s���t�j|���|�j���dS�)z.Override server_bind to store the server name.N)r����server_bind� setup_environ)r���r���r���r���r���0���s���� zWSGIServer.server_bindc�������������C���sF���i��}|�_�|�j|d<�d|d<�t|�j�|d<�d|d<�d|d<�d|d<�d�S�) NZSERVER_NAMEzCGI/1.1ZGATEWAY_INTERFACEZSERVER_PORT���REMOTE_HOST�CONTENT_LENGTHZSCRIPT_NAME)�base_environZserver_name�strZserver_port)r����envr���r���r���r���5���s���� zWSGIServer.setup_environc�������������C���s���|�j�S�)N)�application)r���r���r���r����get_app?���s����zWSGIServer.get_appc�������������C���s ���||�_�d�S�)N)r ���)r���r ���r���r���r����set_appB���s����zWSGIServer.set_app) r���r���r����__doc__r ���r���r���r!���r"���r���r���r���r���r���*���s��� c���������������@���s,���e�Zd�Zde�Zdd��Zdd��Zdd��ZdS�) r���zWSGIServer/c�������������C���sT��|�j�jj��}|�j|d<�|�j|d<�|�j|d<�d|�jkrH|�jjdd�\}}n|�jd�}}tj j |d�|d<�||d <�|�j��}||�jd �kr�||d<�|�jd �|d<�|�j jd �d�kr�|�j j��|d<�n|�j d �|d<�|�j jd�}|r�||d<�xn|�j j��D�]`\}}|jdd�j��}|j��}||k�rq�d|�|k�r@|d|���d|�7��<�q�||d|�<�q�W�|S�)NZSERVER_PROTOCOLZSERVER_SOFTWAREZREQUEST_METHOD�?r ���r���z iso-8859-1Z PATH_INFOZQUERY_STRINGr���r���ZREMOTE_ADDRzcontent-typeZCONTENT_TYPEzcontent-lengthr����-�_ZHTTP_�,)�serverr����copy�request_version�server_version�command�pathr����urllib�parseZunquoteZaddress_stringZclient_addressZheaders�getZget_content_type�items�replace�upper�strip)r���r���r-���Zquery�hostZlength�k�vr���r���r����get_environK���s8���� � zWSGIRequestHandler.get_environc�������������C���s���t�jS�)N)�sys�stderr)r���r���r���r���� get_stderrp���s����zWSGIRequestHandler.get_stderrc�������������C���s|���|�j�jd�|�_t|�j�dkr<d|�_d|�_d|�_|�jd��dS�|�j��sHdS�t |�j�|�j |�j��|�j���}|�|_ |j|�jj����dS�)zHandle a single HTTP requesti��i���r���i���N)Zrfile�readlineZraw_requestline�lenZrequestliner*���r,���Z send_errorZ parse_requestr���Zwfiler;���r8���r���Zrunr(���r!���)r���Zhandlerr���r���r����handles���s���� zWSGIRequestHandler.handleN)r���r���r����__version__r+���r8���r;���r>���r���r���r���r���r���G���s���%c�������������C���sv���ddl�m}�|��}td|d��t|d��t|�j���}x$|D�]\}}t|dt|�|d��q:W�|dd g��|j��jd �gS�)Nr���)�StringIOzHello world!)�file�=z200 OK�Content-Type�text/plain; charset=utf-8zutf-8)rC���rD���)�ior@����print�sortedr1����repr�getvalue�encode)�environZstart_responser@����stdout�hr6���r7���r���r���r���r�������s���� c�������������C���s���||�|f|�}|j�|��|S�)zACreate a new WSGI server listening on `host` and `port` for `app`)r"���)r5����portZappZserver_classZ handler_classr(���r���r���r���r �������s���� �__main__r���i@��zServing HTTP onrN���r ���z...zhttp://localhost:8000/xyz?abc) r#���Zhttp.serverr���r���r9���Zurllib.parser.���Zwsgiref.handlersr����platformr���r?����__all__r+����versionr����sys_versionr���r���r���r���r���r ���r���ZhttpdZsocketZgetsocknameZsarF���Z webbrowser�openZhandle_requestr���r���r���r����<module>���s,���B