o
    r¨Êh?  ã                   @   s¾   d Z ddlmZ ddlm  mZ zddlZW n
   ddlmZ Y ddl	Z	G dd„ dƒZ
G dd„ dƒZedkr]G d	d
„ d
e
ƒZddlm  mZ e dd¡Zeƒ Ze e¡ e ¡  dS dS )z@$Id: xmlrpc_handler.py,v 1.6 2004/04/21 14:09:24 akuchling Exp $é    )Ú	as_stringNc                   @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
Úxmlrpc_handlerc                 C   s   |j d d… dkrdS dS )Né   z/RPC2é   r   )Úuri©ÚselfÚrequest© r
   úR/var/www/html/env/lib/python3.10/site-packages/supervisor/medusa/xmlrpc_handler.pyÚmatch   s   zxmlrpc_handler.matchc                 C   s(   |j dkrt| |ƒ|_d S | d¡ d S )NÚPOSTi�  )ÚcommandÚ	collectorÚerrorr   r
   r
   r   Úhandle_request   s   
zxmlrpc_handler.handle_requestc                 C   s²   t  |¡\}}z7z|  ||¡}t|ƒtdƒkr|f}W n   t  t  ddt ¡ d t ¡ d f ¡¡}Y nt j|dd�}W n   | d¡ Y d S d|d< | 	|¡ | 
¡  d S )	Nr
   r   z%s:%sr   )Úmethodresponseiô  ztext/xmlzContent-Type)Ú	xmlrpclibÚloadsÚcallÚtypeÚdumpsÚFaultÚsysÚexc_infor   ÚpushÚdone)r   Údatar	   ÚparamsÚmethodÚresponser
   r
   r   Úcontinue_request#   s$   €"ÿ€
zxmlrpc_handler.continue_requestc                 C   s   t dƒ‚)NÚNotYetImplemented)Ú	Exception©r   r   r   r
   r
   r   r   ;   s   zxmlrpc_handler.callN)Ú__name__Ú
__module__Ú__qualname__r   r   r!   r   r
   r
   r
   r   r      s
    r   c                   @   s(   e Zd ZdZdd„ Zdd„ Zdd„ ZdS )	r   z'gathers input for POST and PUT requestsc                 C   sH   || _ || _g | _| d¡}|s| d¡ d S t|ƒ}| jj |¡ d S )Nzcontent-lengthi›  )Úhandlerr	   r   Ú
get_headerr   ÚintÚchannelÚset_terminator)r   r(   r	   Úclr
   r
   r   Ú__init__C   s   
zcollector.__init__c                 C   s   | j  |¡ d S )N)r   Úappend©r   r   r
   r
   r   Úcollect_incoming_dataS   s   zcollector.collect_incoming_datac                 C   s2   | j j d¡ td | j¡ƒ}| j || j ¡ d S )Ns   

ó    )r	   r+   r,   r   Újoinr   r(   r!   r0   r
   r
   r   Úfound_terminatorV   s   zcollector.found_terminatorN)r%   r&   r'   Ú__doc__r.   r1   r4   r
   r
   r
   r   r   ?   s
    r   Ú__main__c                   @   s   e Zd Zdd„ ZdS )Úrpc_democ                 C   s   t d||f ƒ dS )Nzmethod="%s" params=%szSure, that works)Úprintr$   r
   r
   r   r   a   s   zrpc_demo.callN)r%   r&   r'   r   r
   r
   r
   r   r7   _   s    r7   Ú i@  )ÚVERSIONÚsupervisor.compatr   Úsupervisor.medusa.http_serverÚmedusaÚhttp_serverr   Úxmlrpc.clientÚclientr   r   r   r%   r7   Úsupervisor.medusa.asyncore_25Úasyncore_25ÚasyncoreÚhsÚrpcÚinstall_handlerÚloopr
   r
   r
   r   Ú<module>   s$   +
ò