
    Mh                     n    d Z ddlZddlZddlmZmZ ddlmZ ddlm	Z	 ddl
mZ  G d de          Zd	ZdS )
z*Tornado handlers for extension management.    N)	urlencode
urlunparse)
APIHandler)web)ExtensionManagerc                   d     e Zd Zdef fdZej        d             Zej        d             Z xZ	S )ExtensionHandlermanagerc                 V    t                                                       || _        d S )N)super
initializer
   )selfr
   	__class__s     m/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/jupyterlab/handlers/extension_manager_handler.pyr   zExtensionHandler.initialize   s$        c           
      D  K   |                      dd          }t          dt          |                      dd                              }t          dt          |                      dd                              }|                      d	d
          dk    r"| j                            |||           d{V  | j                            |||           d{V \  }}|                     d           |g }||d}|||d<   t          | j	        j
        | j	        j        | j	        j        dt          |d          df          }|                    d| d           |dk    rqt          d|dz
            |d<   t          | j	        j
        | j	        j        | j	        j        dt          |d          df          }	|                    d|	 d           ||k     rqt          |dz   |          |d<   t          | j	        j
        | j	        j        | j	        j        dt          |d          df          }
|                    d|
 d           d|d<   t          | j	        j
        | j	        j        | j	        j        dt          |d          df          }|                    d| d           |                     dd                    |                     |                     t%          j        t)          t+          t,          j        |                                         dS )a  GET query returns info on extensions

        Query arguments:
            refresh: [optional] Force refreshing the list of extensions - ["0", "1"]; default 0
            query: [optional] Query to search for extensions - default None (i.e. returns installed extensions)
            page: [optional] Result page - default 1 (min. 1)
            per_page: [optional] Number of results per page - default 30 (max. 100)
        queryN   page1d   per_page30refresh0   )r   r    T)doseq<z>; rel="last"z>; rel="prev"z>; rel="next"z>; rel="first"Linkz, )get_argumentmaxintminr
   r   list_extensions
set_statusr   requestprotocolhostpathr   append
set_headerjoinfinishjsondumpslistmapdataclassesasdict)r   r   r   r   
extensions	last_pagelinks
query_argslastprevnext_firsts               r   getzExtensionHandler.get   sJ      !!'4001c$++FC8899::sC 1 1*d C CDDEEY,,33,&&udH=========&*l&B&B5$PX&Y&Y Y Y Y Y Y Y
I E"+BBJ &+
7#L)L%L%j555	 	D LL0T000111axx%(D1H%5%5
6"!-))!*D999	 	 4444555i%(9%=%=
6""-))!*D999	 	 5555666!"JvL)L%L%j555	 	E LL2U222333OOFDIIe$4$4555DJtC(:J$G$GHHIIJJJJJr   c                 F  K   |                                  }|d         }|d         }|                    d          }|dvs|st          j        dd|d|          d}	 |d	k    r"| j                            ||           d{V }nt|d
k    r!| j                            |           d{V }nM|dk    r!| j                            |           d{V }n&|dk    r | j                            |           d{V }n5# t          $ r(}t          j        dt          |                    |d}~ww xY w|j        dk    r|                     d           n|                     d           |                     t          j        t!          j        |                               dS )a^  POST query performs an action on a specific extension

        Body arguments:
            {
                "cmd": Action to perform - ["install", "uninstall", "enable", "disable"]
                "extension_name": Extension name
                "extension_version": [optional] Extension version (used only for install action)
            }
        cmdextension_nameextension_version)install	uninstallenabledisablei  zCould not process instruction z with extension name NrB   rC   rD   rE   i  error   )get_json_bodyr=   r   	HTTPErrorr
   rB   rC   rD   rE   	Exceptionstrstatusr&   r.   r/   r0   r3   r4   )r   datar?   nameversion	ret_valuees          r   postzExtensionHandler.postb   s      !!##5k$%((.//CCC4C-UUUTUU  
 	
	4i"&,"6"6tW"E"EEEEEEE		##"&,"8"8">">>>>>>>		"&,"5"5d";";;;;;;;			!!"&,"6"6t"<"<<<<<<<	 	4 	4 	4-SVV,,!3	4 w&&OOC    OOC   DJ{1)<<==>>>>>s    BC= =
D/#D**D/)
__name__
__module____qualname__r   r   r   authenticatedr=   rR   __classcell__)r   s   @r   r	   r	      s        "2       	JK JK JKX 	%? %? %? %? %? %? %?r   r	   z/lab/api/extensions)__doc__r3   r/   urllib.parser   r   jupyter_server.base.handlersr   tornador   jupyterlab.extensions.managerr   r	   extensions_handler_path r   r   <module>r_      s    0 0
      . . . . . . . . 3 3 3 3 3 3       : : : : : :x? x? x? x? x?z x? x? x?x 1   r   