<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
a
    XC?h                  
   @   sb  d dl Z d dlZd dlZd dlmZ d dlmZ d dlZd dlZ	d dl
mZ d dlZd dlmZ zd dlZW n ey   dZY n0 dd Zdej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!G dd de"Z#G dd de#Z$G dd de#Z%G dd de#Z&e' Z(Z)edddZ*dd  Z+e+d!rFd"d# Z,ne+d$rZd%d# Z,nd&d# Z,[*[+d'd( Z-G d)d* d*Z.d+d, Z/d-d. Z0G d/d0 d0Z1d1d2 Z2e.e1fZ3G d3d4 d4Z4G d5d6 d6Z5G d7d8 d8Z6G d9d: d:Z7G d;d< d<Z8G d=d> d>Z9d Z: Z;Z<dYd@dAZ=dZdBdCZ>d[dDdEZ?dFdG Z@d\dIdJZAG dKdL dLerPejBneCZDG dMdN dNZEG dOdP dPZFG dQdR dReFZGG dSdT dTZHeHZIeJdUkr^eHdVZKzeLeKjMN  W n0 e#y ZO zeLdWeO W Y dZO[On
dZO[O0 0 e9eKZPePQ  ePRd	dX ePSdd	 zeP D ]ZTeLeT qW n0 e#y\ ZO zeLdWeO W Y dZO[On
dZO[O0 0 dS )]    N)datetime)Decimal)expat)BytesIOc                 C   s$   |  dd} |  dd} |  ddS )N&z&amp;<z&lt;>z&gt;)replace)s r   2/opt/alt/python39/lib64/python3.9/xmlrpc/client.pyescape   s    r   z%d.%d   ii   iDiiipiԁiCiBiiic                   @   s   e Zd ZejZdS )ErrorN)__name__
__module____qualname__object__str__r   r   r   r   r      s   r   c                   @   s   e Zd Zdd Zdd ZdS )ProtocolErrorc                 C   s&   t |  || _|| _|| _|| _d S N)r   __init__urlerrcodeerrmsgheaders)selfr   r   r   r   r   r   r   r      s
    
zProtocolError.__init__c                 C   s   d| j j| j| j| jf S )Nz<%s for %s: %s %s>)	__class__r   r   r   r   r   r   r   r   __repr__   s    zProtocolError.__repr__Nr   r   r   r   r   r   r   r   r   r      s   r   c                   @   s   e Zd ZdS )ResponseErrorN)r   r   r   r   r   r   r   r!      s   r!   c                   @   s   e Zd Zdd Zdd ZdS )Faultc                 K   s   t |  || _|| _d S r   )r   r   	faultCodefaultString)r   r#   r$   Zextrar   r   r   r      s    
zFault.__init__c                 C   s   d| j j| j| jf S )Nz<%s %s: %r>)r   r   r#   r$   r   r   r   r   r      s    zFault.__repr__Nr    r   r   r   r   r"      s   r"      c                 C   s*   zt | dkW S  ty$   Y dS 0 d S )NZ0001F)_day0strftime
ValueError)Zfmtr   r   r   _try  s    r)   z%Yc                 C   s
   |  dS N%Y%m%dT%H:%M:%Sr'   valuer   r   r   _iso8601_format  s    r/   z%4Yc                 C   s
   |  dS )Nz%4Y%m%dT%H:%M:%Sr,   r-   r   r   r   r/     s    c                 C   s   |  ddS )Nr+      )r'   zfillr-   r   r   r   r/     s    c                 C   sL   t | trt| S t | ttjfs<| dkr2t } t| } d| d d  S )Nr   z%04d%02d%02dT%02d:%02d:%02d   )
isinstancer   r/   tupletimestruct_time	localtimer-   r   r   r   	_strftime  s    

r8   c                   @   sn   e Zd ZdddZdd Zdd Zdd	 Zd
d Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd ZdS )DateTimer   c                 C   s    t |tr|| _n
t|| _d S r   )r3   strr.   r8   )r   r.   r   r   r   r   .  s    
zDateTime.__init__c                 C   st   t |tr| j}|j}nTt |tr2| j}t|}n:t |trH| j}|}n$t|drd|  }| }n| }t}||fS )N	timetuple)	r3   r9   r.   r   r/   r:   hasattrr;   NotImplementedr   otherr
   or   r   r   make_comparable4  s    





zDateTime.make_comparablec                 C   s"   |  |\}}|tu rtS ||k S r   rA   r=   r>   r   r   r   __lt__F  s    zDateTime.__lt__c                 C   s"   |  |\}}|tu rtS ||kS r   rB   r>   r   r   r   __le__L  s    zDateTime.__le__c                 C   s"   |  |\}}|tu rtS ||kS r   rB   r>   r   r   r   __gt__R  s    zDateTime.__gt__c                 C   s"   |  |\}}|tu rtS ||kS r   rB   r>   r   r   r   __ge__X  s    zDateTime.__ge__c                 C   s"   |  |\}}|tu rtS ||kS r   rB   r>   r   r   r   __eq__^  s    zDateTime.__eq__c                 C   s   t | jdS r*   )r5   strptimer.   r   r   r   r   r;   d  s    zDateTime.timetuplec                 C   s   | j S r   r-   r   r   r   r   r   l  s    zDateTime.__str__c                 C   s   d| j j| jt| f S )Nz<%s %r at %#x>)r   r   r.   idr   r   r   r   r   o  s    zDateTime.__repr__c                 C   s   t | | _d S r   )r:   stripr.   r   datar   r   r   decoder  s    zDateTime.decodec                 C   s$   | d | | j | d d S Nz<value><dateTime.iso8601>z</dateTime.iso8601></value>
)writer.   )r   outr   r   r   encodeu  s    
zDateTime.encodeN)r   )r   r   r   r   rA   rC   rD   rE   rF   rG   r;   r   r   rM   rQ   r   r   r   r   r9   (  s   
r9   c                 C   s   t  }||  |S r   )r9   rM   rL   r.   r   r   r   	_datetimez  s    
rS   c                 C   s   t | dS r*   )r   rH   )rL   r   r   r   _datetime_type  s    rT   c                   @   s6   e Zd ZdddZdd Zdd Zdd	 Zd
d ZdS )BinaryNc                 C   s>   |d u rd}n&t |ttfs,td|jj t|}|| _d S )N    z#expected bytes or bytearray, not %s)r3   bytes	bytearray	TypeErrorr   r   rL   rK   r   r   r   r     s    zBinary.__init__c                 C   s   t | jdS )Nzlatin-1)r:   rL   r   r   r   r   r     s    zBinary.__str__c                 C   s   t |tr|j}| j|kS r   )r3   rU   rL   )r   r?   r   r   r   rG     s    
zBinary.__eq__c                 C   s   t || _d S r   )base64decodebytesrL   rK   r   r   r   rM     s    zBinary.decodec                 C   s4   | d t| j}| |d | d d S Nz<value><base64>
asciiz</base64></value>
)rO   rZ   encodebytesrL   rM   )r   rP   encodedr   r   r   rQ     s    
zBinary.encode)N)r   r   r   r   r   rG   rM   rQ   r   r   r   r   rU     s
   
rU   c                 C   s   t  }||  |S r   )rU   rM   rR   r   r   r   _binary  s    
r`   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )ExpatParserc                 C   sD   t d d  | _}|| _|j|_|j|_|j|_	d }|
|d  d S r   )r   ZParserCreate_parser_targetstartZStartElementHandlerendZEndElementHandlerrL   ZCharacterDataHandlerxml)r   targetparserencodingr   r   r   r     s    zExpatParser.__init__c                 C   s   | j |d d S )NF)rb   ParserK   r   r   r   feed  s    zExpatParser.feedc                 C   s6   z
| j }W n ty   Y n0 | `| ` |dd d S )NrV   T)rb   AttributeErrorrc   rj   )r   rh   r   r   r   close  s    
zExpatParser.closeN)r   r   r   r   rk   rm   r   r   r   r   ra     s   	ra   c                   @   s   e Zd ZdddZi Zdd Zdd Zd	d
 Zeeed< dd Z	e	ee
< dd Zeee< eZdd Zeee< efddZeee< dd Zeee< eee< dd Zeee< eee< efddZeee< dd Zeee< dd Zeee< eee< eed< dS )
MarshallerNFc                 C   s   i | _ d | _|| _|| _d S r   )memorL   ri   
allow_none)r   ri   rp   r   r   r   r     s    zMarshaller.__init__c                 C   s   g }|j }| j}t|tr@|d ||j|jd| |d n4|d |D ]}|d ||| |d qL|d d|}|S )	Nz<fault>
)r#   r$   z	</fault>
z	<params>
z<param>
z	</param>
z
</params>
 )append_Marshaller__dumpr3   r"   r#   r$   join)r   valuesrP   rO   dumpvresultr   r   r   dumps  s&    




zMarshaller.dumpsc                 C   s   z| j t| }W nd tyv   t|ds:tdt| t|jD ]"}|| j  v rDtdt| qD| j d }Y n0 || || d S )N__dict__zcannot marshal %s objects_arbitrary_instance)dispatchtypeKeyErrorr<   rY   __mro__keys)r   r.   rO   ftype_r   r   r   Z__dump  s    
zMarshaller.__dumpc                 C   s   | j std|d d S )Nz0cannot marshal None unless allow_none is enabledz<value><nil/></value>)rp   rY   r   r.   rO   r   r   r   dump_nil  s    zMarshaller.dump_nilc                 C   s$   |d ||rdpd |d d S )Nz<value><boolean>10z</boolean></value>
r   r   r   r   r   	dump_bool   s    zMarshaller.dump_boolc                 C   s<   |t ks|tk rtd|d |tt| |d d S )Nzint exceeds XML-RPC limitsz<value><int>z</int></value>
)MAXINTMININTOverflowErrorr:   intr   r   r   r   	dump_long&  s
    zMarshaller.dump_longc                 C   s    |d |t | |d d S )Nz<value><double>z</double></value>
)reprr   r   r   r   dump_double1  s    zMarshaller.dump_doublec                 C   s    |d ||| |d d S )Nz<value><string>z</string></value>
r   )r   r.   rO   r   r   r   r   dump_unicode7  s    zMarshaller.dump_unicodec                 C   s,   |d t |}||d |d d S r\   )rZ   r^   rM   )r   r.   rO   r_   r   r   r   
dump_bytes=  s    
zMarshaller.dump_bytesc                 C   sZ   t |}|| jv rtdd | j|< | j}|d |D ]}||| q6|d | j|= d S )Nz"cannot marshal recursive sequencesz<value><array><data>
z</data></array></value>
)rI   ro   rY   rs   )r   r.   rO   irv   rw   r   r   r   
dump_arrayE  s    

zMarshaller.dump_arrayc                 C   s   t |}|| jv rtdd | j|< | j}|d | D ]D\}}|d t|ts\td|d||  ||| |d q:|d | j|= d S )Nz%cannot marshal recursive dictionariesz<value><struct>
z	<member>
zdictionary key must be stringz<name>%s</name>
z
</member>
z</struct></value>
)rI   ro   rY   rs   itemsr3   r:   )r   r.   rO   r   r   rv   krw   r   r   r   dump_structS  s    




zMarshaller.dump_structc                 C   s    |d |t | |d d S rN   )r8   r   r   r   r   dump_datetimee  s    zMarshaller.dump_datetimec                 C   s2   |j tv r || _||  | `n| |j| d S r   )r   WRAPPERSrO   rQ   r   rz   r   r   r   r   dump_instancek  s
    

zMarshaller.dump_instancer{   )NF) r   r   r   r   r|   ry   rs   r   r}   r   boolr   r   Zdump_intr   floatr   r   r:   r   rW   rX   r   r4   listr   dictr   r   r   r9   rU   r   r   r   r   rn     s:   
	rn   c                   @   sj  e Zd ZdDddZdd Zdd Zdd	 Zd
d Zdd Zdd Z	dd Z
i Zdd Zeed< dd Zeed< dd Zeed< eed< eed< eed< eed< eed< d d! Zeed"< eed#< d$d% Zeed&< d'd( Zeed)< eed*< d+d, Zeed-< d.d/ Zeed0< d1d2 Zeed3< d4d5 Zeed6< d7d8 Zeed9< d:d; Zeed<< d=d> Zeed?< d@dA ZeedB< dCS )EUnmarshallerFc                 C   sH   d | _ g | _g | _g | _d| _d | _d| _| jj| _|p:|| _|| _	d S )NFutf-8)
_type_stack_marks_data_value_methodname	_encodingrr   _use_datetime
_use_bytes)r   use_datetimeuse_builtin_typesr   r   r   r     s    

zUnmarshaller.__init__c                 C   s>   | j d u s| jrt | j dkr4tf i | jd t| jS )Nfaultr   )r   r   r!   r"   r   r4   r   r   r   r   rm     s
    
zUnmarshaller.closec                 C   s   | j S r   )r   r   r   r   r   getmethodname  s    zUnmarshaller.getmethodnamec                 C   s
   || _ d S r   )r   )r   ri   Z
standaloner   r   r   rf     s    zUnmarshaller.xmlc                 C   sh   d|v r| dd }|dks&|dkr8| jt| j g | _| jrZ|| jvrZtd| |dk| _d S )N:arraystructzunknown tag %rr.   )	splitr   rr   lenr   r   r   r|   r!   )r   tagattrsr   r   r   rd     s    zUnmarshaller.startc                 C   s   | j | d S r   )r   rr   )r   textr   r   r   rL     s    zUnmarshaller.datac                 C   sr   z| j | }W nP ty^   d|vr*Y d S z| j |dd  }W n tyX   Y Y d S 0 Y n0 || d| jS )Nr   r   rq   )r|   r~   r   rt   r   )r   r   r   r   r   r   re     s    zUnmarshaller.endc                 C   sj   z| j | }W nP ty^   d|vr*Y d S z| j |dd  }W n tyX   Y Y d S 0 Y n0 || |S )Nr   r   )r|   r~   r   )r   r   rL   r   r   r   r   end_dispatch  s    zUnmarshaller.end_dispatchc                 C   s   |  d  d| _d S Nr   )rr   r   rK   r   r   r   end_nil  s    
zUnmarshaller.end_nilZnilc                 C   s:   |dkr|  d n|dkr(|  d ntdd| _d S )Nr   Fr   Tzbad boolean valuer   )rr   rY   r   rK   r   r   r   end_boolean  s    zUnmarshaller.end_booleanbooleanc                 C   s   |  t| d| _d S r   )rr   r   r   rK   r   r   r   end_int  s    zUnmarshaller.end_intZi1Zi2Zi4Zi8r   Z
bigintegerc                 C   s   |  t| d| _d S r   )rr   r   r   rK   r   r   r   
end_double  s    zUnmarshaller.end_doubleZdoubler   c                 C   s   |  t| d| _d S r   )rr   r   r   rK   r   r   r   end_bigdecimal  s    zUnmarshaller.end_bigdecimalZ
bigdecimalc                 C   s&   | j r|| j }| | d| _d S r   )r   rM   rr   r   rK   r   r   r   
end_string  s    
zUnmarshaller.end_stringstringnamec                 C   s.   | j  }| j|d  g| j|d < d| _d S r   )r   popr   r   )r   rL   markr   r   r   	end_array  s    
zUnmarshaller.end_arrayr   c                 C   s`   | j  }i }| j|d  }tdt|dD ]}||d  ||| < q,|g| j|d < d| _d S )Nr   r   r%   )r   r   r   ranger   r   )r   rL   r   r   r   r   r   r   r   
end_struct  s    
zUnmarshaller.end_structr   c                 C   s6   t  }||d | jr"|j}| | d| _d S )Nr]   r   )rU   rM   rQ   r   rL   rr   r   r   rL   r.   r   r   r   
end_base64  s    
zUnmarshaller.end_base64rZ   c                 C   s,   t  }|| | jrt|}| | d S r   )r9   rM   r   rT   rr   r   r   r   r   end_dateTime   s
    
zUnmarshaller.end_dateTimezdateTime.iso8601c                 C   s   | j r| | d S r   )r   r   rK   r   r   r   	end_value(  s    zUnmarshaller.end_valuer.   c                 C   s
   d| _ d S )Nparamsr   rK   r   r   r   
end_params/  s    zUnmarshaller.end_paramsr   c                 C   s
   d| _ d S )Nr   r   rK   r   r   r   	end_fault3  s    zUnmarshaller.end_faultr   c                 C   s"   | j r|| j }|| _d| _d S )N
methodName)r   rM   r   r   rK   r   r   r   end_methodName7  s    zUnmarshaller.end_methodNamer   N)FF)r   r   r   r   rm   r   rf   rd   rL   re   r   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r     sX   
	r   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )_MultiCallMethodc                 C   s   || _ || _d S r   )_MultiCallMethod__call_list_MultiCallMethod__name)r   Z	call_listr   r   r   r   r   D  s    z_MultiCallMethod.__init__c                 C   s   t | jd| j|f S Nz%s.%s)r   r   r   r   r   r   r   r   __getattr__G  s    z_MultiCallMethod.__getattr__c                 G   s   | j | j|f d S r   )r   rr   r   r   argsr   r   r   __call__I  s    z_MultiCallMethod.__call__Nr   r   r   r   r   r   r   r   r   r   r   A  s   r   c                   @   s   e Zd Zdd Zdd ZdS )MultiCallIteratorc                 C   s
   || _ d S r   )results)r   r   r   r   r   r   P  s    zMultiCallIterator.__init__c                 C   sR   | j | }t|ti kr.t|d |d n t|tg krF|d S tdd S )Nr#   r$   r   z#unexpected type in multicall result)r   r}   r"   r(   )r   r   itemr   r   r   __getitem__S  s    
zMultiCallIterator.__getitem__N)r   r   r   r   r   r   r   r   r   r   L  s   r   c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
	MultiCallc                 C   s   || _ g | _d S r   )_MultiCall__server_MultiCall__call_list)r   serverr   r   r   r   m  s    zMultiCall.__init__c                 C   s   d| j jt| f S )Nz<%s at %#x>)r   r   rI   r   r   r   r   r   q  s    zMultiCall.__repr__c                 C   s   t | j|S r   )r   r   r   r   r   r   r   t  s    zMultiCall.__getattr__c                 C   s6   g }| j D ]\}}|||d q
t| jj|S )N)r   r   )r   rr   r   r   systemZ	multicall)r   Zmarshalled_listr   r   r   r   r   r   w  s    zMultiCall.__call__N)r   r   r   r   r   r   r   r   r   r   r   r   \  s   r   Fc                 C   sr   t rHtrH|rt}tj}n| r&t}t}nt}t}tdd||t}t |}n"t| |d}t rbt |}nt	|}||fS )NTFr   r   )

FastParserFastUnmarshallerrT   rZ   r[   r`   rS   r"   r   ra   )r   r   Z
mkdatetimeZmkbytesrg   rh   r   r   r   	getparser  s     

r   c                 C   s   t | trd}n|rt | tr|s&d}tr4t|}n
t||}|| }|dkr^dt| }nd}|rx|d|d|df}n|r|d|d	f}n|S d
|S )Nr%   r   z$<?xml version='1.0' encoding='%s'?>
z<?xml version='1.0'?>
z<methodCall>
<methodName>z</methodName>
z</methodCall>
z<methodResponse>
z</methodResponse>
rq   )r3   r"   r4   FastMarshallerrn   ry   r:   rt   )r   
methodnameZmethodresponseri   rp   mrL   Z	xmlheaderr   r   r   ry     s6    



ry   c                 C   s2   t ||d\}}||  |  | | fS Nr   )r   rk   rm   r   )rL   r   r   pur   r   r   loads  s    	
r   c                 C   sP   t stt }t jd|dd}||  W d    n1 s>0    Y  | S )Nwbr%   )modefileobjZcompresslevel)gzipNotImplementedErrorr   GzipFilerO   getvalue)rL   r   gzfr   r   r   gzip_encode  s    (r     @c              	   C   s   t stt jdt| dP}z$|dk r0| }n||d }W n tyZ   tdY n0 W d    n1 sp0    Y  |dkrt||krtd|S )Nrbr   r   r   r%   zinvalid dataz#max gzipped payload length exceeded)r   r   r   r   readOSErrorr(   r   )rL   Z
max_decoder   Zdecodedr   r   r   gzip_decode)  s    
,r   c                   @   s   e Zd Zdd Zdd ZdS )GzipDecodedResponsec                 C   s.   t stt| | _t jj| d| jd d S )Nr   r   )r   r   r   r   ior   r   )r   responser   r   r   r   G  s    zGzipDecodedResponse.__init__c                 C   s,   zt j|  W | j  n| j  0 d S r   )r   r   rm   r   r   r   r   r   rm   O  s    zGzipDecodedResponse.closeN)r   r   r   r   rm   r   r   r   r   r   C  s   r   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )_Methodc                 C   s   || _ || _d S r   _Method__send_Method__name)r   sendr   r   r   r   r   \  s    z_Method.__init__c                 C   s   t | jd| j|f S r   )r   r  r  r   r   r   r   r   _  s    z_Method.__getattr__c                 G   s   |  | j|S r   r   r   r   r   r   r   a  s    z_Method.__call__Nr   r   r   r   r   r   Y  s   r   c                   @   s   e Zd Zde ZdZdZdddddZdd	d
ZdddZ	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd ZdS ) 	TransportzPython-xmlrpc/%sTNFr   )r   c                C   s&   || _ || _d| _t|| _g | _d S N)NN)r   _use_builtin_types_connectionr   _headers_extra_headers)r   r   r   r   r   r   r   r   x  s
    
zTransport.__init__c                 C   s   dD ]v}z|  ||||W   S  tjjy:   |r6 Y q tyx } z(|sb|jtjtjtjfvrd W Y d }~qd }~0 0 qd S )N)r   r%   )	single_requesthttpclientZRemoteDisconnectedr   errnoZ
ECONNRESETZECONNABORTEDZEPIPE)r   hosthandlerrequest_bodyverboser   er   r   r   request  s    zTransport.requestc                 C   s   z8|  ||||}| }|jdkr6|| _| |W S W n. tyL    Y n tyf   |    Y n0 |ddr||	  t
|| |j|jt| d S )N   zcontent-lengthrq   )send_requestZgetresponseZstatusr  parse_responser"   	Exceptionrm   	getheaderr   r   reasonr   Z
getheaders)r   r  r  r  r  Z	http_connZrespr   r   r   r
    s$    

zTransport.single_requestc                 C   s   t | j| jdS r   )r   r   r  r   r   r   r   r     s    zTransport.getparserc                 C   sr   i }t |tr|\}}tj|\}}|rdtj|}t|d}d	|
 }dd| fg}ng }|||fS )Nr   rq   ZAuthorizationzBasic )r3   r4   urllibparseZ
_splituserZunquote_to_bytesrZ   r^   rM   rt   r   )r   r  x509ZauthZextra_headersr   r   r   get_host_info  s    

zTransport.get_host_infoc                 C   sL   | j r|| j d kr| j d S | |\}| _}|tj|f| _ | j d S )Nr   r%   )r  r  r	  r  r  ZHTTPConnectionr   r  Zchostr  r   r   r   make_connection  s
    
zTransport.make_connectionc                 C   s    | j \}}|rd| _ |  d S r  )r  rm   )r   r  
connectionr   r   r   rm     s    
zTransport.closec                 C   s   |  |}| j| j }|r$|d | jrJtrJ|jd|dd |d n|d| |d |d| jf | 	|| | 
|| |S )Nr%   ZPOSTT)Zskip_accept_encoding)zAccept-Encodingr   )zContent-Typeztext/xmlz
User-Agent)r  r  r	  Zset_debuglevelaccept_gzip_encodingr   Z
putrequestrr   
user_agentsend_headerssend_content)r   r  r  r  debugr   r   r   r   r   r    s    



zTransport.send_requestc                 C   s   |D ]\}}| || qd S r   )	putheader)r   r   r   keyvalr   r   r   r#    s    zTransport.send_headersc                 C   sR   | j d ur0| j t|k r0tr0|dd t|}|dtt| || d S )NContent-Encodingr   zContent-Length)encode_thresholdr   r   r&  r   r:   Z
endheaders)r   r   r  r   r   r   r$     s    
zTransport.send_contentc                 C   s   t |dr*|dddkr$t|}q.|}n|}|  \}}|d}|sJqj| jr^tdt| || q:||urz|	  |	  |	 S )Nr  r)  rq   r   i   zbody:)
r<   r  r   r   r   r  printr   rk   rm   )r   r   streamr   r   rL   r   r   r   r  1  s     


zTransport.parse_response)FF)F)F)r   r   r   __version__r"  r!  r*  r   r  r
  r   r  r  rm   r  r#  r$  r  r   r   r   r   r  j  s    

!r  c                       s.   e Zd Zd	ddd fddZdd Z  ZS )
SafeTransportFr   Nr   contextc                   s   t  j|||d || _d S )Nr   r   r   )superr   r0  )r   r   r   r   r0  r   r   r   r   R  s
    zSafeTransport.__init__c                 C   st   | j r|| j d kr| j d S ttjds2td| |\}| _}|tjj|d fd| ji|p`i f| _ | j d S )Nr   r%   HTTPSConnectionz1your version of http.client doesn't support HTTPSr0  )	r  r<   r  r  r   r  r	  r4  r0  r  r   r   r   r  [  s    


zSafeTransport.make_connection)FF)r   r   r   r   r  __classcell__r   r   r3  r   r.  O  s   	r.  c                   @   sV   e Zd ZddddddZdd Zd	d
 Zdd Zdd Zdd Zdd Z	dd Z
dS )ServerProxyNFr   r/  c                C   s   t j|}
|
jdvrtd|
j| _t jddg|
dd  | _| jsPd| _|d u r|
jdkrpt	}d|	i}nt
}i }|f |||d|}|| _|pd	| _|| _|| _d S )
N)r  httpszunsupported XML-RPC protocolrq   r   z/RPC2r7  r0  r1  r   )r  r  ZurlsplitZschemer   Znetloc_ServerProxy__hostZ
urlunsplit_ServerProxy__handlerr.  r  _ServerProxy__transport_ServerProxy__encoding_ServerProxy__verbose_ServerProxy__allow_none)r   Zuri	transportri   r  rp   r   r   r   r0  r   r  Zextra_kwargsr   r   r   r     s.    



zServerProxy.__init__c                 C   s   | j   d S r   )r:  rm   r   r   r   r   Z__close  s    zServerProxy.__closec                 C   sP   t ||| j| jd| jd}| jj| j| j|| jd}t	|dkrL|d }|S )N)ri   rp   xmlcharrefreplace)r  r%   r   )
ry   r;  r=  rQ   r:  r  r8  r9  r<  r   )r   r   r   r  r   r   r   r   Z	__request  s    
zServerProxy.__requestc                 C   s   d| j j| j| jf S )Nz<%s for %s%s>)r   r   r8  r9  r   r   r   r   r     s    zServerProxy.__repr__c                 C   s   t | j|S r   )r   _ServerProxy__requestr   r   r   r   r     s    zServerProxy.__getattr__c                 C   s.   |dkr| j S |dkr| jS td|f d S )Nrm   r>  zAttribute %r not found)_ServerProxy__closer:  rl   )r   attrr   r   r   r     s
    zServerProxy.__call__c                 C   s   | S r   r   r   r   r   r   	__enter__  s    zServerProxy.__enter__c                 G   s   |    d S r   )rA  r   r   r   r   __exit__  s    zServerProxy.__exit__)NNFFFF)r   r   r   r   rA  r@  r   r   r   rC  rD  r   r   r   r   r6  z  s     
r6  __main__zhttp://localhost:8000ZERROR	   )FF)NNNF)FF)r   )UrZ   sysr5   r   decimalr   Zhttp.clientr  Zurllib.parser  Zxml.parsersr   r  r   r   r   ImportErrorr   version_infor-  r   r   ZPARSE_ERRORZSERVER_ERRORZAPPLICATION_ERRORZSYSTEM_ERRORZTRANSPORT_ERRORZNOT_WELLFORMED_ERRORZUNSUPPORTED_ENCODINGZINVALID_ENCODING_CHARZINVALID_XMLRPCZMETHOD_NOT_FOUNDZINVALID_METHOD_PARAMSZINTERNAL_ERRORr  r   r   r!   r"   r   r   ZBooleanr&   r)   r/   r8   r9   rS   rT   rU   r`   r   ra   rn   r   r   r   r   r   r   r   r   ry   r   r   r   r   r   r   r   r  r.  r6  ZServerr   r   r+  ZcurrentTimeZgetCurrentTimerw   ZmultiZgetDatapowaddr   r   r   r   r   <module>   s   




R	#! ( C%
'  
K

 f+i
 
