o
    L)j                     @   s   d dl mZ d dlmZ d dlmZ d dlmZmZm	Z	 d dl
mZmZmZ er@d dlmZ d dlmZ d dlmZ d d	lmZ G d
d ded ed ZeZdS )    )CreateableAPIResource)
ListObject)ListableAPIResource)ClassVarOptionalcast)LiteralUnpackTYPE_CHECKING)FileLink)FileCreateParams)FileListParams)FileRetrieveParamsc                   @   st  e Zd ZU dZdZeed  ed< eed< 	 e	e ed< 	 e	e
 ed< 	 e
ed< 	 e	ed  ed	< 	 ed ed
< 	 ed ed< 	 eed< 	 e	e
 ed< 	 e	e
 ed< 	 e	e
 ed< 	 eded dd fddZeded dd fddZeded ded  fddZeded ded  fddZede
ded dd fddZede
ded dd fd d!Zd"Zed#d$ Zd%S )&Filea  
    This object represents files hosted on Stripe's servers. You can upload
    files with the [create file](https://api.stripe.com#create_file) request
    (for example, when uploading dispute evidence). Stripe also
    creates files independently (for example, the results of a [Sigma scheduled
    query](https://docs.stripe.com/api#scheduled_queries)).

    Related guide: [File upload guide](https://docs.stripe.com/file-upload)
    fileOBJECT_NAMEcreated
expires_atfilenameidr   linksobject)account_requirementadditional_verificationbusiness_iconbusiness_logocustomer_signaturedispute_evidence#document_provider_identity_documentfinance_report_runfinancial_account_statementidentity_documentidentity_document_downloadableissuing_regulatory_reportingpci_documentplatform_terms_of_serviceselfiesigma_scheduled_querytax_document_user_uploadterminal_android_apkterminal_reader_splashscreenterminal_wifi_certificateterminal_wifi_private_keypurposesizetitletypeurlparamsr   returnc                 K   s$   d|d< t d| jd|  |ddS )%  
        To upload a file to Stripe, you need to send a request of type multipart/form-data. Include the file you want to upload in the request, and the parameters for creating a file.

        All of Stripe's officially supported Client libraries support sending multipart/form-data.
        multipart/form-datacontent_typer   postfilesr2   base_address)r   _static_request	class_urlclsr2    r?   q/var/www/html/finance-dev.cargoinsureonline.com/_shared/backend-venv/lib/python3.10/site-packages/stripe/_file.pycreate_   s   zFile.createc                    s,   d|d< t d| jd|  |ddI dH S )r4   r5   r6   r   r7   r8   r9   N)r   _static_request_asyncr<   r=   r?   r?   r@   create_asyncr   s   	
zFile.create_asyncr   c                 K   s4   | j d|  |d}t|tstdt|j |S )
        Returns a list of the files that your account has access to. Stripe sorts and returns the files by their creation dates, placing the most recently created files at the top.
        getr2   %Expected list object from API, got %s)r;   r<   
isinstancer   	TypeErrorr0   __name__r>   r2   resultr?   r?   r@   list   s   
z	File.listc                    s<   | j d|  |dI dH }t|tstdt|j |S )rD   rE   rF   NrG   )rB   r<   rH   r   rI   r0   rJ   rK   r?   r?   r@   
list_async   s   
zFile.list_asyncr   c                 K   s   | |fi |}|   |S )
        Retrieves the details of an existing file object. After you supply a unique file ID, Stripe returns the corresponding file object. Learn how to [access file contents](https://docs.stripe.com/docs/file-upload#download-file-contents).
        )refreshr>   r   r2   instancer?   r?   r@   retrieve   s   zFile.retrievec                    s$   | |fi |}|  I dH  |S )rO   N)refresh_asyncrQ   r?   r?   r@   retrieve_async   s   zFile.retrieve_asyncfile_uploadc                 C   s   dS )Nz	/v1/filesr?   )r>   r?   r?   r@   r<      s   zFile.class_urlN)rJ   
__module____qualname____doc__r   r   r   __annotations__intr   strr   classmethodr	   rA   rC   rM   rN   rS   rU   OBJECT_NAME_ALTr<   r?   r?   r?   r@   r      s|   
 

r   N)stripe._createable_api_resourcer   stripe._list_objectr   stripe._listable_api_resourcer   typingr   r   r   typing_extensionsr   r	   r
   stripe._file_linkr   !stripe.params._file_create_paramsr   stripe.params._file_list_paramsr   #stripe.params._file_retrieve_paramsr   r   
FileUploadr?   r?   r?   r@   <module>   s    @