î
½1kd[
  ã               @   s¨   d  Z  d d l Z d d l Z d d l Z d d l m Z d d l m Z m Z m Z m	 Z	 Gd d „  d e ƒ Z
 Gd d „  d e ƒ Z Gd	 d
 „  d
 e e j ƒ Z d S)z?Basic http server for tests to simulate PyPI or custom indexes
é    N)ÚBaseHTTPRequestHandler)Úurllib2ÚURLErrorÚ
HTTPServerÚSimpleHTTPRequestHandlerc               @   sX   e  Z d  Z d Z d e d d „ Z d d „  Z d d	 „  Z d
 d „  Z d d „  Z	 d S)ÚIndexServeraY  Basic single-threaded http server simulating a package index

    You can use this server in unittest like this::
        s = IndexServer()
        s.start()
        index_url = s.base_url() + 'mytestindex'
        # do some test requests to the index
        # The index files should be located in setuptools/tests/indexes
        s.stop()
    Ú r   c             C   s    t  j |  | | ƒ d |  _ d  S)NT)r   Ú__init__Ú_run)ÚselfÚserver_addressÚRequestHandlerClass© r   úM/var/www/pythonscrapper/code/venv/build/setuptools/setuptools/tests/server.pyr	      s    zIndexServer.__init__c             C   s   x |  j  r |  j ƒ  q Wd  S)N)r
   Úhandle_request)r   r   r   r   Úserve   s    zIndexServer.servec             C   s)   t  j d |  j ƒ |  _ |  j j ƒ  d  S)NÚtarget)Ú	threadingÚThreadr   ÚthreadÚstart)r   r   r   r   r      s    zIndexServer.startc             C   s�   t  j d ƒ d |  _ d t |  ƒ } y6 t j d	 k rN t j | d d ƒn t j | ƒ Wn t k
 rp Yn X|  j	 j
 ƒ  |  j j ƒ  d S)
zStop the servergš™™™™™¹?Fz!http://127.0.0.1:%(server_port)s/é   é   Útimeouté   N)r   r   )ÚtimeÚsleepr
   ÚvarsÚsysÚversion_infor   Úurlopenr   r   ÚjoinÚsocketÚclose)r   Úurlr   r   r   Ústop"   s    	zIndexServer.stopc             C   s   |  j  } d | S)Nz-http://127.0.0.1:%s/setuptools/tests/indexes/)Zserver_port)r   Úportr   r   r   Úbase_url8   s    	zIndexServer.base_urlN)r   r   )
Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r	   r   r   r%   r'   r   r   r   r   r   
   s   
r   c               @   s   e  Z d  Z d d „  Z d S)ÚRequestRecorderc             C   s<   t  |  j ƒ j d g  ƒ } | j |  ƒ |  j d d ƒ d  S)NÚrequestséÈ   ÚOK)r   ÚserverÚ
setdefaultÚappendZsend_response)r   r-   r   r   r   Údo_GET=   s    zRequestRecorder.do_GETN)r(   r)   r*   r3   r   r   r   r   r,   <   s   r,   c               @   sL   e  Z d  Z d Z d e d d „ Z d d „  Z d d	 „  Z e e ƒ Z d
 S)Ú
MockServerzD
    A simple HTTP Server that records the requests made to it.
    r   r   c             C   s=   t  j |  | | ƒ t j j |  ƒ |  j d ƒ g  |  _ d  S)NT)r   r	   r   r   Ú	setDaemonr-   )r   r   r   r   r   r   r	   F   s    zMockServer.__init__c             C   s   |  j  ƒ  d  S)N)Úserve_forever)r   r   r   r   ÚrunM   s    zMockServer.runc             C   s   d t  |  ƒ S)Nz!http://localhost:%(server_port)s/)r   )r   r   r   r   r$   P   s    zMockServer.urlN)r   r   )	r(   r)   r*   r+   r,   r	   r7   r$   Úpropertyr   r   r   r   r4   B   s   r4   )r+   r   r   r   Zsetuptools.compatr   r   r   r   r   r   r,   r   r4   r   r   r   r   Ú<module>   s   "2