
    kc?                     &   d Z ddlmZ ddlmc mZ 	 ddlZddl	Z	 G d d      Z
 G d d      Zedk(  rQ G d	 d
e
      Zddlmc mZ  ej
                  dd      Z e       Zej'                  e        ej(                          yy#  ddlmZ Y yxY w)z@$Id: xmlrpc_handler.py,v 1.6 2004/04/21 14:09:24 akuchling Exp $    )	as_stringNc                   $    e Zd Zd Zd Zd Zd Zy)xmlrpc_handlerc                 *    |j                   d d dk(  ryy)N   z/RPC2   r   )uriselfrequests     B/usr/lib/python3/dist-packages/supervisor/medusa/xmlrpc_handler.pymatchzxmlrpc_handler.match   s    ;;r?g%    c                 h    |j                   dk(  rt        | |      |_        y |j                  d       y )NPOSTi  )command	collectorerrorr
   s     r   handle_requestzxmlrpc_handler.handle_request   s)    ??f$ )4 9GMM3r   c           
         t        j                  |      \  }}	 	 | j                  ||      }t        |      t        d      k7  r|f}t        j                  |d      }d|d<   |j                  |       |j                          y #  t        j                  t        j
                  dt        j                         d   dt        j                         d               }Y xY w#  |j                  d       Y y xY w)	N r   )methodresponser   :ztext/xmlzContent-Typei  )	xmlrpclibloadscalltypedumpsFaultsysexc_infopushdoner   )r   datar   paramsmethodresponses         r   continue_requestzxmlrpc_handler.continue_request#   s    "$/	
H99ff5>T"X- ({H %??HQG '1GN#LL(#LLN$??!s||~a7H#,,.YZJ[,\]
	 MM3s   ,B C$ AC!C$ $C9c                     t        d      )NNotYetImplemented)	Exceptionr   r&   r%   s      r   r   zxmlrpc_handler.call;   s    +,,r   N)__name__
__module____qualname__r   r   r(   r   r   r   r   r   r      s     0-r   r   c                   "    e Zd ZdZd Zd Zd Zy)r   z'gathers input for POST and PUT requestsc                     || _         || _        g | _        |j                  d      }|s|j	                  d       y t        |      }| j                  j                  j                  |       y )Nzcontent-lengthi  )handlerr   r$   
get_headerr   intchannelset_terminator)r   r2   r   cls       r   __init__zcollector.__init__C   sZ    	 !12MM3RBLL  //4r   c                 :    | j                   j                  |       y )N)r$   appendr   r$   s     r   collect_incoming_datazcollector.collect_incoming_dataS   s    		r   c                     | j                   j                  j                  d       t        dj	                  | j
                              }| j                  j                  || j                          y )Ns   

r   )r   r5   r6   r   joinr$   r2   r(   r;   s     r   found_terminatorzcollector.found_terminatorV   sI    ++[9$)),-%%tT\\:r   N)r-   r.   r/   __doc__r8   r<   r?   r   r   r   r   r   ?   s    15 ;r   r   __main__c                       e Zd Zd Zy)rpc_democ                 &    t        d|d|       y)Nzmethod="z	" params=zSure, that works)printr,   s      r   r   zrpc_demo.calla   s    VV<=%r   N)r-   r.   r/   r   r   r   r   rC   rC   _   s    	&r   rC    i@  )VERSIONsupervisor.compatr   supervisor.medusa.http_servermedusahttp_serverr   xmlrpc.clientclientr    r   r   r-   rC   supervisor.medusa.asyncore_25asyncore_25asyncorehsrpcinstall_handlerloopr   r   r   <module>rU      s    M ' 3 3& )- )-V; ;< z&N & 54	 	 	 "d	+B
*CHMMO ]&%s   B B