
    =e~                     X    d dl Z d dlZd dlmZmZ d dlmZ  G d dej                  ZdS )    N)compute_hashjencode)multipart_files_uploadc                   H     e Zd Z fdZd Zd Zd Zd Zd Zd Z	d Z
 xZS )	ProjectUploaderc                    |                     dd          }|                     dd          }|                     dd           | _        |                     dd           | _        t                                          |||           d S )Ndomainzhttps://api.anaconda.orgverifyTusernameproject)getr   r   super__init__)selftokenkwargsr	   r
   	__class__s        Flib/python3.11/site-packages/binstar_client/utils/projects/uploader.pyr   zProjectUploader.__init__   sv    H&@AAHd++

:t44zz)T22/////    c                     d                     | j        | j        | j        j                  }| j                            |          }|j        dk    S )Nz{}/apps/{}/projects/{}   )formatr	   r   r   namesessionr   status_code)r   urlress      r   existszProjectUploader.exists   sI    &--K(9; ;ls###%%r   c                     d                     | j        | j                  }t          | j                                                  \  }}| j                            |||          }|S Nz{}/apps/{}/projectsdataheaders)r   r	   r   r   r   to_project_creationr   postr   r   r"   r#   r   s        r   createzProjectUploader.create   s[    #**4;FF @ @ B BCCgl$@@
r   c                    d                     | j        | j        | j        j                  }t          | j                                                  \  }}| j                            |||          }| 	                    |           |S )Nz{}/apps/{}/projects/{}/stager!   )
r   r	   r   r   r   r   to_stager   r%   _check_responser&   s        r   stagezProjectUploader.stage   s{    ,33K(9; ; 5 5 7 788gl$@@S!!!
r   c                     d                     | j        | j        | j        j        |          }t          i           \  }}| j                            |||          }|                     |dg           |S )Nz {}/apps/{}/projects/{}/commit/{}r!      )	r   r	   r   r   r   r   r   r%   r*   )r   revision_idr   r"   r#   r   s         r   commitzProjectUploader.commit&   st    077KL{
 
  gl$@@S3%(((
r   c                    t          | j        j        | j        j                  \  }}}|d         }t	          |          |d<   ||d<   t          j        |ddd          5 }t          ||d	| j        j        | j        j        fi|| j        j	        
          }d d d            n# 1 swxY w Y   |j
        dk    r%t          j                            d|j
                  |S )N)size	form_datazContent-LengthzContent-MD5BTi   )totalunit
unit_scaleunit_divisorfile)r"   filesprogress_barr
   r-   zError uploading package)r   r   tarr1   strtqdmr   basenamer   r
   r   binstar_clienterrorsBinstarError)	r   r   obj_hexmd5b64md5r1   s3dataprogresss3ress	            r   file_uploadzProjectUploader.file_upload0   s3    ,L4<#4!6 !6 !6 [!#&t99  &}YT4PPP 	,T\* 5t|7GHI%|*, , ,E	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, ## '44)5+<> > >s   !7B$$B(+B(c                     d                     | j        | j                  }t          | j                                                  \  }}| j                            |||          S r    )r   r	   r   r   r   r$   r   r   )r   r   r"   r#   s       r   projectszProjectUploader.projectsE   sW    #**4;FF @ @ B BCCg|$@@@r   c                 8   |                                  s|                                  |                                                                 }|                     |d         |           |                     |d                   }|                                }|S )z
        * Check if project already exists
            * if it doesn't, then create it
        * stage a new revision
        * upload
        * commit revision
        post_urldist_id)r   r'   r+   jsonrH   r/   )r   r"   r   s      r   uploadzProjectUploader.uploadJ   s|     {{}} 	KKMMMzz||  ""j)4000kk$y/**xxzzr   )__name__
__module____qualname__r   r   r'   r+   r/   rH   rJ   rO   __classcell__)r   s   @r   r   r   
   s        0 0 0 0 0& & &        *A A A
      r   r   )	r=   r?   binstar_client.utilsr   r   'binstar_client.utils.multipart_uploaderr   Binstarr    r   r   <module>rX      s         6 6 6 6 6 6 6 6 J J J J J JO O O O On, O O O O Or   