refactor: break out mail code (#10)

Co-authored-by: Jef LeCompte <jeffreylec@gmail.com>
This commit is contained in:
Ion Caza
2020-09-17 23:02:20 -04:00
committed by GitHub
parent 24de6af038
commit dcbaa6bb2e
2 changed files with 47 additions and 33 deletions
+13 -33
View File
@@ -1,42 +1,24 @@
const mailer = require("./mailer")
const puppeteer = require("puppeteer"); const puppeteer = require("puppeteer");
const opn = require("opn"); const opn = require("opn");
const nodemailer = require("nodemailer");
const timeout = 5000; const timeout = 5000;
const waitForTimeout = 1000; const waitForTimeout = 1000;
const cartLink =
"https://store.nvidia.com/store/nvidia/en_US/buy/productID.5438481700/clearCart.yes/nextPage.QuickBuyCartPage";
const emailUsername = process.env.EMAIL_USERNAME;
const emailPassword = process.env.EMAIL_PASSWORD;
const transporter = nodemailer.createTransport({
service: "gmail",
auth: {
user: emailUsername,
pass: emailPassword,
},
});
const mailOptions = {
from: emailUsername,
to: emailUsername,
subject: "NVIDIA - BUY NOW",
text: cartLink,
};
async function buy() { async function buy() {
const links = [ const links = [
{ {
name: "nvidia.com", name: "nvidia.com",
url: "https://www.nvidia.com/en-us/geforce/buy/", url: "https://www.nvidia.com/en-us/geforce/buy/",
oosText: "out of stock" oosText: ["out of stock"],
cartUrl: "https://store.nvidia.com/store/nvidia/en_US/buy/productID.5438481700/clearCart.yes/nextPage.QuickBuyCartPage"
} }
,{ ,{
name: "nvidia.com 2", name: "nvidia.com 2",
url: "https://www.nvidia.com/en-us/shop/geforce/?page=1&limit=9&locale=en-us&search=3080", url: "https://www.nvidia.com/en-us/shop/geforce/?page=1&limit=9&locale=en-us&search=3080",
oosText: ["out of stock"] oosText: ["out of stock"],
cartUrl: "https://store.nvidia.com/store/nvidia/en_US/buy/productID.5438481700/clearCart.yes/nextPage.QuickBuyCartPage"
} }
,{ ,{
name: "bestbuy.com", name: "bestbuy.com",
@@ -116,16 +98,14 @@ async function goto(link) {
} else { } else {
console.log("*** IN STOCK AT " + link.name.toUpperCase() + ", BUY NOW ***"); console.log("*** IN STOCK AT " + link.name.toUpperCase() + ", BUY NOW ***");
await page.screenshot({ path: `nvidia-${Date.now()}.png` }); await page.screenshot({ path: `nvidia-${Date.now()}.png` });
opn(link.url); let clickUrl;
if (emailUsername && emailPassword) { if (link.cartUrl) {
transporter.sendMail(mailOptions, function (error, info) { clickUrl = link.cartUrl
if (error) { } else {
console.log(error); clickUrl = link.url
} else {
console.log("email sent: " + info.response);
}
});
} }
opn(clickUrl);
mailer.send(clickUrl)
} }
await browser.close(); await browser.close();
+34
View File
@@ -0,0 +1,34 @@
const nodemailer = require("nodemailer");
const emailUsername = process.env.EMAIL_USERNAME;
const emailPassword = process.env.EMAIL_PASSWORD;
const transporter = nodemailer.createTransport({
service: "gmail",
auth: {
user: emailUsername,
pass: emailPassword,
},
});
let mailOptions = {
from: emailUsername,
to: emailUsername,
subject: "NVIDIA - BUY NOW",
text: '',
};
function send(text) {
mailOptions.text = text;
if (emailUsername && emailPassword) {
transporter.sendMail(mailOptions, function (error, info) {
if (error) {
console.log(error);
} else {
console.log("email sent: " + info.response);
}
});
}
}
module.exports = { send }