o
    f?                     @   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
   S/var/www/html/venv/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$   +
