o
    h                     @   s   d dl mZ d dl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ZejZejZejZejZejZejZejZd
d Zdd Zdd Zdd Z dd Z!dd Z"dS )    )JSONDecodeErrorN)datetime)Config)relativedelta)build)MediaIoBaseUpload)ServiceAccountCredentials)	HttpErrorc               
   C      zt rtt t} tdd| d}|W S td W d S  ty5 } ztdt	| W Y d }~d S d }~w t
yO } ztdt	| W Y d }~d S d }~ww )NZanalyticsreportingv4credentials0No key path set for Google JSON credential file.z6An error occurred while instantiating the GA reporter.)KEY_PATHr   from_json_keyfile_nameSCOPEr   logginginfor   errorstr	TypeError)r   	analyticse r   9/home/cmiss/Jenkins/workspace/SPARC-API/app/metrics/ga.pyinit_ga_reporting   &   
r   c                 C   s   t  tdd }|d}z;|  jdt|t  ddgddigdgid	 }t|d
 rG|d
 d d d d d d }t	|W S W d S    Y d S )N   )yearsz%Y-%m-%dZreportRequests)	startDateendDate
expressionzga:sessions)ZviewIdZ
dateRangesmetrics)bodyreportsr   dataZtotalsvalues)
r   nowr   strftimer$   ZbatchGetVIEW_IDexecutelenint)r   
start_dateformatted_start_datereporttotalr   r   r   get_ga_1year_sessions+   s*   
 
r1   c               
   C   r
   )Nsheetsr   r   r   z9An error occurred while instantiating the GSPREAD client.)r   r   r   SPREADS_SCOPEr   r   r   r   r   r   r   )r   r2   r   r   r   r   init_gspread_clientE   r   r4   c              
   C   s   | st d|rt|ttfst d| z&|   jtddddt|gid }|	di }|	d	d
}|d
kW S  t
yV } ztd|  W Y d }~dS d }~w tyo } ztd|  W Y d }~dS d }~ww )Nz'Google Sheets client is not initializedz,Row must be a non-empty list or tuple, got: EventsZUSER_ENTEREDZINSERT_ROWSr&   )spreadsheetIdrangeZvalueInputOptionZinsertDataOptionr#   updatesZupdatedRowsr   zGoogle Sheets API error: FzUnexpected error: )
ValueError
isinstancelisttuplespreadsheetsr&   appendEVENTS_SPREADS_IDr*   getr	   print	Exception)clientrowresultr8   Zupdated_rowsr   r   r   r   append_contactY   s4   
rF   c               
   C   r
   )Ndrivev3r   r   z7An error occurred while instantiating the DRIVE client.)r   r   r   DRIVE_SCOPEr   r   r   r   r   r   r   )r   rG   r   r   r   r   init_drive_clientt   r   rJ   c                 C   sd   |j dkrdS t| }|jpd}|p|j tgd}t||dd}|  j||ddd	 }|S )	N Fzapplication/octet-stream)nameparentsT)mimetypeZ	resumablewebViewLink)r#   Z
media_bodyfieldssupportsAllDrives)
filenameioBytesIOreadrN   EVENTS_ATTACHMENTS_FOLDERr   filescreater*   )rC   filerR   file_streamZ	mime_typeZfile_metadataZmediarespr   r   r   upload_file   s"   

r\   )#jsonr   r   r   
app.configr   dateutil.relativedeltar   googleapiclient.discoveryr   Zgoogleapiclient.httpr   oauth2client.service_accountr   googleapiclient.errorsr	   rS   GOOGLE_API_GA_SCOPEr   GOOGLE_API_SPREADS_SCOPEr3   GOOGLE_API_DRIVE_SCOPErI   GOOGLE_API_GA_KEY_PATHr   GOOGLE_API_GA_VIEW_IDr)   r?   rV   r   r1   r4   rF   rJ   r\   r   r   r   r   <module>   s.    