
    IR-e<                         d dl Z d dlZd dlZd dlZd dlmZ d dlmZm	Z	 ddl
mZ ddlmZ g Z G d de          Z G d d	e j        e	          ZdS )
    N)SimpleXMLRPCRequestHandlerSimpleXMLRPCServer   )	SAMP_ICON)SAMPWarningc                       e Zd ZdZd Zd ZdS )SAMPSimpleXMLRPCRequestHandlerz6
    XMLRPC handler of Standard Profile requests.
    c                     | j         dk    ra|                     dd           |                     dd           |                                  | j                            t                     d S d S )Nz
/samp/icon   OKzContent-Typez	image/png)pathsend_responsesend_headerend_headerswfilewriter   )selfs    =lib/python3.11/site-packages/astropy/samp/standard_profile.pydo_GETz%SAMPSimpleXMLRPCRequestHandler.do_GET   sq    9$$sD)))^[999JY'''''	 %$    c                 H   |                                  s|                                  dS 	 d}t          | j        d                   }g }|rWt	          ||          }|                    | j                            |                     |t          |d                   z  }|Wd	                    |          }t          j        |          \  }}|dk    rt          |          }|                    | j                   d| j        v r.|                    | j                            d                     n|                    d           t          |          }t          j        ||	          }ns|d
v rod}|dk    r)|                                 |d         d<   ||d         d<   n(|                                 |d         d<   ||d         d<   t          j        ||	          }|                     |          }|dS | j                            |t+          | dd          | j                  }	|                     d           |                     dd           | j        ~t          |	          | j        k    rf|                                                     dd          }
|
r<	 t          j        |	          }	|                     dd           n# t8          $ r Y nw xY w|                     dt;          t          |	                               |                                  | j                             |	           dS # tB          $ r}|                     d           tE          | j        d          r|| j        j#        rp|                     dt;          |                     tI          j%                    }t;          |&                    dd          d          }|                     d|           |                     dd           |                                  Y d}~dS d}~ww xY w)z
        Handles the HTTP POST request.

        Attempts to interpret all HTTP POST requests as XML-RPC calls,
        which are forwarded to the server's ``_dispatch`` method for
        handling.
        Ni   zcontent-lengthr   zsamp.webhub.registerOriginunknown)
methodname)zsamp.hub.notifyzsamp.hub.notifyAllzsamp.hub.callzsamp.hub.callAllsamp.hub.callAndWaitr      hostuser	_dispatchr   zContent-typeztext/xmlgzipr   zContent-EncodingzContent-lengthi  _send_traceback_headerzX-exceptionASCIIbackslashreplacezX-traceback0)'is_rpc_path_valid
report_404intheadersminappendrfilereadlenjoinxmlrpcloadslistclient_addressgettupledumpsaddress_stringdecode_request_contentserver_marshaled_dispatchgetattrr   r   r   encode_thresholdaccept_encodingsgzip_encodeNotImplementedErrorstrr   r   r   	Exceptionhasattrr"   	traceback
format_excencode)r   max_chunk_sizesize_remainingL
chunk_sizedataparamsmethodr   responseqetraces                r   do_POSTz&SAMPSimpleXMLRPCRequestHandler.do_POST   s@    %%'' 	OOFX	'
 .N .>!?@@NA  - @@
44555#ae**, ! - 88A;;D#\$//NFF///fd1222t|++MM$,"2"28"<"<====MM),,,v|Fv>>>    !333(,(;(;(=(=F1If%(,F1If%%)-)<)<)>)>F2Jv&)-F2Jv&|Fv>>>..t44D| {66gdK66	 H, s###^Z888$0x==4#888--//33FA>>A !!'-'9('C'CH ,,-?HHHH2 ! ! ! D!-s3x==/A/ABBBJX&&&&&A  	 	 	 s### %=>>7K67   A777!,..ELL2DEEwOO  666-s333!	s1   GL< <0L< !*K 
KK<
P!CPP!N)__name__
__module____qualname____doc__r   rQ    r   r   r	   r	      sA         ( ( (e' e' e' e' e'r   r	   c                   *    e Zd ZdZdedddfdZd ZdS )ThreadingXMLRPCServerz3
    Asynchronous multithreaded XMLRPC server.
    NTc                 F    || _         t          j        | |||||           d S )N)logr   __init__)r   addrrZ   requestHandlerlogRequests
allow_noneencodings          r   r[   zThreadingXMLRPCServer.__init__   s7     #$Z	
 	
 	
 	
 	
r   c                     | j         #t          j                            | ||           d S t	          j        d                    |t          j                    d                   t                     d S )Nz;Exception happened during processing of request from {}: {}r   )
rZ   socketserver
BaseServerhandle_errorwarningswarnformatsysexc_infor   )r   requestr3   s      r   rd   z"ThreadingXMLRPCServer.handle_error   sq    8#00wOOOOOMMTT"CLNN1$5  	    r   )rR   rS   rT   rU   r	   r[   rd   rV   r   r   rX   rX      sR          5
 
 
 
	 	 	 	 	r   rX   )rb   rh   rC   re   xmlrpc.clientclientr0   xmlrpc.serverr   r   	constantsr   errorsr   __all__r	   ThreadingMixInrX   rV   r   r   <module>rr      s        



            H H H H H H H H                  
q' q' q' q' q'%? q' q' q'h    L79K     r   