U
    h                     @  s  d Z ddlmZ ddlZddlZddlmZmZmZm	Z	 ddl
mZ erddlmZ ddlmZ ddlmZ dd	lmZ dd
lmZ eeZddddZddddZddddZdgZdZdZd)dddddddZd*d d!d!d"d#d$d%Z d!d!d&d'd(Z!dS )+zGmail tool utils.    )annotationsN)TYPE_CHECKINGListOptionalTuple)guard_import)Request)Credentials)InstalledAppFlow)Resource)buildzTuple[Request, Credentials])returnc                   C  s   t dddjt dddjfS )zqImport google libraries.

    Returns:
        Tuple[Request, Credentials]: Request and Credentials classes.
    zgoogle.auth.transport.requestszgoogle-auth-httplib2module_nameZpip_namezgoogle.oauth2.credentials)r   r   r	    r   r   I/tmp/pip-unpacked-wheel-9gdii04g/langchain_community/tools/gmail/utils.pyimport_google   s     r   r
   c                   C  s   t dddjS )zcImport InstalledAppFlow class.

    Returns:
        InstalledAppFlow: InstalledAppFlow class.
    zgoogle_auth_oauthlib.flowzgoogle-auth-oauthlibr   )r   r
   r   r   r   r   import_installed_app_flow&   s     r   build_resourcec                   C  s   t dddjS )zImport googleapiclient.discovery.build function.

    Returns:
        build_resource: googleapiclient.discovery.build function.
    zgoogleapiclient.discoveryzgoogle-api-python-clientr   )r   r   r   r   r   r   'import_googleapiclient_resource_builder1   s     r   zhttps://mail.google.com/z
token.jsonzcredentials.jsonzOptional[str]zOptional[List[str]]r	   )
token_fileclient_secrets_filescopesr   c           	   	   C  s   t  \}}t }d}|pt}| p"t} |p*t}tj| rD|| |}|rN|j	s|rl|j
rl|jrl||  n|||}|jdd}t| d}||  W 5 Q R X |S )zGet credentials.Nr   )portw)r   r   DEFAULT_SCOPESDEFAULT_CREDS_TOKEN_FILEDEFAULT_CLIENT_SECRETS_FILEospathexistsZfrom_authorized_user_fileZvalidZexpiredZrefresh_tokenZrefreshZfrom_client_secrets_fileZrun_local_serveropenwriteZto_json)	r   r   r   r   r	   r
   credsZflowtokenr   r   r   get_gmail_credentialsA   s&    

 r%   gmailv1zOptional[Credentials]strr   )credentialsservice_nameservice_versionr   c                 C  s   | pt  } t }|||| dS )zBuild a Gmail service.)r)   )r%   r   )r)   r*   r+   Zbuilderr   r   r   build_resource_servicec   s    
r,   )bodyr   c              
   C  s   znddl m} z"|t| d}| } t| W W S  tk
rj } zt| t|  W Y W S d}~X Y nX W n& tk
r   td t|  Y S X dS )zClean email body.r   )BeautifulSoupzhtml.parserNz/BeautifulSoup not installed. Skipping cleaning.)	Zbs4r.   r(   Zget_text	ExceptionloggererrorImportErrorwarning)r-   r.   Zsouper   r   r   clean_email_bodyn   s    
$
r5   )NNN)Nr&   r'   )"__doc__
__future__r   loggingr   typingr   r   r   r   Zlangchain_core.utilsr   Zgoogle.auth.transport.requestsr   Zgoogle.oauth2.credentialsr	   Zgoogle_auth_oauthlib.flowr
   Zgoogleapiclient.discoveryr   r   r   	getLogger__name__r0   r   r   r   r   r   r   r%   r,   r5   r   r   r   r   <module>   s6   
   #   