o
    ÙKÕi<  ã                   @   s4  d dl Z d dlmZ d dlmZmZmZmZmZm	Z	 d dl
mZmZ d dlmZmZmZ d dlmZ d dlmZ d dlmZmZ d d	lmZ g d
¢Zdee dee de	eeef ee f fdd„Zdedee de	eeef ee f fdd„Z	ddedee dededee defdd„ZG dd„ dƒZdS )é    N)Úimport_module)ÚAnyÚCallableÚDictÚListÚOptionalÚTuple)ÚAbstractProgressÚerrors)ÚAPIDataÚAPIResponseÚErrorWarningObject)ÚUAConfig)ÚIncorrectFieldTypeError)ÚAPI_UNKNOWN_ARGÚWARN_NEW_VERSION_AVAILABLE)Úcheck_for_new_version)zu.pro.version.v1z,u.pro.attach.auto.configure_retry_service.v1z%u.pro.attach.auto.full_auto_attach.v1z'u.pro.attach.auto.should_auto_attach.v1z%u.pro.attach.guest.get_guest_token.v1zu.pro.attach.magic.initiate.v1zu.pro.attach.magic.revoke.v1zu.pro.attach.magic.wait.v1z'u.pro.attach.token.full_token_attach.v1zu.pro.detach.v1zu.pro.packages.summary.v1zu.pro.packages.updates.v1zu.pro.security.cves.v1z!u.pro.security.fix.cve.execute.v1zu.pro.security.fix.cve.plan.v1z!u.pro.security.fix.usn.execute.v1zu.pro.security.fix.usn.plan.v1z'u.pro.security.status.livepatch_cves.v1z(u.pro.security.status.reboot_required.v1zu.pro.services.dependencies.v1zu.pro.services.disable.v1zu.pro.services.enable.v1z u.pro.status.enabled_services.v1zu.pro.status.is_attached.v1zu.apt_news.current_news.v1zu.security.package_manifest.v1zu.unattended_upgrades.status.v1ÚoptionsÚfieldsÚreturnc              	   C   sŒ   i }g }| D ];}z	|  d¡\}}W n ty   tj|d�‚w |r#|s)tj|d�‚||vr=| ttj|d�jtj	i d�¡ |||< q||fS )Nú=©Úarg©ÚtitleÚcodeÚmeta)
ÚsplitÚ
ValueErrorr
   ÚAPIBadArgsFormatÚappendr   r   ÚformatÚmsgÚname)r   r   ÚkwargsÚwarningsÚoptionÚkÚv© r)   ú2/usr/lib/python3/dist-packages/uaclient/api/api.pyÚ_process_options+   s(   ÿýÿ
r+   Údatac                 C   s€   i }g }zt  | ¡}W n t jjy   tj| d�‚w | ¡ D ]\}}||vr7| tt	j
|d�jt	ji d�¡ |||< q||fS )N)r,   r   r   )ÚjsonÚloadsÚdecoderÚJSONDecodeErrorr
   ÚAPIJSONDataFormatErrorÚitemsr    r   r   r!   r"   r#   )r,   r   r$   r%   Ú	json_datar'   r(   r)   r)   r*   Ú_process_dataH   s$   ÿýÿ
r4   Úendpoint_pathÚcfgÚprogress_objectc              
   C   s  | t vrt tj| d�¡S td|  ƒ}|j}g }|jr¯dd„ |jjD ƒ}z |r/t||ƒ\}	}
n|r9t	||ƒ\}	}
ni g }	}
| 
|
¡ W n tjy\ } zt |¡W  Y d }~S d }~ww z|j |	¡}W n ty‚ } zt tj|j| d�¡W  Y d }~S d }~ww z|jr�|j|||d�}n| ||¡}W nN ty® } zt |¡W  Y d }~S d }~ww |s³|r¼t tj| d�¡S z|jrÈ|j||d�}n| |¡}W n tyå } zt |¡W  Y d }~S d }~ww tƒ }|rû| ttj|d�jtji d�¡ t|j|j| t|j||jd	�d
�S )N)Úendpointzuaclient.api.c                 S   s   g | ]}|j ‘qS r)   )Úkey)Ú.0Úfr)   r)   r*   Ú
<listcomp>u   s    zcall_api.<locals>.<listcomp>)r   r8   )r7   )Úversionr   )ÚtypeÚ
attributesr   )Ú_schema_versionr%   r,   ) ÚVALID_ENDPOINTSr
   Ú	error_outÚAPIInvalidEndpointr   r8   Úoptions_clsr   r+   r4   ÚextendÚAPIErrorÚ	from_dictr   ÚAPIMissingArgr9   Úsupports_progressÚfnÚ	ExceptionÚAPINoArgsForEndpointr   r    r   r   r!   r"   r#   r   r=   r%   r   r   )r5   r   r,   r6   r7   Úmoduler8   Úoption_warningsr   r$   r%   ÚeÚresultÚnew_versionr)   r)   r*   Úcall_apib   s’   
ÿ
€ÿÿ€ÿÿ€€ÿ
ÿ
€€ÿÿûÿ
ýýrR   c                	   @   s*   e Zd Z	d	dedededefdd„ZdS )
ÚAPIEndpointFr=   r#   rJ   rI   c                 C   s"   || _ || _|| _|| _|| _d S ©N)r=   r#   rJ   rD   rI   )Úselfr=   r#   rJ   rD   rI   r)   r)   r*   Ú__init__·   s
   
zAPIEndpoint.__init__N)F)Ú__name__Ú
__module__Ú__qualname__Ústrr   ÚboolrV   r)   r)   r)   r*   rS   ¶   s    úþýüúrS   rT   ) r-   Ú	importlibr   Útypingr   r   r   r   r   r   Úuaclient.apir	   r
   Úuaclient.api.data_typesr   r   r   Úuaclient.configr   Úuaclient.data_typesr   Úuaclient.messagesr   r   Úuaclient.versionr   rA   rZ   r+   r4   rR   rS   r)   r)   r)   r*   Ú<module>   sN     ÿÿ
þÿÿ
þûÿþýüû
úT