Ñò
$8Zc           @   s[  d  Z  d d k l Z l Z d d k Z d d k Z d d k l Z d Z d d d d	 g Z	 d
 e Z
 d e i i ƒ  d Z e
 d e Z d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d „  Z e e d „ Z e d j oe e d d e ƒ Z e i i ƒ  Z d Ge d Gd Ge d Gd GHd d k Z e i d ƒ e i ƒ  n d S(   s*  BaseHTTPServer that implements the Python WSGI protocol (PEP 333, rev 1.21)

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.
iÿÿÿÿ(   t   BaseHTTPRequestHandlert
   HTTPServerN(   t   SimpleHandlers   0.1t
   WSGIServert   WSGIRequestHandlert   demo_appt   make_servers   WSGIServer/s   Python/i    t    t   ServerHandlerc           B   s   e  Z e Z d  „  Z RS(   c         C   sB   z- |  i  i |  i i d d ƒ d |  i ƒ Wd  t i |  ƒ Xd  S(   NR   i   i    (   t   request_handlert   log_requestt   statust   splitt
   bytes_sentR   t   close(   t   self(    (    s+   /usr/lib/python2.6/wsgiref/simple_server.pyR      s    	$(   t   __name__t
   __module__t   software_versiont   server_softwareR   (    (    (    s+   /usr/lib/python2.6/wsgiref/simple_server.pyR      s   c           B   s8   e  Z d  Z d Z d „  Z d „  Z d „  Z d „  Z RS(   s7   BaseHTTPServer that implements the Python WSGI protocolc         C   s   t  i |  ƒ |  i ƒ  d S(   s.   Override server_bind to store the server name.N(   R   t   server_bindt   setup_environ(   R   (    (    s+   /usr/lib/python2.6/wsgiref/simple_server.pyR   0   s    c         C   sY   h  } |  _  |  i | d <d | d <t |  i ƒ | d <d | d <d | d <d | d <d  S(	   Nt   SERVER_NAMEs   CGI/1.1t   GATEWAY_INTERFACEt   SERVER_PORTt    t   REMOTE_HOSTt   CONTENT_LENGTHt   SCRIPT_NAME(   t   base_environt   server_namet   strt   server_port(   R   t   env(    (    s+   /usr/lib/python2.6/wsgiref/simple_server.pyR   5   s    


c         C   s   |  i  S(   N(   t   application(   R   (    (    s+   /usr/lib/python2.6/wsgiref/simple_server.pyt   get_app?   s    c         C   s   | |  _  d  S(   N(   R"   (   R   R"   (    (    s+   /usr/lib/python2.6/wsgiref/simple_server.pyt   set_appB   s    N(	   R   R   t   __doc__t   NoneR"   R   R   R#   R$   (    (    (    s+   /usr/lib/python2.6/wsgiref/simple_server.pyR   *   s   		
	c           B   s-   e  Z d  e Z d „  Z d „  Z d „  Z RS(   s   WSGIServer/c   	      C   sË  |  i  i i ƒ  } |  i | d <|  i | d <d |  i j o |  i i d d ƒ \ } } n |  i d } } t i | ƒ | d <| | d <|  i	 ƒ  } | |  i
 d j o | | d	 <n |  i
 d | d
 <|  i i d  j o |  i i | d <n |  i i | d <|  i i d ƒ } | o | | d <n xŸ |  i i D]‘ } | i d d ƒ \ } } | i d d ƒ i ƒ  } | i ƒ  } | | j o q2n d | | j o | d | c d | 7<q2| | d | <q2W| S(   Nt   SERVER_PROTOCOLt   REQUEST_METHODt   ?i   R   t	   PATH_INFOt   QUERY_STRINGi    R   t   REMOTE_ADDRt   CONTENT_TYPEs   content-lengthR   t   :t   -t   _t   HTTP_t   ,(   t   serverR   t   copyt   request_versiont   commandt   pathR   t   urllibt   unquotet   address_stringt   client_addresst   headerst
   typeheaderR&   t   typet	   getheadert   replacet   uppert   strip(	   R   R!   R7   t   queryt   hostt   lengtht   ht   kt   v(    (    s+   /usr/lib/python2.6/wsgiref/simple_server.pyt   get_environW   s:    
  c         C   s   t  i S(   N(   t   syst   stderr(   R   (    (    s+   /usr/lib/python2.6/wsgiref/simple_server.pyt
   get_stderr|   s    c         C   sn   |  i  i ƒ  |  _ |  i ƒ  p d St |  i  |  i |  i ƒ  |  i ƒ  ƒ } |  | _ | i	 |  i
 i ƒ  ƒ d S(   s   Handle a single HTTP requestN(   t   rfilet   readlinet   raw_requestlinet   parse_requestR   t   wfileRL   RI   R	   t   runR3   R#   (   R   t   handler(    (    s+   /usr/lib/python2.6/wsgiref/simple_server.pyt   handle   s    $	(   R   R   t   __version__t   server_versionRI   RL   RT   (    (    (    s+   /usr/lib/python2.6/wsgiref/simple_server.pyR   S   s   
	%	c         C   s   d d k  l  } | ƒ  } | d IJ| J|  i ƒ  } | i ƒ  x0 | D]( \ } } | | Id It | ƒ IJqD W| d d g ƒ | i ƒ  g S(	   Niÿÿÿÿ(   t   StringIOs   Hello world!t   =s   200 OKs   Content-Types
   text/plain(   s   Content-Types
   text/plain(   RW   t   itemst   sortt   reprt   getvalue(   t   environt   start_responseRW   t   stdoutRF   RG   RH   (    (    s+   /usr/lib/python2.6/wsgiref/simple_server.pyR   ¥   s    	
 
  c         C   s&   | |  | f | ƒ } | i  | ƒ | S(   sA   Create a new WSGI server listening on `host` and `port` for `app`(   R$   (   RD   t   portt   appt   server_classt   handler_classR3   (    (    s+   /usr/lib/python2.6/wsgiref/simple_server.pyR   ±   s    t   __main__R   i@  s   Serving HTTP onR`   i   s   ...s   http://localhost:8000/xyz?abc(   R%   t   BaseHTTPServerR    R   R8   RJ   t   wsgiref.handlersR   RU   t   __all__RV   t   versionR   t   sys_versionR   R   R   R   R   R   R   t   httpdt   sockett   getsocknamet   sat
   webbrowsert   opent   handle_request(    (    (    s+   /usr/lib/python2.6/wsgiref/simple_server.pyt   <module>   s(   
)R	