#!/usr/bin/env python3
import os.path
import random
import itertools
import base64
from email.mime.text import MIMEText
from google.auth.transport.requests import Request
from google.oauth2.credentials import Credentials
from google_auth_oauthlib.flow import InstalledAppFlow
from googleapiclient.discovery import build


SCOPES=['https://www.googleapis.com/auth/spreadsheets.readonly',
'https://mail.google.com/']
SPREADSHEET='1cEviBnbCudweCIVYzHa1GX9l8feFwXMSdqkpDIX-E-A'
RANGE='goodMessages!A:A'

# authorization from credentials to token
creds=None
"""the file token-gt.json stores access/refresh tokens, and is
created automatically when auth flow completes first time"""
if os.path.exists('token-gt.json'):
    creds=Credentials.from_authorized_user_file('token-gt.json',SCOPES)
# If there are no (valid) credentials available, let the user log in
if not creds or not creds.valid:
    if creds and creds.expired and creds.refresh_token:
        creds.refresh(Request())
    else:
        flow=InstalledAppFlow.from_client_secrets_file(
        'credentials-sheets.json', SCOPES)
        creds=flow.run_local_server(port=0)
    # Save credentials for next run
    with open('token-gt.json','w') as token:
        token.write(creds.to_json())

# build sheets
sheetsServ=build('sheets','v4', credentials=creds)
result=sheetsServ.spreadsheets().values().get(spreadsheetId=SPREADSHEET,\
range=RANGE).execute()
rows=result.get('values',[])
texts=list(itertools.chain(*rows))
text=texts[(random.randint(0,(len(texts)-1)))]
#print(text)

# build gmail
mailServ=build('gmail','v1', credentials=creds)

def create_message(sender,to, subject, message_text):
    """Create a message for an email.
    Args:
        sender: Email address of sender
        to: Email address of receiver
        subject: The subject of the email message
        message_text: the text of the email message

    returns:
        an object containing a base64url encoded email object
    """
    message=MIMEText(message_text)
    message['to']=to
    message['from']=sender
    message['subject']=subject
    return{'raw':base64.urlsafe_b64encode(message.as_string().encode()).
    decode()}

LIVE='6055954622@vtext.com' #KATIE
TESTING='6059295681@vtext.com' #JIMMY
message=create_message(sender='me',to=LIVE,
subject='',message_text=text)
#print(message)
eMessage=(mailServ.users().messages().
send(userId='me', body=message).execute())