o
    NK&h                     @  s   d dl mZ d dl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 d dlmZ d d	lmZ d d
lmZ d dlmZ z
d dlmZmZ W n ey]   d dlmZmZ Y nw G dd dZdS )    )annotationsN)RemoteDisconnected)indent)AnyOptional)URLError)Request)urlopen)get_logo)MOTDTTY)Colors)dumpsloadsc                   @  sB   e Zd ZdddZdddZdddZdd ddZedd ZdS )!InspectorClienthoststrportintsecureboolrawapi_keyOptional[str]returnNonec                 C  sd   |rdnd| _ || _|| _|| _|| _dD ]}| d}| j|r/|| _ | jt|d  | _qd S )Nhttpshttp)r   r   ://)schemer   r   r   r   
startswithlen)selfr   r   r   r   r   r   full r#   M/var/www/html/venv/lib/python3.10/site-packages/sanic/cli/inspector_client.py__init__   s   
zInspectorClient.__init__actionkwargsr   c                 K  sf   |dkr
|    d S | j|fi |d}|r1t|ttfr#t|nt|}tj	
|d  d S d S )Ninforesult
)r(   requestget
isinstancelistdictr   r   sysstdoutwrite)r!   r&   r'   r)   outr#   r#   r$   do,   s   
zInspectorClient.doc              
   C  s   t jj}| dd}| js|sd S |d }|d}|di }d|d |d< tt | j	||j
dd	|d
 |d  D ]+\}}ddd | D }|dtdtj tj | tj |gd d  q>d S )N GETr)   r(   extraz, packagesF
Inspecting)versionr&   r3   workersr*   c                 s  s0    | ]\}}d | dt j | t j V  qdS )	z: N)r   BLUEEND).0keyvaluer#   r#   r$   	<genexpr>H   s
    
z'InspectorClient.info.<locals>.<genexpr>z  )r0   r1   r2   r+   r   popjoinr   r
   base_urldisplayitemsr   r   BOLDSANICr>   )r!   r3   responsedatarF   r7   namer(   r#   r#   r$   r(   9   s@   



zInspectorClient.infoPOSTmethodc                 K  s@  | j  d| }|i d}|rt| |d< d|d d< | jr*d| j |d d< t|fi |}z<t|-}| }t|}	| jrZt	j
t|	d	d
  i W  d    W S |	W  d    W S 1 sgw   Y  W d S  ttfy }
 z#t	jtj dtj | j  tj d|
 d
 t	d W Y d }
~
d S d }
~
ww )N/)rN   headersrK   zapplication/jsonrP   zcontent-typezBearer authorizationr)   r*   z#Could not connect to inspector at: zS
Either the application is not running, or it did not start an inspector instance.
   )rE   r   encoder   URequestr	   readr   r   r0   r1   r2   r,   r   r   stderrr   REDYELLOWr>   exit)r!   r&   rN   r'   urlparamsr+   rJ   r   loadeder#   r#   r$   r+   Z   sB   

(zInspectorClient.requestc                 C  s   | j  d| j d| j S )Nr   :)r   r   r   )r!   r#   r#   r$   rE   u   s   zInspectorClient.base_urlN)r   r   r   r   r   r   r   r   r   r   r   r   )r&   r   r'   r   r   r   )r   r   )rM   )r&   r   rN   r   r'   r   r   r   )	__name__
__module____qualname__r%   r4   r(   r+   propertyrE   r#   r#   r#   r$   r      s    


!r   )
__future__r   r0   http.clientr   textwrapr   typingr   r   urllib.errorr   urllib.requestr   rT   r	   sanic.application.logor
   sanic.application.motdr   	sanic.logr   ujsonr   r   ModuleNotFoundErrorjsonr   r#   r#   r#   r$   <module>   s"    