3
e^                 @   s   d dl mZmZmZ d dlZd dlmZ e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G dd deZG dd deZdS )    )absolute_importdivisionprint_functionN)python_2_unicode_compatiblec                   sB   e Zd Zd fdd	Zdd Zedd Zdd	 Zd
d Z  Z	S )StripeErrorNc                s   t t| j| |rFt|drFy|jd}W n tk
rD   d}Y nX || _|| _|| _|| _	|pdi | _
|| _| j
jdd | _| j | _d S )Ndecodezutf-8zE<Could not decode body as utf-8. Please report to support@stripe.com>z
request-id)superr   __init__hasattrr   BaseException_message	http_bodyhttp_status	json_bodyheaderscodeget
request_idconstruct_error_objecterror)selfmessager   r   r   r   r   )	__class__ ./tmp/pip-build-8app2_gc/stripe/stripe/error.pyr	   	   s    	

zStripeError.__init__c             C   s*   | j pd}| jd k	r"dj| j|S |S d S )Nz<empty message>zRequest {0}: {1})r   r   format)r   msgr   r   r   __str__&   s    

zStripeError.__str__c             C   s   | j S )N)r   )r   r   r   r   user_message1   s    zStripeError.user_messagec             C   s   d| j j| j| j| jf S )Nz-%s(message=%r, http_status=%r, request_id=%r))r   __name__r   r   r   )r   r   r   r   __repr__5   s
    zStripeError.__repr__c             C   sD   | j d ks&d| j ks&t| j d t r*d S tjjjj| j d tjS )Nr   )	r   
isinstancedictstripeZapi_resourcesZerror_objectZErrorObjectZconstruct_fromZapi_key)r   r   r   r   r   =   s    


z"StripeError.construct_error_object)NNNNNN)
r   
__module____qualname__r	   r   propertyr   r    r   __classcell__r   r   )r   r   r      s        r   c               @   s   e Zd ZdS )APIErrorN)r   r$   r%   r   r   r   r   r(   J   s   r(   c                   s   e Zd Zd fdd	Z  ZS )APIConnectionErrorNFc                s$   t t| j|||||| || _d S )N)r   r)   r	   should_retry)r   r   r   r   r   r   r   r*   )r   r   r   r	   O   s    

zAPIConnectionError.__init__)NNNNNF)r   r$   r%   r	   r'   r   r   )r   r   r)   N   s        r)   c               @   s   e Zd Zdd ZdS )StripeErrorWithParamCodec             C   s"   d| j j| j| j| j| j| jf S )Nz@%s(message=%r, param=%r, code=%r, http_status=%r, request_id=%r))r   r   r   paramr   r   r   )r   r   r   r   r    `   s    z!StripeErrorWithParamCode.__repr__N)r   r$   r%   r    r   r   r   r   r+   _   s   r+   c                   s   e Zd Zd fdd	Z  ZS )	CardErrorNc                s$   t t| j|||||| || _d S )N)r   r-   r	   r,   )r   r   r,   r   r   r   r   r   )r   r   r   r	   p   s    

zCardError.__init__)NNNN)r   r$   r%   r	   r'   r   r   )r   r   r-   o   s      r-   c               @   s   e Zd ZdS )IdempotencyErrorN)r   r$   r%   r   r   r   r   r.      s   r.   c                   s   e Zd Zd fdd	Z  ZS )InvalidRequestErrorNc                s$   t t| j|||||| || _d S )N)r   r/   r	   r,   )r   r   r,   r   r   r   r   r   )r   r   r   r	      s    

zInvalidRequestError.__init__)NNNNN)r   r$   r%   r	   r'   r   r   )r   r   r/      s
       r/   c               @   s   e Zd ZdS )AuthenticationErrorN)r   r$   r%   r   r   r   r   r0      s   r0   c               @   s   e Zd ZdS )PermissionErrorN)r   r$   r%   r   r   r   r   r1      s   r1   c               @   s   e Zd ZdS )RateLimitErrorN)r   r$   r%   r   r   r   r   r2      s   r2   c                   s   e Zd Zd fdd	Z  ZS )SignatureVerificationErrorNc                s   t t| j|| || _d S )N)r   r3   r	   
sig_header)r   r   r4   r   )r   r   r   r	      s    z#SignatureVerificationError.__init__)N)r   r$   r%   r	   r'   r   r   )r   r   r3      s   r3   )
__future__r   r   r   r#   Z
stripe.sixr   	Exceptionr   r(   r)   r+   r-   r.   r/   r0   r1   r2   r3   r   r   r   r   <module>   s   B