3 0Q=j%" ã @ sˆ d dl mZ d dl mZ d dlZd dlZyd dlZW n ek rR d dljZY nX G dd„ de ƒZ G dd„ de ƒZG dd „ d eƒZdS ) é )Ú rpcServer)Ú up2dateErrorsNc @ s0 e Zd ZdZdd„ Zdd„ Zdd„ Zdd „ Zd S )Ú_DoCallWrapperze A callable object that will handle multiple levels of attributes, and catch exceptions. c C s || _ || _d S )N)Ú_serverÚ_method_name)ÚselfZserverÚmethod_name© r ú/usr/lib/python3.6/rhnserver.pyÚ__init__2 s z_DoCallWrapper.__init__c C s t | jd| j|f ƒS )z= Recursively build up the method name to pass to the server. z%s.%s)r r r )r r r r r Ú__getattr__6 s z_DoCallWrapper.__getattr__c O sÜ t | j| jƒ}ytj|f|ž|ŽS tjk rH | jtj ƒ d ƒ‚Y n� t jjk rÖ t tj ƒ d ƒ}|jdƒ}|jdƒ}d}t|ƒdkr˜|d }nt|ƒdkr¬|d }|jdƒ}d|krÈtjƒ ‚n tj|ƒ‚Y nX dS ) z3 Call the method. Catch faults and translate them. é z[()]ú,Ú é z 'zcertificate verify failedN)Úgetattrr r r ZdoCallÚ xmlrpclibZFaultÚ$_DoCallWrapper__exception_from_faultÚsysÚexc_infoÚrequestsÚ exceptionsZSSLErrorÚstrÚstripÚsplitÚlenr ZSSLCertificateVerifyFailedErrorZNetworkError)r ÚargsÚkwargsÚmethodÚerrorÚpiecesÚmessager r r Ú__call__; s$ z_DoCallWrapper.__call__c C sÄ |j dkrtj|jƒ}�n¦|j dkr4tj|jƒ}�nŒ|j dkrNtj|jƒ}�nr|j dkrhtj|jƒ}�nX|j dkr‚tj|jƒ}�n>|j d krœtj|jƒ}�n$|j d!kr¶tj|jƒ}�n |j d"krÐtj|jƒ}�nð|j d#krêtj|jƒ}�nÖ|j d$k�rtj |jƒ}�nº|j d%k�r"tj |jƒ}�nžt|j ƒdk�rBtj|jƒ}�n~t|j ƒd k�rbtj |jƒ}�n^t|j ƒdk�r~tjƒ }�nBt|j ƒdk�ržtj|jƒ}�n"|j dk�rºtj|jƒ}�nt|j ƒdk�rØtj |jƒ}nè|j d&k�ròtj|jƒ}nÎ|j d'k�rtj|jƒ}n´|j d(k�r&tj|jƒ}nš|j d)k�r@tj|jƒ}n€|j d*k�sX|j d+k�rftj|jƒ}nZ|j d,k�r€tj|jƒ}n@|j d-k�rštj|jƒ}n&|j d.k�r´tj|jƒ}ntj|jƒ}|S )/Né r én r é é é é é é é$ é1 é<