
    ϶vgc	                         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dS )z>Basic http server for tests to simulate PyPI or custom indexes    Nc                   D    e Zd ZdZdej        j        fdZd Zd Z	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                 `    t           j        j                            | ||           d| _        d S NT)httpserver
HTTPServer__init___runselfserver_addressRequestHandlerClasss      T/var/www/pixelcanvas.ch/venv/lib/python3.11/site-packages/setuptools/tests/server.pyr   zIndexServer.__init__   s-    
 	''n>QRRR			    c                 v    t          j        | j                  | _        | j                                         d S )N)target)	threadingThreadserve_foreverthreadstartr   s    r   r   zIndexServer.start   s4    &d.@AAAr   c                     t          j        d           |                                  | j                                         | j                                         dS )zStop the serverg?N)timesleepshutdownr   joinsocketcloser   s    r   stopzIndexServer.stop#   sL     	
3r   c                     | j         }d|z  S )Nz-http://127.0.0.1:%s/setuptools/tests/indexes/server_port)r   ports     r   base_urlzIndexServer.base_url-   s    >EEr   N)__name__
__module____qualname____doc__r	   r
   SimpleHTTPRequestHandlerr   r   r#   r(    r   r   r   r      sq        	 	  K@       F F F F Fr   r   c                       e Zd Zd ZdS )RequestRecorderc                     t          | j                                      dg           }|                    |            |                     dd           d S )Nrequests   OK)varsr
   
setdefaultappendsend_response)r   r2   s     r   do_GETzRequestRecorder.do_GET3   sO    $$//
B??3%%%%%r   N)r)   r*   r+   r9   r.   r   r   r0   r0   2   s#        & & & & &r   r0   c                   P    e Zd ZdZdefdZd Zed             Zed             Z	dS )
MockServerzD
    A simple HTTP Server that records the requests made to it.
    r   c                     t           j        j                            | ||           t          j                            |            d| _        g | _        d S r   )r	   r
   r   r   r   r   daemonr2   r   s      r   r   zMockServer.__init__>   sI    ''n>QRRR!!$'''r   c                 .    |                                   d S N)r   r   s    r   runzMockServer.runD   s    r   c                     d| j         z  S )Nzlocalhost:%sr%   r   s    r   netloczMockServer.netlocG   s     000r   c                     d| j         z  S )Nz
http://%s/)rB   r   s    r   urlzMockServer.urlK   s    dk))r   N)
r)   r*   r+   r,   r0   r   r@   propertyrB   rD   r.   r   r   r;   r;   9   s~          '.?       1 1 X1 * * X* * *r   r;   c                    t           j                            t           j                            |                     } d}||d|z   z  }t          j                            |t          j                            |                     S )zConvert a path to a file: URL.zfile:Nz//)	ospathnormpathabspathurllibparseurljoinrequestpathname2url)rH   	authoritybases      r   path_to_urlrR   P   sg    7BGOOD1122DDy  <fn&A&A$&G&GHHHr   r?   )r,   http.serverr	   rG   r   r   urllib.parserK   urllib.requestr
   r   r   BaseHTTPRequestHandlerr0   r   r;   rR   r.   r   r   <module>rW      s   D D     				             $F $F $F $F $F$+( $F $F $FN& & & & &dk8 & & &* * * * *')9 * * *.I I I I I Ir   