
    vgv                         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 d dlmZ d dlm	Z
 dZd	Zeez   Z G d
 de          Z G d de
j                  ZdS )    N)as_bytes)	as_string)encodestring)PY2)urlparse)asynchat_25      
c                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )Listenerc                     d S N )selfurlstatuss      S/var/www/pixelcanvas.ch/venv/lib/python3.11/site-packages/supervisor/http_client.pyr   zListener.status           c                 P    t           j                            |d|d           d S )N 
)sysstderrwrite)r   r   errors      r   r   zListener.error   s+    
ccc555122222r   c                     d S r   r   )r   r   namevalues       r   response_headerzListener.response_header   r   r   c                     d S r   r   r   r   s     r   donezListener.done   r   r   c                    	 t          |          }n# t          $ r d|z  }Y nw xY w	 t          j                            |           nZ# t
          $ rM t          r t          j                            |           n#dt          j        j        z  }t          |          Y nw xY wt          j        	                                 d S )NzUndecodable: %rz<Unable to write Unicode to stdout because it has encoding %s)
r   UnicodeDecodeErrorr   stdoutr   UnicodeEncodeErrorr   encoding
ValueErrorflush)r   r   datasdatass        r   feedzListener.feed   s    	-dOOEE! 	- 	- 	-%,EEE	-	$JU####! 		$ 		$ 		$ $ 
  &&&&#%(Z%89 mm#	 '&		$ 	
s    $$A ABBc                     d S r   r   r"   s     r   closezListener.close4   r   r   N)	__name__
__module____qualname__r   r   r    r#   r.   r0   r   r   r   r   r      sn          3 3 3      *    r   r   c                       e Zd Z	 	 	 	 ddZddZd Zd Zd Zd Zd	 Z	d
 Z
d Zd Zd Zd Zd Zd Zd Zd Zd Zd ZdS )HTTPHandler Nc                 J   t           j                            | ||           || _        d| _        d| _        |                     t                     d| _        | j	        | _
        d| _        d| _        d| _        d| _        d | _        || _        || _        d | _        d| _        d S )NzSupervisor HTTP Clientr   r   F)asynchat
async_chat__init__listener
user_agentbufferset_terminatorCRLF	connectedstatus_linepart
chunk_size
chunk_readlength_readlengthr(   usernamepasswordr   error_handled)r   r;   rG   rH   connmaps         r   r:   zHTTPHandler.__init__8   s     	$$T4555 2D!!!$	  "r   c                 j   | j         t          d          ||z   | _         t          j        | j                   \  }}}}}}|dvrt          || _        d|v r)|                    dd          \  }	}
t          |
          }
n|}	d}
|| _        |
| _        |dk    rJ|	}| 	                    t          j        t          j                   |                     || j        f           d S |dk    rK|dd          }| 	                    t          j        t          j                   |                     |           d S d S )	NzAlready doing a get)httpunix:   P   rM   rN      )r   AssertionErrorr   NotImplementedErrorhostsplitintpathportcreate_socketsocketAF_INETSOCK_STREAMconnectAF_UNIX)r   	serverurlrX   schemerU   path_ignoredparamsqueryfragmenthostnamerY   ip
socketnames                r   getzHTTPHandler.getQ   sC   8 !6777t#>F>OH? ?;lFE8)))%%	$;;!ZZQ//NHdt99DDHD		VBv~v/ABBBLL"di)))))v"122Jv~v/ABBBLL$$$$$ r   c                     | j                             | j                   d| _        |                                  | j                                         d| _        d S )Nr   CLOSED)r;   r0   r   r@   del_channelr[   r   s    r   r0   zHTTPHandler.closem   sR    DH%%%r   c                 n    |                      |d|           |                      t                     d S )Nz: )pushr?   r   r   r   s      r   headerzHTTPHandler.headert   s2    		dddEE*+++		$r   c                     | j         rd S 	 t          j                    \  }}}d|d|d}| j                            | j        |           | j        | _        | 	                                 d| _         ~~~d S )NrP   zCannot connect, error: z ()T)
rI   r@   r   exc_infor;   r   r   ignorerB   r0   )r   tvtbmsgs        r   handle_errorzHTTPHandler.handle_errorx   s     	F		\^^FAa67aa;CM#...DIJJLLL!%Dr   c                    d| _         d}d}|                     |d| j        d|           |                     t                     |                     d| j                   |                     dd           |                     dd	           |                     d
| j                   | j        re| j        d| j        }t          t          t          |                                                              }|                     dd|z             |                     t                     |                     t                     d S )NrP   GETzHTTP/1.1r   HostzAccept-EncodingchunkedAcceptz*/*z
User-agentrO   AuthorizationzBasic %s)r@   ro   rX   r?   rq   rU   r<   rH   rG   r   r   r   strip)r   methodversionauths       r   handle_connectzHTTPHandler.handle_connect   s   					77;<<<		$FDI&&&%y111He$$$L$/222= 	<"mmmT]];D\(4..99::@@BBDKKd):;;;		$		$r   c                 F    | j                             | j        |           d S r   )r;   r.   r   )r   r+   s     r   r.   zHTTPHandler.feed   s"    48T*****r   c                     | j         |z   | _         | j        | j        k    r#|                     | j                    d| _         d S d S Nr   )r=   rB   bodyr.   )r   bytess     r   collect_incoming_dataz!HTTPHandler.collect_incoming_data   sF    kE)9diIIdk"""DKKK  r   c                 <    |                                   d| _        d S r   )rB   r=   rm   s    r   found_terminatorzHTTPHandler.found_terminator   s    		r   c                     d| _         d S r   )r=   rm   s    r   ru   zHTTPHandler.ignore   s    r   c                    | j         }|                    d d          \  }}}t          |          }|                    d          st	          |          | j                            | j        |           |dk    r| j        | _	        nE| j
        | _	        d|z  }| j                            | j        |           |                                  |||fS )N   s   HTTP/   zCannot read, status code %s)r=   rV   rW   
startswithr)   r;   r   r   headersrB   ru   r   r0   )r   liner   r   reasonry   s         r   rA   zHTTPHandler.status_line   s    {"&**T1"5"5V!!(++ 	#T"""TXv...S==DIIDI/&8CM#...JJLLL&&r   c                    | j         }|sA| j        dk    r| j        | _        d S | j        | _        |                     | j                   d S |                    dd          \  }}|rj|rj|                                }|	                                }|dk    r|| _        n|dk    rt          |          | _        |                     ||           d S d S d S )Ns   chunked   :rP   s   transfer-encodings   content-length)r=   r(   chunked_sizerB   r   r>   rF   rV   lowerr   rW   r    )r   r   r   r   s       r   r   zHTTPHandler.headers   s    { 	2}
** -			 I	##DK00000**T1--KD% 2 2zz||///$)DMM..."%e**DK$$T5111112 2 2 2r   c                 H    | j                             | j        ||           d S r   )r;   r    r   rp   s      r   r    zHTTPHandler.response_header   s$    %%dhe<<<<<r   c                 V    |                                   |                                  d S r   )r#   r0   rm   s    r   r   zHTTPHandler.body   s     		

r   c                 D    | j                             | j                   d S r   )r;   r#   r   rm   s    r   r#   zHTTPHandler.done   s     48$$$$$r   c                     | j         }|sd S t          |                                d         d          }|dk    r| j        | _        n!|                     |           | j        | _        | xj        |z  c_        d S )Nr      )r=   rW   rV   trailerrB   r>   chunked_bodyrF   )r   r   rC   s      r   r   zHTTPHandler.chunked_size   sw    { 	Fa"--
q==DII
+++)DIz!r   c                     | j         }|                     t                     | j        | _        |                     |           d S r   )r=   r>   r?   r   rB   r.   r   r   s     r   r   zHTTPHandler.chunked_body   s:    {D!!!%			$r   c                 ~    | j         }|t          k    r*|                                  |                                  d S d S r   )r=   r?   r#   r0   r   s     r   r   zHTTPHandler.trailer   s9     {4<<IIKKKJJLLLLL <r   )r6   NNN)r6   )r1   r2   r3   r:   ri   r0   rq   rz   r   r.   r   r   ru   rA   r   r    r   r#   r   r   r   r   r   r   r5   r5   7   s:        # # # #2% % % %8        &+ + +      ' ' '&2 2 2&= = =  % % %
" 
" 
"      r   r5   )r   r[   supervisor.compatr   r   r   r   r   supervisor.medusar   r8   CRLFr?   objectr   r9   r5   r   r   r   <module>r      s   


  & & & & & & ' ' ' ' ' ' * * * * * * ! ! ! ! ! ! & & & & & & 5 5 5 5 5 5	"u$ $ $ $ $v $ $ $Lz z z z z(% z z z z zr   