
    9
g]	                        d Z ddlZddlZddlZddlZddlZddlZ G d dej                  j                        Z G d dej                  j                        Z G d dej                  j                  ej                        Zd
d	Zy)z>Basic http server for tests to simulate PyPI or custom indexes    Nc                   V    e Zd ZdZdej
                  j                  fdZd Zd Z	d Z
y)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                 h    t         j                  j                  j                  | ||       d| _        y NT)httpserver
HTTPServer__init___runselfserver_addressRequestHandlerClasss      W/var/www/api/v1/venv_getwork_v1/lib/python3.12/site-packages/setuptools/tests/server.pyr   zIndexServer.__init__   s(    
 	''n>QR	    c                     t        j                  | j                        | _        | j                  j	                          y )N)target)	threadingThreadserve_foreverthreadstartr   s    r   r   zIndexServer.start   s*    &&d.@.@Ar   c                     t        j                  d       | j                          | j                  j	                          | j
                  j                          y)zStop the serverg?N)timesleepshutdownr   joinsocketcloser   s    r   stopzIndexServer.stop#   s8     	

3r   c                 &    | j                   }d| dS )Nzhttp://127.0.0.1:z/setuptools/tests/indexes/server_port)r   ports     r   base_urlzIndexServer.base_url-   s    "4&(BCCr   N)__name__
__module____qualname____doc__r	   r
   SimpleHTTPRequestHandlerr   r   r#   r(    r   r   r   r      s.    	  KK@@Dr   r   c                       e Zd Zd Zy)RequestRecorderc                     t        | j                        j                  dg       }|j                  |        | j	                  dd       y )Nrequests   OK)varsr
   
setdefaultappendsend_response)r   r2   s     r   do_GETzRequestRecorder.do_GET3   s9    $//
B?3%r   N)r)   r*   r+   r9   r.   r   r   r0   r0   2   s    &r   r0   c                   B    e Zd ZdZdefdZd Zed        Zed        Z	y)
MockServerzD
    A simple HTTP Server that records the requests made to it.
    r   c                     t         j                  j                  j                  | ||       t        j
                  j                  |        d| _        g | _        y r   )r	   r
   r   r   r   r   daemonr2   r   s      r   r   zMockServer.__init__>   sA    ''n>QR!!$'r   c                 $    | j                          y N)r   r   s    r   runzMockServer.runD   s    r   c                      d| j                    S )Nz
localhost:r%   r   s    r   netloczMockServer.netlocG   s    D,,-..r   c                 "    d| j                    dS )Nzhttp:///)rB   r   s    r   urlzMockServer.urlK   s    Q''r   N)
r)   r*   r+   r,   r0   r   r@   propertyrB   rE   r.   r   r   r;   r;   9   s@     '.?  / / ( (r   r;   c                    t         j                  j                  t         j                  j                  |             } d}||d|z   z  }t        j
                  j                  |t        j                  j                  |             S )zConvert a path to a file: URL.zfile:z//)	ospathnormpathabspathurllibparseurljoinrequestpathname2url)rI   	authoritybases      r   path_to_urlrS   P   sc    77BGGOOD12DDy  <<fnn&A&A$&GHHr   r?   )r,   http.serverr	   rH   r   r   urllib.parserL   urllib.requestr
   r   r   BaseHTTPRequestHandlerr0   r   r;   rS   r.   r   r   <module>rX      sm    D  	    $D$++(( $DN&dkk88 &('')9)9 (.Ir   