3 0Q=j%"ã @sˆddlmZddlmZddlZddlZy ddlZWnek rRddljZYnXGdd„de ƒZ Gdd„de ƒZ Gdd „d e ƒZ dS) é)Ú rpcServer)Ú up2dateErrorsNc@s0eZdZdZdd„Zdd„Zdd„Zdd „Zd S) Ú_DoCallWrapperze A callable object that will handle multiple levels of attributes, and catch exceptions. cCs||_||_dS)N)Ú_serverÚ _method_name)ÚselfZserverÚ method_name©r ú/usr/lib/python3.6/rhnserver.pyÚ__init__2sz_DoCallWrapper.__init__cCst|jd|j|fƒS)z= Recursively build up the method name to pass to the server. z%s.%s)rrr)rrr r r Ú __getattr__6sz_DoCallWrapper.__getattr__c OsÜt|j|jƒ}ytj|f|ž|ŽStjk rH|jtj ƒdƒ‚Yn�t j j k rÖt tj ƒdƒ}|jdƒ}|jdƒ}d}t|ƒdkr˜|d}nt|ƒdkr¬|d}|jdƒ}d|krÈtjƒ‚n tj|ƒ‚YnXdS) z3 Call the method. Catch faults and translate them. éz[()]ú,Úéz 'zcertificate verify failedN)ÚgetattrrrrZdoCallÚ xmlrpclibZFaultÚ$_DoCallWrapper__exception_from_faultÚsysÚexc_infoÚrequestsÚ exceptionsZSSLErrorÚstrÚstripÚsplitÚlenrZSSLCertificateVerifyFailedErrorZ NetworkError)rÚargsÚkwargsÚmethodÚerrorÚpiecesÚmessager r r Ú__call__;s$       z_DoCallWrapper.__call__cCsÄ|jdkrtj|jƒ}�n¦|jdkr4tj|jƒ}�nŒ|jdkrNtj|jƒ}�nr|jdkrhtj|jƒ}�nX|jdkr‚tj|jƒ}�n>|jd krœtj|jƒ}�n$|jd!kr¶tj|jƒ}�n |jd"krÐtj|jƒ}�nð|jd#krêtj|jƒ}�nÖ|jd$k�rtj |jƒ}�nº|jd%k�r"tj |jƒ}�nžt |jƒd k�rBtj |jƒ}�n~t |jƒd k�rbtj |jƒ}�n^t |jƒdk�r~tjƒ}�nBt |jƒdk�ržtj|jƒ}�n"|jdk�rºtj|jƒ}�nt |jƒdk�rØtj |jƒ}nè|jd&k�ròtj|jƒ}nÎ|jd'k�r tj|jƒ}n´|jd(k�r&tj|jƒ}nš|jd)k�r@tj|jƒ}n€|jd*k�sX|jd+k�rftj|jƒ}nZ|jd,k�r€tj|jƒ}n@|jd-k�rštj|jƒ}n&|jd.k�r´tj|jƒ}n tj|jƒ}|S)/Nérénr é éééééé$é1é<éJéiécé[éjiXiYiZiÑi¼i½é=ééýÿÿÿéþÿÿÿi’ÿÿÿéÿÿÿÿióÿÿÿiòÿÿÿiñÿÿÿiðÿÿÿiíÿÿÿiáÿÿÿiÜÿÿÿi–ÿÿÿi¨ýÿÿi§ýÿÿi¦ýÿÿi/øÿÿiDýÿÿiCýÿÿiÃÿÿÿéûÿÿÿ)Z faultCoderZ$AuthenticationOrAccountCreationErrorZ faultStringZUnknownMethodExceptionZLoginMinLengthErrorZPasswordMinLengthErrorZValidationErrorZNoBaseChannelErrorZInsuffMgmntEntsErrorZ PasswordErrorÚabsZ AbuseErrorZAuthenticationTicketErrorZRegistrationDeniedErrorZRhnUuidUniquenessErrorZ DelayErrorZInvalidRegistrationNumberErrorZNotEntitlingErrorZPasswordMaxLengthErrorZActivationKeyUsageLimitErrorZUnableToCreateUserZCommunicationError)rZfaultZ exceptionr r r Z__exception_from_faultRsr                          z%_DoCallWrapper.__exception_from_faultN)Ú__name__Ú __module__Ú __qualname__Ú__doc__r r r"rr r r r r+s rc@s*eZdZdZd dd„Zdd„Zdd „ZdS) Ú RhnServerz` An rpc server object that calls doCall for you, and catches lower level exceptions NFcCs&|dkrtj|||d�|_n||_dS)N)ÚserverOverrideÚtimeoutÚ registration)rZ getServerr)rr?r@ÚrpcServerOverriderAr r r r ¦s  zRhnServer.__init__cCs|jj||ƒdS)N)rÚ add_header)rÚkeyÚvaluer r r rC¶szRhnServer.add_headercCs t|j|ƒS)z6Return a callable object that will do the work for us.)rr)rrr r r r ¹szRhnServer.__getattr__)NNNF)r:r;r<r=r rCr r r r r r> s r>cs"eZdZdZd‡fdd„ Z‡ZS)ÚRegistrationRhnServerz¶ A specialized RhnServer subclass for handling registration-related calls. Intended to be used as a shorthand for registration tasks instead of the plain RhnServer. Ncstt|ƒj|||dd�dS)NT)r?r@rBrA)ÚsuperrFr )rr?r@rB)Ú __class__r r r Æs  zRegistrationRhnServer.__init__)NNN)r:r;r<r=r Ú __classcell__r r )rHr rF¾srF) Zup2date_clientrrrrrÚ ImportErrorZ xmlrpc.clientZclientÚobjectrr>rFr r r r Ú!s   u