o
    NK&h                     @   s   d dl Z d dlmZmZ d dlmZmZmZmZ d dl	m
Z
 d dlmZ d dlmZ eeef Zeeef Zeeged f Zeg ee f ZG dd dZG d	d
 d
eZdS )    N)	AwaitableMutableMapping)AnyCallableOptionalUnion)
BadRequest)TransportProtocol)WebSocketConnectionc                   @   sb   e Zd ZdddZdddZdd	d
ZdddZedefddZ	de
ddfddZdddZdS )MockProtocol	transportMockTransportc                 C   s(   || _ t | _| j  t | _d S N)r   asyncioEvent_not_pausedset	_complete)selfr   loop r   D/var/www/html/venv/lib/python3.10/site-packages/sanic/models/asgi.py__init__   s   

zMockProtocol.__init__returnNc                 C      | j   d S r   )r   clearr   r   r   r   pause_writing      zMockProtocol.pause_writingc                 C   r   r   )r   r   r   r   r   r   resume_writing   r   zMockProtocol.resume_writingc                    s*   | j   | jddddI d H  d S )Nhttp.response.body    Ftypebody	more_body)r   r   r   sendr   r   r   r   complete   s
   

zMockProtocol.completec                 C   s
   | j  S r   )r   is_setr   r   r   r   is_complete$   s   
zMockProtocol.is_completedatac                    s*   | j s| jd|ddI d H  d S d S )Nr    Tr"   )r)   r   r&   r   r*   r   r   r   	push_data(   s   
zMockProtocol.push_datac                    s   | j  I d H  d S r   )r   waitr   r   r   r   drain.   s   zMockProtocol.drain)r   r   r   N)__name__
__module____qualname__r   r   r   r'   propertyboolr)   bytesr,   r.   r   r   r   r   r      s    



r   c                   @   s   e Zd ZU ee ed< dedededdfddZ	defd	d
Z
	ddedeeeef  fddZdefddZdededefddZdddZdddZdefddZdS )r   	_protocolscopereceiver&   r   Nc                 C   s"   || _ || _|| _d | _d | _d S r   )r7   _receive_sendr6   r   )r   r7   r8   r&   r   r   r   r   5   s
   
zMockTransport.__init__c                 C   s   | j s
t| | j| _ | j S r   )r6   r   r   r   r   r   r   get_protocol>   s   zMockTransport.get_protocolinfoc                 C   s0   |dkr
| j dS |dkr| j ddv S |S )Npeernameclient
sslcontextscheme)httpswss)r7   get)r   r<   defaultr   r   r   get_extra_infoC   s
   zMockTransport.get_extra_infoc                 C   s    z| j W S  ty   tdw )NzImproper websocket connection.)_websocket_connectionAttributeErrorr   r   r   r   r   get_websocket_connectionL   s
   z&MockTransport.get_websocket_connectionc                 C   s   t ||| jdg | _| jS )Nsubprotocols)r
   r7   rC   rF   )r   r&   r8   r   r   r   create_websocket_connectionR   s   z)MockTransport.create_websocket_connectionc                 C   s   t r   )NotImplementedErrorr   r   r   r   add_taskZ   s   zMockTransport.add_taskc                    s   |  |I d H  d S r   )r:   r+   r   r   r   r&   ]   s   zMockTransport.sendc                    s   |   I d H S r   )r9   r   r   r   r   r8   b   s   zMockTransport.receiver   r/   )r0   r1   r2   r   r   __annotations__	ASGIScopeASGIReceiveASGISendr   r;   strr   r4   rE   r
   rH   rJ   rL   r&   ASGIMessager8   r   r   r   r   r   2   s:   
 
	
	


r   )r   collections.abcr   r   typingr   r   r   r   sanic.exceptionsr   sanic.models.protocol_typesr	   "sanic.server.websockets.connectionr
   rQ   rN   rR   rP   rO   r   r   r   r   r   r   <module>   s    !