From fd19b0f1bfe44ea930f18aa1072c6666913f9ccb Mon Sep 17 00:00:00 2001 From: Arjun Patel Date: Thu, 27 Jan 2022 20:37:04 -0800 Subject: [PATCH] setting up sendgrid and stuff --- serverless/functions/package-lock.json | 115 ++++++++++++++++++++++ serverless/functions/package.json | 1 + serverless/functions/src/notifications.ts | 11 ++- 3 files changed, 123 insertions(+), 4 deletions(-) diff --git a/serverless/functions/package-lock.json b/serverless/functions/package-lock.json index 8b29fa3..477b3f2 100644 --- a/serverless/functions/package-lock.json +++ b/serverless/functions/package-lock.json @@ -6,6 +6,7 @@ "": { "name": "functions", "dependencies": { + "@sendgrid/mail": "^7.6.0", "agora-access-token": "^2.0.4", "firebase-admin": "^9.8.0", "firebase-functions": "^3.14.1" @@ -484,6 +485,41 @@ "integrity": "sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA=", "optional": true }, + "node_modules/@sendgrid/client": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@sendgrid/client/-/client-7.6.0.tgz", + "integrity": "sha512-cpBVZKLlMTO+vpE18krTixubYmZa98oTbLkqBDuTiA3zRkW+urrxg7pDR24TkI35Mid0Zru8jDHwnOiqrXu0TA==", + "dependencies": { + "@sendgrid/helpers": "^7.6.0", + "axios": "^0.21.4" + }, + "engines": { + "node": "6.* || 8.* || >=10.*" + } + }, + "node_modules/@sendgrid/helpers": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@sendgrid/helpers/-/helpers-7.6.0.tgz", + "integrity": "sha512-0uWD+HSXLl4Z/X3cN+UMQC20RE7xwAACgppnfjDyvKG0KvJcUgDGz7HDdQkiMUdcVWfmyk6zKSg7XKfKzBjTwA==", + "dependencies": { + "deepmerge": "^4.2.2" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/@sendgrid/mail": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@sendgrid/mail/-/mail-7.6.0.tgz", + "integrity": "sha512-0KdaSZzflJD/vUAZjB3ALBIuaVGoLq22hrb2fvQXZHRepU/yhRNlEOqrr05MfKBnKskzq1blnD1J0fHxiwaolw==", + "dependencies": { + "@sendgrid/client": "^7.6.0", + "@sendgrid/helpers": "^7.6.0" + }, + "engines": { + "node": "6.* || 8.* || >=10.*" + } + }, "node_modules/@tootallnate/once": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", @@ -941,6 +977,14 @@ "retry": "0.13.1" } }, + "node_modules/axios": { + "version": "0.21.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", + "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", + "dependencies": { + "follow-redirects": "^1.14.0" + } + }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -1249,6 +1293,14 @@ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true }, + "node_modules/deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/define-properties": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", @@ -1997,6 +2049,25 @@ "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", "dev": true }, + "node_modules/follow-redirects": { + "version": "1.14.7", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.7.tgz", + "integrity": "sha512-+hbxoLbFMbRKDwohX8GkTataGqO6Jb7jGwpAlwgy2bIz25XtRm7KEzJM76R1WiNT5SwZkX4Y75SwBolkpmE7iQ==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, "node_modules/forwarded": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", @@ -4716,6 +4787,32 @@ "integrity": "sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA=", "optional": true }, + "@sendgrid/client": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@sendgrid/client/-/client-7.6.0.tgz", + "integrity": "sha512-cpBVZKLlMTO+vpE18krTixubYmZa98oTbLkqBDuTiA3zRkW+urrxg7pDR24TkI35Mid0Zru8jDHwnOiqrXu0TA==", + "requires": { + "@sendgrid/helpers": "^7.6.0", + "axios": "^0.21.4" + } + }, + "@sendgrid/helpers": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@sendgrid/helpers/-/helpers-7.6.0.tgz", + "integrity": "sha512-0uWD+HSXLl4Z/X3cN+UMQC20RE7xwAACgppnfjDyvKG0KvJcUgDGz7HDdQkiMUdcVWfmyk6zKSg7XKfKzBjTwA==", + "requires": { + "deepmerge": "^4.2.2" + } + }, + "@sendgrid/mail": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@sendgrid/mail/-/mail-7.6.0.tgz", + "integrity": "sha512-0KdaSZzflJD/vUAZjB3ALBIuaVGoLq22hrb2fvQXZHRepU/yhRNlEOqrr05MfKBnKskzq1blnD1J0fHxiwaolw==", + "requires": { + "@sendgrid/client": "^7.6.0", + "@sendgrid/helpers": "^7.6.0" + } + }, "@tootallnate/once": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", @@ -5052,6 +5149,14 @@ "retry": "0.13.1" } }, + "axios": { + "version": "0.21.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", + "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", + "requires": { + "follow-redirects": "^1.14.0" + } + }, "balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -5286,6 +5391,11 @@ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true }, + "deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==" + }, "define-properties": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", @@ -5894,6 +6004,11 @@ "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", "dev": true }, + "follow-redirects": { + "version": "1.14.7", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.7.tgz", + "integrity": "sha512-+hbxoLbFMbRKDwohX8GkTataGqO6Jb7jGwpAlwgy2bIz25XtRm7KEzJM76R1WiNT5SwZkX4Y75SwBolkpmE7iQ==" + }, "forwarded": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", diff --git a/serverless/functions/package.json b/serverless/functions/package.json index f7a6b4c..1ecadfc 100644 --- a/serverless/functions/package.json +++ b/serverless/functions/package.json @@ -15,6 +15,7 @@ }, "main": "lib/index.js", "dependencies": { + "@sendgrid/mail": "^7.6.0", "agora-access-token": "^2.0.4", "firebase-admin": "^9.8.0", "firebase-functions": "^3.14.1" diff --git a/serverless/functions/src/notifications.ts b/serverless/functions/src/notifications.ts index 7b283c1..2310bbb 100644 --- a/serverless/functions/src/notifications.ts +++ b/serverless/functions/src/notifications.ts @@ -1,11 +1,14 @@ // import * as functions from "firebase-functions"; +import * as sgMail from "@sendgrid/mail"; + +sgMail.setApiKey( + "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" +); // exports.inviteUserToTeam = functions.firestore // .document('teamMembers/{userId}') -// .onCreate((snap, context) => { -// // Get an object representing the document -// // e.g. {'name': 'Marie', 'age': 66} -// const newValue = snap.data(); +// .onCreate(async (snap, context) => { +// const newTeamMember = snap.data() as TeamMember; // // access a particular field as you would any JS property // const name = newValue.name;