U
    W+d                     @   sX   d dl Zd dlZd dlmZmZ G dd dejjZG dd deZ	G dd deZ
dS )	    N)sixStringIOc                   @   sJ   e Zd 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S )ResponseGroupzA Generic "Response Group", which can
    be anything from the entire list of Items to
    specific response elements within an itemNc                 C   s$   || _ || _g | _d| _t | _dS )Initialize this ItemN)_connection	_nodename	_nodepath_curobjr   _xml)self
connectionnodename r   1/tmp/pip-unpacked-wheel-dlxw5sjy/boto/ecs/item.py__init__    s
    zResponseGroup.__init__c                 C   s   d| j j| jf S )Nz<%s: %s>)	__class____name____dict__r   r   r   r   __repr__(   s    zResponseGroup.__repr__c                 C   s   | j |S N)r   get)r   namer   r   r   r   .   s    zResponseGroup.getc                 C   s   || j |< d S r   )r   )r   r   valuer   r   r   set1   s    zResponseGroup.setc                 C   s   d| j | j | j f S )Nz<%s>%s</%s>)r   r
   getvaluer   r   r   r   to_xml4   s    zResponseGroup.to_xmlc                 C   sb   | j d|  | j| t| jdkrHt| j}| || || _n| jr^| j	||| d S )Nz<%s>   )
r
   writer   appendlenr   r   r   r	   startElement)r   r   attrsr   objr   r   r   r!   :   s    
zResponseGroup.startElementc                 C   s   | j dt|dd|f  t| jdkr4d S d }| |}t| jdkrr|sX|sd| || | j	rd | _	n| j	r| j	
||| | j  d S )Nz%s</%s>z	&amp;amp;z&amp;r   r   )r
   r   cgiescapereplacer    r   r   r   r	   
endElementpop)r   r   r   r   r#   curvalr   r   r   r'   E   s    "

zResponseGroup.endElement)NN)r   
__module____qualname____doc__r   r   r   r   r   r!   r'   r   r   r   r   r      s   
r   c                   @   s   e Zd ZdZdddZdS )ItemzA single ItemNc                 C   s   t | |d dS )r   r-   N)r   r   )r   r   r   r   r   r   [   s    zItem.__init__)N)r   r*   r+   r,   r   r   r   r   r   r-   X   s   r-   c                   @   sF   e Zd ZdZdddZdd Zdd Zd	d
 ZeZdd Z	dd Z
dS )ItemSetzbA special ResponseGroup that has built-in paging, and
    only creates new Items on the "Item" tagr   c                 C   sN   t | |d g | _d | _|| _|| _|| _d | _d| _d| _	d| _
g | _d S )NZItemsr   F)r   r   objsiterpageactionparamscurItemtotal_resultstotal_pagesis_validerrors)r   r   r2   r3   r1   r   r   r   r   c   s    zItemSet.__init__c                 C   s4   |dkrt | j| _n| jd k	r0| j||| d S )Nr-   )r-   r   r4   r!   )r   r   r"   r   r   r   r   r!   p   s
    
zItemSet.startElementc                 C   s   |dkr|| _ n|dkr || _n|dkr8|dkrd| _n~|dkrT| j|d d nb|dkrl|| jd	 d< nJ|d
kr| j| j | j| j	  d | _n| jd k	r| j
||| d S )NZTotalResultsZ
TotalPagesZIsValidTrueTCode)r:   Messager;   r-   )r5   r6   r7   r8   r   r/   r4   r
   r   r   r'   )r   r   r   r   r   r   r   r'   w   s$    
zItemSet.endElementc              	   C   s   | j dkrt | j| _ zt| j W S  tk
r   d| _ g | _t| jt| jk r|  jd7  _| j| j	| j
| j|  t|  Y S  Y nX dS )zSpecial paging functionalityNr   )r0   r/   nextStopIterationintr1   r6   r   Zget_responser2   r3   r   r   r   r   __next__   s    
zItemSet.__next__c                 C   s   | S r   r   r   r   r   r   __iter__   s    zItemSet.__iter__c                 C   s   | D ]}qt | S )z"Override to first fetch everything)r   r   )r   itemr   r   r   r      s    zItemSet.to_xmlN)r   )r   r*   r+   r,   r   r!   r'   r@   r=   rA   r   r   r   r   r   r.   _   s   
r.   )Zxml.saxxmlr$   Zboto.compatr   r   saxContentHandlerr   r-   r.   r   r   r   r   <module>   s
   =