Ë
    nûà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      úU/var/www/skyplay_api_hub/venv/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.   „ ñ	ð Ø ŸK™K×@Ñ@óòòó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   € ä�7‰7×ÑœBŸG™GŸO™O¨DÓ1Ó2€DØ€DØÐØ��yÑ Ñ ˆÜ�<‰<×Ñ ¤f§n¡n×&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&�d—k‘k×8Ñ8ô &ô(�—‘×'Ñ'¨×)9Ñ)9ô (ô.Ir   