o
    i                     @   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://stripe.com/docs/api#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://stripe.com/docs/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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r0   base_address)r   _static_request	class_urlclsr0    r=   l/var/www/snowflake_co_dev_github/snow_flake_back_end_deploy/env/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 )r2   r3   r4   r   r5   r6   r7   N)r   _static_request_asyncr:   r;   r=   r=   r>   create_asyncp   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r0   %Expected list object from API, got %s)r9   r:   
isinstancer   	TypeErrorr.   __name__r<   r0   resultr=   r=   r>   list   s   
z	File.listc                    s<   | j d|  |dI dH }t|tstdt|j |S )rB   rC   rD   NrE   )r@   r:   rF   r   rG   r.   rH   rI   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   r0   instancer=   r=   r>   retrieve   s   zFile.retrievec                    s$   | |fi |}|  I dH  |S )rM   N)refresh_asyncrO   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)rH   
__module____qualname____doc__r   r   r   __annotations__intr   strr   classmethodr	   r?   rA   rK   rL   rQ   rS   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    >