a
    !f                     @   s   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mZmZmZmZmZmZ ededZG dd	 d	eee Zd
S )    )LiteralSelf)api_requestorerrorutil)StripeObject)
quote_plus)AnyClassVarDictGenericOptionalTypeVarcastMappingT)boundc                   @   s   e Zd ZU ee ed< ededddZe	dddZ
eeddd	Zedd
dZdedddZded eee ee ee ee eeeef  eeeef  e	d	ddZedddZedddZdS )APIResourceOBJECT_NAMEN)returnc                 K   s$   | ||fi |}|   tt|S N)refreshr   r   )clsidapi_keyparamsinstance r   k/var/www/html/python-backend/venv/lib/python3.9/site-packages/stripe/api_resources/abstract/api_resource.pyretrieve   s    zAPIResource.retrievec                 C   s   |  d|  S )Nget)_request_and_refreshinstance_url)selfr   r   r   r      s    zAPIResource.refreshc                 C   s(   | t krtd| jdd}d|f S )NzgAPIResource is an abstract class.  You should perform actions on its subclasses (e.g. Charge, Customer)./z/v1/%ss)r   NotImplementedErrorr   replace)r   baser   r   r   	class_url    s    zAPIResource.class_urlc                 C   sP   |  d}t|ts4tdt| j|t|f d|  }t|}d||f S )Nr   zwCould not determine which URL to request: %s instance has invalid ID: %r, %s. ID should be of type `str` (or `unicode`)z%s/%s)	r    
isinstancestrr   ZInvalidRequestErrortype__name__r)   r   )r#   r   r(   Zextnr   r   r   r"   ,   s    

zAPIResource.instance_urlc	           
      C   s@   t | ||||||||	}	t| t|	u r8| |	 | S |	S d S r   )r   _requestr,   refresh_from
r#   method_url_r   idempotency_keystripe_versionstripe_accountheadersr   objr   r   r   r.   =   s    
zAPIResource._request)r    postdelete)	r1   r2   r   r3   r4   r5   r6   r   r   c	           
      C   s(   t | ||||||||	}	| |	 | S r   )r   r.   r/   r0   r   r   r   r!   \   s    
z APIResource._request_and_refreshc                 C   s   |d u rd n|  }t|d|}t|d|}t|d|}t|d|}t|dd }tj|||d}	|d ur|d u r~i n|  }|t| |	||||\}
}t|
||||S Nr   r3   r4   r5   r6   )api_versionaccount)	copyr   read_special_variabler   APIRequestorupdatepopulate_headersrequestZconvert_to_stripe_object)r   r1   r2   r   r3   r4   r5   r   r6   	requestorresponser   r   r   _static_requestx   s,    
zAPIResource._static_requestc                 C   s   |d u rd n|  }t|d|}t|d|}t|d|}t|d|}t|dd }tj|||d}	|d ur|d u r~i n|  }|t| |	||||\}
}|
S r:   )r=   r   r>   r   r?   r@   rA   Zrequest_stream)r   r1   r2   r   r3   r4   r5   r   r6   rC   rD   _r   r   r   _static_request_stream   s(    z"APIResource._static_request_stream)N)NNNNNN)NNNNNN)NNNNN)NNNNN)r-   
__module____qualname__r
   r+   __annotations__classmethodr   r   r   r   r)   r"   r   r.   r   r   r   r   r	   r!   rE   rG   r   r   r   r   r      s^   
      
#           &     r   N)Ztyping_extensionsr   r   Zstriper   r   r   Zstripe.stripe_objectr   urllib.parser   typingr	   r
   r   r   r   r   r   r   r   r   r   r   r   r   <module>   s   (