o
    .&ßa<  ã                   @   sD   d dl mZ d dlmZ dd„ Zdd„ Zdd„ ZG d	d
„ d
eƒZdS )é    )ÚShape)ÚBaseCLIArgumentc                 K   s,   t |ƒrt|ƒ}t|||dd�| d< d S d S )NÚoutfile)Úresponse_keyÚoperation_modelÚsessionÚname)Ú_has_streaming_outputÚ_get_streaming_argument_nameÚStreamingOutputArgument)Úargument_tabler   r   ÚkwargsÚstreaming_argument_name© r   úJ/usr/lib/python3/dist-packages/awscli/customizations/streamingoutputarg.pyÚadd_streaming_output_arg   s   ýþr   c                 C   ó   | j S ©N)Úhas_streaming_output©Úmodelr   r   r   r	      s   r	   c                 C   s   | j jd S )NÚpayload)Úoutput_shapeÚserializationr   r   r   r   r
   "   s   r
   c                   @   sv   e Zd ZdZdZ	ddd„Zedd„ ƒZedd	„ ƒZed
d„ ƒZ	e	j
dd„ ƒZ	edd„ ƒZdd„ Zdd„ Zdd„ ZdS )r   i €  z(Filename where the content will be savedNc                 C   sR   || _ tdddiƒ| _|d u r| j}|| _|| _d | _|| _ d| _|| _|| _	d S )Nr   ÚtypeÚstringT)
Ú_namer   Úargument_modelÚBUFFER_SIZEÚ_buffer_sizeÚ_response_keyÚ_output_fileÚ	_requiredÚ_operation_modelÚ_session)Úselfr   r   r   r   Úbuffer_sizer   r   r   Ú__init__+   s   ÿ
z StreamingOutputArgument.__init__c                 C   r   r   )r   ©r%   r   r   r   Úcli_name<   s   z StreamingOutputArgument.cli_namec                 C   s   dS )Nr   r   r(   r   r   r   Úcli_type_nameC   s   z%StreamingOutputArgument.cli_type_namec                 C   r   r   ©r"   r(   r   r   r   ÚrequiredG   ó   z StreamingOutputArgument.requiredc                 C   s
   || _ d S r   r+   )r%   Úvaluer   r   r   r,   K   s   
c                 C   r   r   )ÚHELPr(   r   r   r   ÚdocumentationO   r-   z%StreamingOutputArgument.documentationc                 C   s   |j | j| j| jd� d S )N)ÚmetavarÚhelp)Úadd_argumentr   Úpy_namer/   )r%   Úparserr   r   r   Úadd_to_parserS   s   
ÿz%StreamingOutputArgument.add_to_parserc                 C   s8   || _ | jjj ¡ }| jj}| j d||f | j¡ d S )Nzafter-call.%s.%s)	r!   r#   Úservice_modelÚ
service_idÚ	hyphenizer   r$   ÚregisterÚ	save_file)r%   Ú
parametersr.   r8   Úoperation_namer   r   r   Úadd_to_paramsW   s   ÿÿz%StreamingOutputArgument.add_to_paramsc                 K   s|   | j |vrd S || j  }| j}t| jdƒ�}| |¡}|r)| |¡ | |¡}|sW d   ƒ n1 s3w   Y  || j = d S )NÚwb)r    r   Úopenr!   ÚreadÚwrite)r%   Úparsedr   Úbodyr&   ÚfpÚdatar   r   r   r;   ^   s   




þ€þz!StreamingOutputArgument.save_filer   )Ú__name__Ú
__module__Ú__qualname__r   r/   r'   Úpropertyr)   r*   r,   Úsetterr0   r6   r>   r;   r   r   r   r   r   &   s$    
ÿ




r   N)Úbotocore.modelr   Úawscli.argumentsr   r   r	   r
   r   r   r   r   r   Ú<module>   s   