3
	W!a                 @   s   d dl mZ d dlmZ d dlmZ d dlmZ d dl	m
Z
 d dlmZ d dlmZ d dl	mZ d d	lmZ d d
lmZ d dlmZ d dlmZmZ d dlmZ dd Zd"ddddZdd ZdgfddZdd Zdd Z dd Z!d d! Z"dS )#    )InstalledAppFlow)Request)Credentials)	unhexlify)
PKCS1_OAEP)RSA)SHA256)AES)exists)randint)compress)searchmatch)loadc             C   s(   t j| t jj|ddt|d    S )N       )r	   newZMODE_ECBencryptlen)keybuf r   "/home/hd25/gariland/www/helpers.py	doEncrypt   s    r   NZ c9674744cfce53f3a3ee187a15869795)drmkeyc            C   s   t jt|j }tddjdd}d }d}|rrt|d2}|j }	|d7 }|t|	jdd	7 }||	7 }W d Q R X |r|tt|dd
 | 7 }n|| 7 }t	|d}
dt
j|tddj| t|
jdd	 t||
 S )Nr   l	    r   big    rbs   7   little    	   s   TINFOIL)ZhashAlgolabel   )r   Z	importKeyopenreadr   to_bytesr   r   uhxr   r   r   r   r   )Zin_bytesZ
public_keyvm_filer   ZpubKeyZaesKeyr   Zinpftmp
compressedr   r   r   r      s    
r   c             C   sj   g }x`| D ]X}d|kr
xJ|d j  D ]:}x4|D ],}|jdj|d |d t|d d q.W q$W q
W |S )Nmirrorszgdrive:/{}#{}idfilenamesize)urlr/   )valuesappendformatint)ZminidbZ
shop_filesijkr   r   r   generate_shop4   s    

r8   z%https://www.googleapis.com/auth/drivec             C   s   d }t |r0t|d}tf t|}W d Q R X | s>|j r|r\|jr\|jr\|jt  nt	j
| |jdd}t|d}d |_|j }|j| W d Q R X |S )Nrr   )portw)r
   r$   r   r   validexpiredZrefresh_tokenrefreshr   r   Zfrom_client_secrets_fileZrun_local_serverexpiryto_jsonwrite)credentialstokenscopescredstZ
json_credsr   r   r   	get_credsC   s    rG   c             C   s   | d | d t | d dS )Nr-   namer/   )r-   r.   r/   )r4   )itemr   r   r   generate_entryX   s    rJ   c             C   s$   t d| }|d k	r |jdj S d S )Nz0100[0-9A-Fa-f]{12}r   )r   groupupper)rH   tidr   r   r   find_title_id\   s    
rN   c             C   s
   t d| S )Nz[-\w]{25,}$)r   )file_idr   r   r   valid_file_idc   s    rP   c             C   sR   g }dd i}x@d|krL| j  jdj|dddd|d dj }||d 7 }qW |S )NnextPageTokenz[trashed = false and "{}" in parents and not mimeType = "application/vnd.google-apps.folder"z/files(id,name,size,fileExtension),nextPageTokeni  T)qfieldsZpageSizesupportsAllDrivesZincludeItemsFromAllDrives	pageTokenfiles)rV   listr3   execute)serviceparentrV   respr   r   r   lsfg   s    
r\   )N)#Zgoogle_auth_oauthlib.flowr   Zgoogle.auth.transport.requestsr   Zgoogle.oauth2.credentialsr   binasciir   r'   ZCrypto.Cipherr   ZCrypto.PublicKeyr   ZCrypto.Hashr   r	   os.pathr
   randomr   zlibr   rer   r   jsonr   r   r   r8   rG   rJ   rN   rP   r\   r   r   r   r   <module>   s(   