3
b                 @   s`  d dl mZ d dlmZmZ d dlZd dlZd dlZddl	m
Z
 ejd!krTdZeZndZd d	lmZ yd d
lmZ W n$ ek
r   G dd deZY nX yd dlmZ W n  ek
r   d dlmZ Y nX G dd deZG dd deZG dd deZG dd deZG dd deZG dd deZ G dd deZ!G dd deZ"G dd  d eZ#dS )"    )absolute_import)debugerrorN   )	ExitCodes   TF)SSLError)CertificateErrorc               @   s   e Zd ZdS )S3SSLCertificateErrorN)__name__
__module____qualname__ r   r   M/oak/stanford/groups/akundaje/marinovg/programs/s3cmd-master/S3/Exceptions.pyr
      s   r
   )
ParseError)
ExpatErrorc               @   s@   e Zd ZdddZdd Zdd Zdd	 Zd
d ZeeeZ	dS )S3Exception c             C   s   t jj|| _d S )N)S3Utils	unicodisemessage)selfr   r   r   r   __init__-   s    zS3Exception.__init__c             C   s    t r| j S tjj| j S d S )N)PY3__unicode__r   r   deunicodise)r   r   r   r   __str__0   s    zS3Exception.__str__c             C   s   | j S )N)r   )r   r   r   r   r   8   s    zS3Exception.__unicode__c             C   s   | j S )N)_message)r   r   r   r   _get_message<   s    zS3Exception._get_messagec             C   s
   || _ d S )N)r   )r   r   r   r   r   _set_message?   s    zS3Exception._set_messageN)r   )
r   r   r   r   r   r   r   r    propertyr   r   r   r   r   r   ,   s   
r   c               @   s0   e Zd Zdd Zdd Zdd Zedd Zd	S )
S3Errorc             C   s   |d | _ |d | _dddd| _td| j | jf  d|krhx(|d D ]}td||d | f  qHW d|kr|d rytjj|d }W n tk
r   td	 Y nPX y| jj| j	| W n6 t
k
r } ztd
||d f  W Y d d }~X nX | jd | _| jd | _| jd | _d S )Nstatusreasonr   )CodeMessageResourcezS3Error: %s (%s)headerszHttpHeader: %s: %sdatazNot an XML responsez$Error parsing xml: %s.  ErrorXML: %sr%   r&   r'   )r#   r$   infor   r   Z	BaseUtilsZgetTreeFromXmlXmlParseErrorupdateparse_error_xml	Exceptionr   coder   resource)r   responseheadertreeer   r   r   r   E   s*    


&zS3Error.__init__c             C   sL   d| j  }|dd| jkr"| jd p&| j 7 }| jjd}|rH|d| 7 }|S )Nz%d z(%s)r%   r&   z: %s)r#   r*   r$   get)r   retvalZ	error_msgr   r   r   r   `   s    
"zS3Error.__unicode__c             C   s   | j dkrtjS | j dkr tjS | j d
kr0tjS | j dkr@tjS | j dkrPtjS | j dkr`tjS | j dkrptjS | j dkrtj	S tjS d S )N-  3                i  i  i  i  i      )r7   r8   )r9   r:   r;   r<   r=   r>   r?   )r@   rA   )
r#   r   EX_SERVERMOVEDEX_SERVERERROREX_ACCESSDENIEDEX_NOTFOUNDEX_CONFLICTEX_PRECONDITIONEX_SOFTWARE
EX_SERVICE)r   r   r   r   get_error_codeh   s"    







zS3Error.get_error_codec             C   sr   i }| }|j dks| jd}|d k	rfxH|D ]6}|jdkr*td|j  d t|j  |j||j < q*W ntd|S )NErrorz.//Errorr   z
ErrorXML: z: z0Malformed error XML returned from remote server.)tagfindtextr   reprS3ResponseError)r3   r*   Z
error_nodeZchildr   r   r   r-   |   s    



zS3Error.parse_error_xmlN)r   r   r   r   r   rJ   staticmethodr-   r   r   r   r   r"   D   s   r"   c               @   s   e Zd ZdS )CloudFrontErrorN)r   r   r   r   r   r   r   rR      s   rR   c               @   s   e Zd ZdS )S3UploadErrorN)r   r   r   r   r   r   r   rS      s   rS   c               @   s   e Zd ZdS )S3DownloadErrorN)r   r   r   r   r   r   r   rT      s   rT   c               @   s   e Zd ZdS )S3RequestErrorN)r   r   r   r   r   r   r   rU      s   rU   c               @   s   e Zd ZdS )rP   N)r   r   r   r   r   r   r   rP      s   rP   c               @   s   e Zd ZdS )InvalidFileErrorN)r   r   r   r   r   r   r   rV      s   rV   c               @   s   e Zd ZdS )ParameterErrorN)r   r   r   r   r   r   r   rW      s   rW   )r   r   )$
__future__r   loggingr   r   sysS3.BaseUtilsr   S3.Utilsr   r   version_infor   strunicodeZsslr   
S3SSLErrorr	   r
   ImportErrorr.   Zxml.etree.ElementTreer   r+   Zxml.parsers.expatr   r   r"   rR   rS   rT   rU   rP   rV   rW   r   r   r   r   <module>	   s6   
H