diff options
| author | schneefux <schneefux+commit@schneefux.xyz> | 2014-10-01 02:40:29 +0200 |
|---|---|---|
| committer | schneefux <schneefux+commit@schneefux.xyz> | 2014-10-01 02:40:29 +0200 |
| commit | a26e395eba1fe45e0c0462bc8133b5144bf95b9c (patch) | |
| tree | 67953d162d603999d63f43a3637880aa238f236d /client/app_utils.py | |
| parent | 820a44443aa56c18393aaa5e9973530f9101876a (diff) | |
| parent | e0515b25546b978db1b3e38ade65c98beeec3602 (diff) | |
| download | jasper-client-a26e395eba1fe45e0c0462bc8133b5144bf95b9c.tar.gz jasper-client-a26e395eba1fe45e0c0462bc8133b5144bf95b9c.zip | |
Merge pull request #206 from Holzhaus/move-apputils-to-client-folder
Move app_utils.py
Diffstat (limited to 'client/app_utils.py')
| -rw-r--r-- | client/app_utils.py | 124 |
1 files changed, 124 insertions, 0 deletions
diff --git a/client/app_utils.py b/client/app_utils.py new file mode 100644 index 0000000..cea6881 --- /dev/null +++ b/client/app_utils.py @@ -0,0 +1,124 @@ +# -*- coding: utf-8-*- +import smtplib +from email.MIMEText import MIMEText +import urllib2 +import re +import requests +from pytz import timezone + + +def sendEmail(SUBJECT, BODY, TO, FROM, SENDER, PASSWORD, SMTP_SERVER): + """Sends an HTML email.""" + for body_charset in 'US-ASCII', 'ISO-8859-1', 'UTF-8': + try: + BODY.encode(body_charset) + except UnicodeError: + pass + else: + break + msg = MIMEText(BODY.encode(body_charset), 'html', body_charset) + msg['From'] = SENDER + msg['To'] = TO + msg['Subject'] = SUBJECT + + SMTP_PORT = 587 + session = smtplib.SMTP(SMTP_SERVER, SMTP_PORT) + session.starttls() + session.login(FROM, PASSWORD) + session.sendmail(SENDER, TO, msg.as_string()) + session.quit() + + +def emailUser(profile, SUBJECT="", BODY=""): + """ + Sends an email. + + Arguments: + profile -- contains information related to the user (e.g., email address) + SUBJECT -- subject line of the email + BODY -- body text of the email + """ + def generateSMSEmail(profile): + """Generates an email from a user's phone number based on their carrier.""" + if profile['carrier'] is None or not profile['phone_number']: + return None + + return str(profile['phone_number']) + "@" + profile['carrier'] + + if profile['prefers_email'] and profile['gmail_address']: + # add footer + if BODY: + BODY = profile['first_name'] + \ + ",<br><br>Here are your top headlines:" + BODY + BODY += "<br>Sent from your Jasper" + + recipient = profile['gmail_address'] + if profile['first_name'] and profile['last_name']: + recipient = profile['first_name'] + " " + \ + profile['last_name'] + " <%s>" % recipient + else: + recipient = generateSMSEmail(profile) + + if not recipient: + return False + + try: + if 'mailgun' in profile: + user = profile['mailgun']['username'] + password = profile['mailgun']['password'] + server = 'smtp.mailgun.org' + else: + user = profile['gmail_address'] + password = profile['gmail_password'] + server = 'smtp.gmail.com' + sendEmail(SUBJECT, BODY, recipient, user, + "Jasper <jasper>", password, server) + + return True + except: + return False + + +def getTimezone(profile): + """ + Returns the pytz timezone for a given profile. + + Arguments: + profile -- contains information related to the user (e.g., email address) + """ + try: + return timezone(profile['timezone']) + except: + return None + + +def generateTinyURL(URL): + """ + Generates a compressed URL. + + Arguments: + URL -- the original URL to-be compressed + """ + target = "http://tinyurl.com/api-create.php?url=" + URL + response = urllib2.urlopen(target) + return response.read() + + +def isNegative(phrase): + """ + Returns True if the input phrase has a negative sentiment. + + Arguments: + phrase -- the input phrase to-be evaluated + """ + return bool(re.search(r'\b(no(t)?|don\'t|stop|end)\b', phrase, re.IGNORECASE)) + + +def isPositive(phrase): + """ + Returns True if the input phrase has a positive sentiment. + + Arguments: + phrase -- the input phrase to-be evaluated + """ + return bool(re.search(r'\b(sure|yes|yeah|go)\b', phrase, re.IGNORECASE)) |
