Created
October 17, 2019 22:06
-
-
Save kostimarko/659f073a903133a4c6f29bbc493c3bda to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const functions = require("firebase-functions"); | |
const nodemailer = require("nodemailer"); | |
const axios = require("axios"); | |
const moment = require("moment"); | |
const momentTZ = require("moment-timezone"); | |
// // Create and Deploy Your First Cloud Functions | |
// // https://firebase.google.com/docs/functions/write-firebase-functions | |
// | |
exports.sendEmail = functions.pubsub | |
.schedule("every monday, tuesday, wednesday, thursday, friday 06:45") | |
.timeZone("America/Chicago") | |
.onRun(async context => { | |
const now = moment().format("YYYYMMDD"); | |
const mailList = [ | |
"yourEmailAddress@gmail.com" | |
]; | |
const transporter = nodemailer.createTransport({ | |
service: "gmail", | |
auth: { | |
user: "********", | |
pass: "********" | |
} | |
}); | |
try { | |
const GameData = await axios.get( | |
`https://api.mysportsfeeds.com/v2.1/pull/mlb/2019-regular/games.json?date=${now}&team=chicago-cubs`, | |
{ | |
auth: { | |
username: "*********", | |
password: "*********" | |
} | |
} | |
); | |
const { startTime } = GameData.data.games[0].schedule; | |
const { id } = GameData.data.games[0].schedule.venue; | |
const gameTime = momentTZ(startTime) | |
.tz("America/Chicago") | |
.format("HHmm"); | |
console.log(gameTime); | |
const timeCheck = 1500; | |
console.log(startTime); | |
if (id === 133) { | |
if (gameTime > timeCheck) { | |
const mailOptions = { | |
from: "yourEmailAddress@gmail.com", | |
to: mailList, | |
subject: "CUBS EVENING GAME - PARK CAREFULLY!", | |
html: `<!doctype html> | |
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office"> | |
<head> | |
<title> | |
</title> | |
<!--[if !mso]><!-- --> | |
<meta http-equiv="X-UA-Compatible" content="IE=edge"> | |
<!--<![endif]--> | |
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> | |
<meta name="viewport" content="width=device-width, initial-scale=1"> | |
<style type="text/css"> | |
#outlook a { | |
padding: 0; | |
} | |
.ReadMsgBody { | |
width: 100%; | |
} | |
.ExternalClass { | |
width: 100%; | |
} | |
.ExternalClass * { | |
line-height: 100%; | |
} | |
body { | |
margin: 0; | |
padding: 0; | |
-webkit-text-size-adjust: 100%; | |
-ms-text-size-adjust: 100%; | |
} | |
table, | |
td { | |
border-collapse: collapse; | |
mso-table-lspace: 0pt; | |
mso-table-rspace: 0pt; | |
} | |
img { | |
border: 0; | |
height: auto; | |
line-height: 100%; | |
outline: none; | |
text-decoration: none; | |
-ms-interpolation-mode: bicubic; | |
} | |
p { | |
display: block; | |
margin: 13px 0; | |
} | |
</style> | |
<!--[if !mso]><!--> | |
<style type="text/css"> | |
@media only screen and (max-width:480px) { | |
@-ms-viewport { | |
width: 320px; | |
} | |
@viewport { | |
width: 320px; | |
} | |
} | |
</style> | |
<!--<![endif]--> | |
<!--[if mso]> | |
<xml> | |
<o:OfficeDocumentSettings> | |
<o:AllowPNG/> | |
<o:PixelsPerInch>96</o:PixelsPerInch> | |
</o:OfficeDocumentSettings> | |
</xml> | |
<![endif]--> | |
<!--[if lte mso 11]> | |
<style type="text/css"> | |
.outlook-group-fix { width:100% !important; } | |
</style> | |
<![endif]--> | |
<style type="text/css"> | |
@media only screen and (min-width:480px) { | |
.mj-column-per-100 { | |
width: 100% !important; | |
max-width: 100%; | |
} | |
} | |
</style> | |
<style type="text/css"> | |
@media only screen and (max-width:480px) { | |
table.full-width-mobile { | |
width: 100% !important; | |
} | |
td.full-width-mobile { | |
width: auto !important; | |
} | |
} | |
</style> | |
</head> | |
<body style="background-color:#F8F8F8;"> | |
<div style="background-color:#F8F8F8;"> | |
<!--[if mso | IE]> | |
<table | |
align="center" border="0" cellpadding="0" cellspacing="0" class="" style="width:600px;" width="600" | |
> | |
<tr> | |
<td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;"> | |
<![endif]--> | |
<div style="background:#ffffff;background-color:#ffffff;Margin:0px auto;max-width:600px;"> | |
<table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="background:#ffffff;background-color:#ffffff;width:100%;"> | |
<tbody> | |
<tr> | |
<td style="direction:ltr;font-size:0px;padding:20px 0;padding-bottom:0px;padding-top:0;text-align:center;"> | |
<!--[if mso | IE]> | |
<table role="presentation" border="0" cellpadding="0" cellspacing="0"> | |
<tr> | |
<td | |
class="" style="vertical-align:top;width:600px;" | |
> | |
<![endif]--> | |
<div class="mj-column-per-100 outlook-group-fix" style="font-size:0px;text-align:left;direction:ltr;display:inline-block;vertical-align:top;width:100%;"> | |
<table border="0" cellpadding="0" cellspacing="0" role="presentation" style="vertical-align:top;" width="100%"> | |
<tr> | |
<td align="left" style="font-size:0px;padding:0;word-break:break-word;"> | |
<table border="0" cellpadding="0" cellspacing="0" role="presentation" style="border-collapse:collapse;border-spacing:0px;"> | |
<tbody> | |
<tr> | |
<td style="width:600px;"> | |
<img alt="" height="auto" src="https://media.giphy.com/media/3o6MbsdsdBjA5xPExa/giphy.gif" style="border:none;display:block;outline:none;text-decoration:none;height:auto;width:100%;font-size:13px;" width="600" /> | |
</td> | |
</tr> | |
</tbody> | |
</table> | |
</td> | |
</tr> | |
</table> | |
</div> | |
<!--[if mso | IE]> | |
</td> | |
</tr> | |
</table> | |
<![endif]--> | |
</td> | |
</tr> | |
</tbody> | |
</table> | |
</div> | |
<!--[if mso | IE]> | |
</td> | |
</tr> | |
</table> | |
<table | |
align="center" border="0" cellpadding="0" cellspacing="0" class="" style="width:600px;" width="600" | |
> | |
<tr> | |
<td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;"> | |
<![endif]--> | |
<div style="background:#ffffff;background-color:#ffffff;Margin:0px auto;max-width:600px;"> | |
<table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="background:#ffffff;background-color:#ffffff;width:100%;"> | |
<tbody> | |
<tr> | |
<td style="direction:ltr;font-size:0px;padding:20px 0;padding-bottom:0px;padding-top:0;text-align:center;"> | |
<!--[if mso | IE]> | |
<table role="presentation" border="0" cellpadding="0" cellspacing="0"> | |
<tr> | |
<td | |
class="" style="vertical-align:top;width:600px;" | |
> | |
<![endif]--> | |
<div class="mj-column-per-100 outlook-group-fix" style="font-size:0px;text-align:left;direction:ltr;display:inline-block;vertical-align:top;width:100%;"> | |
<table border="0" cellpadding="0" cellspacing="0" role="presentation" style="vertical-align:top;" width="100%"> | |
<tr> | |
<td align="center" style="font-size:0px;padding:10px 25px;padding-top:50px;padding-right:25px;padding-bottom:30px;padding-left:25px;word-break:break-word;"> | |
<div style="font-family:Georgia, serif;font-size:45px;font-weight:bold;line-height:1;text-align:center;color:#000000;">Don't Let this be you.</div> | |
</td> | |
</tr> | |
</table> | |
</div> | |
<!--[if mso | IE]> | |
</td> | |
</tr> | |
</table> | |
<![endif]--> | |
</td> | |
</tr> | |
</tbody> | |
</table> | |
</div> | |
<!--[if mso | IE]> | |
</td> | |
</tr> | |
</table> | |
<table | |
align="center" border="0" cellpadding="0" cellspacing="0" class="" style="width:600px;" width="600" | |
> | |
<tr> | |
<td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;"> | |
<![endif]--> | |
<div style="background:#ffffff;background-color:#ffffff;Margin:0px auto;max-width:600px;"> | |
<table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="background:#ffffff;background-color:#ffffff;width:100%;"> | |
<tbody> | |
<tr> | |
<td style="direction:ltr;font-size:0px;padding:20px 0;padding-bottom:20px;padding-top:20px;text-align:center;"> | |
<!--[if mso | IE]> | |
<table role="presentation" border="0" cellpadding="0" cellspacing="0"> | |
<tr> | |
<td | |
class="" style="vertical-align:middle;width:600px;" | |
> | |
<![endif]--> | |
<div class="mj-column-per-100 outlook-group-fix" style="font-size:0px;text-align:left;direction:ltr;display:inline-block;vertical-align:middle;width:100%;"> | |
<table border="0" cellpadding="0" cellspacing="0" role="presentation" style="vertical-align:middle;" width="100%"> | |
<tr> | |
<td align="center" style="font-size:0px;padding:10px 25px;padding-right:25px;padding-left:25px;word-break:break-word;"> | |
<div style="font-family:Georgia, serif;font-size:22px;line-height:30px;text-align:center;color:#000000;">Vehicles parked on the <b style="color:#7161EF">south side of IPR</b> are in violation of Residential Permit Parking regulations + subject to ticket/tow at 5pm.</div> | |
</td> | |
</tr> | |
<tr> | |
<td align="center" style="font-size:0px;padding:10px 25px;padding-right:25px;padding-left:25px;word-break:break-word;"> | |
<div style="font-family:Georgia, serif;font-size:22px;line-height:30px;text-align:center;color:#000000;">Reminder to park on the north side (50k side) of IPR today!</div> | |
</td> | |
</tr> | |
<tr> | |
<td align="center" style="font-size:0px;padding:10px 25px;padding-right:25px;padding-left:25px;word-break:break-word;"> | |
<div style="font-family:Georgia, serif;font-size:22px;line-height:30px;text-align:center;color:#000000;"></div> | |
</td> | |
</tr> | |
</table> | |
</div> | |
<!--[if mso | IE]> | |
</td> | |
</tr> | |
</table> | |
<![endif]--> | |
</td> | |
</tr> | |
</tbody> | |
</table> | |
</div> | |
<!--[if mso | IE]> | |
</td> | |
</tr> | |
</table> | |
<![endif]--> | |
</div> | |
</body> | |
</html>` | |
}; | |
const mailSent = await transporter.sendMail(mailOptions); | |
console.log(mailSent); | |
} | |
} | |
} catch (error) { | |
console.log(error); | |
} | |
return true; | |
}); | |
``; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment