
    Mh-                         d Z ddlZddlZddlmZ ddlmZ ddlmZ ddl	m
Z
mZ ddlmZ dd	lmZmZ d
Z G d dej        e          Z G d de          Z G d de          ZdefdefdefgZdS )z(Tornado handlers for api specifications.    N)Any)ensure_async)web)	isoformatutcfromtimestamp)
authorized   )
APIHandlerJupyterHandlerapic                       e Zd ZdZeZd Zej        e	d                         Z
ej        e	d                         Zd ZdS )APISpecHandlerz A spec handler for the REST API.c                     t           j                            | t          j                            t                               dS )z Initialize the API spec handler.)pathN)r   StaticFileHandler
initializeosr   dirname__file__selfs    d/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/jupyter_server/services/api/handlers.pyr   zAPISpecHandler.initialize   s2    ((BGOOH4M4M(NNNNN    c                 0    |                      dd          S )Napi.yamlF)include_body)getr   s    r   headzAPISpecHandler.head   s     xx
x777r   c                 v    | j                             d           t          j                            | d          S )zGet the API spec.z+Serving api spec (experimental, incomplete)r   )logwarningr   r   r   r   s    r   r   zAPISpecHandler.get"   s4     	FGGG$((z:::r   c                     dS )zGet the content type.ztext/x-yaml r   s    r   get_content_typezAPISpecHandler.get_content_type)   s    }r   N)__name__
__module____qualname____doc__AUTH_RESOURCEauth_resourcer   r   authenticatedr   r   r   r$   r#   r   r   r   r      s        **!MO O O 	8 8 Z 8 	; ; Z ;
    r   r   c                   J    e Zd ZdZeZdZej        e	d                         Z
dS )APIStatusHandlerzAn API status handler.Fc                   K   | j                             dt          d                    }t          |          }t	          | j                                                   d{V }t          d |D                       }t          | j        	                                          }||t          |          |d}|                     t          j        |d                     dS )zGet the API status.startedr   Nc              3   &   K   | ]}|d          V  dS )connectionsNr#   ).0ks     r   	<genexpr>z'APIStatusHandler.get.<locals>.<genexpr>=   s'      BBQ- 0BBBBBBr   )r/   last_activitykernelsr1   T)	sort_keys)settingsr   r   r   r   kernel_managerlist_kernelssumapplicationr5   lenfinishjsondumps)r   r/   r6   total_connectionsr5   models         r   r   zAPIStatusHandler.get4   s      
 -##I/?/B/BCCG$$$T%8%E%E%G%GHHHHHHHHBB'BBBBB!$"2"@"@"B"BCC*7||,	
 
 	DJu55566666r   N)r%   r&   r'   r(   r)   r*   _track_activityr   r+   r   r   r#   r   r   r-   r-   .   sK          !MO7 7 Z 7 7 7r   r-   c                   2    e Zd ZdZej        d             ZdS )IdentityHandlerz%Get the current user's identity modelc           
      B  K   |                      dd          }d|}|ri	 t          j        |          }n(# t          $ r}t	          j        d|          |d}~ww xY wt          |t                    st	          j        d|          ni }i }| j        }|	                                D ]\  }}t          |t                    r.t          |t                    rt          d |D                       st	          j        d|          g x}	||<   |D ]I}
t          | j                            | ||
|                     d{V }|r|	                    |
           J| j                            |          }||d}|                     t          j        |                     dS )zGet the identity model.permissions zDpermissions should be a JSON dict of {"resource": ["action",]}, got i  Nc              3   @   K   | ]}t          |t                    V  d S )N)
isinstancestr)r2   actions     r   r4   z&IdentityHandler.get.<locals>.<genexpr>a   s,      IIv:fc22IIIIIIr   )identityrG   )get_argumentr?   loads
ValueErrorr   	HTTPErrorrJ   dictcurrent_useritemsrK   listallr   
authorizeris_authorizedappendidentity_provideridentity_modelwriter@   )r   permissions_jsonbad_permissions_msgpermissions_to_checkerG   userresourceactionsallowedrL   r   rM   rB   s                 r   r   zIdentityHandler.getK   s      !% 1 1- D D{gw{{ 	&E'+z2B'C'C$$ E E EmC)<==1DE2D99 >mC)<===> $& ,. !5!;!;!=!= 	+ 	+Hgx-->!'400> IIIIIII>
 mC)<===.00Gk(+! + +#/O11$fhOO$ $      
  +NN6***+ $(#9#H#H#N#N &
 
 	

4:e$$%%%%%s   6 
A AAN)r%   r&   r'   r(   r   r+   r   r#   r   r   rE   rE   H   s7        //&& && && && &&r   rE   z/api/spec.yamlz/api/statusz/api/me)r(   r?   r   typingr   jupyter_core.utilsr   tornador   jupyter_server._tzr   r   jupyter_server.auth.decoratorr   base.handlersr
   r   r)   r   r   r-   rE   default_handlersr#   r   r   <module>rl      sI   . .  				       + + + + + +       : : : : : : : : 4 4 4 4 4 4 7 7 7 7 7 7 7 7    S*N   47 7 7 7 7z 7 7 74*& *& *& *& *&j *& *& *&\ '%&!   r   