From 518a1a0bf0f9904037c0b8da2ed6a0e46fb66664 Mon Sep 17 00:00:00 2001 From: "Jyotirmoy Bandyopadhyaya [Bravo68]" Date: Sat, 24 Dec 2022 18:19:19 +0530 Subject: [PATCH] Added WH handler --- packages/wh/helper/github.js | 9 ++++++ packages/wh/helper/imap.js | 59 +++++++++++++++++++++++++++++++++ packages/wh/index.js | 2 +- packages/wh/modules/gh.js | 7 ++++ packages/wh/modules/test.js | 1 - packages/wh/package.json | 5 ++- packages/wh/routes/index.js | 2 ++ yarn.lock | 63 +++++++++++++++++++++++++++++++++--- 8 files changed, 141 insertions(+), 7 deletions(-) create mode 100644 packages/wh/helper/github.js create mode 100644 packages/wh/helper/imap.js create mode 100644 packages/wh/modules/gh.js diff --git a/packages/wh/helper/github.js b/packages/wh/helper/github.js new file mode 100644 index 0000000..83df3fb --- /dev/null +++ b/packages/wh/helper/github.js @@ -0,0 +1,9 @@ +const { Octokit } = require('@octokit/rest') + +const token = '' + +const octokit = new Octokit({ + auth: token, +}) + +module.exports = octokit diff --git a/packages/wh/helper/imap.js b/packages/wh/helper/imap.js new file mode 100644 index 0000000..31a6967 --- /dev/null +++ b/packages/wh/helper/imap.js @@ -0,0 +1,59 @@ +const Imap = require('node-imap') +const inspect = require('util').inspect + +let imap = new Imap({ + user: 'mygmailname@gmail.com', + password: 'mygmailpassword', + host: 'imap.gmail.com', + port: 993, + tls: true, +}) + +function openInbox(cb) { + imap.openBox('INBOX', true, cb) +} +imap.once('ready', function () { + openInbox(function (err, box) { + if (err) throw err + let f = imap.seq.fetch('1:3', { + bodies: 'HEADER.FIELDS (FROM TO SUBJECT DATE)', + struct: true, + }) + f.on('message', function (msg, seqno) { + console.log('Message #%d', seqno) + let prefix = '(#' + seqno + ') ' + msg.on('body', function (stream, info) { + let buffer = '' + stream.on('data', function (chunk) { + buffer += chunk.toString('utf8') + }) + stream.once('end', function () { + console.log( + prefix + 'Parsed header: %s', + inspect(Imap.parseHeader(buffer)) + ) + }) + }) + msg.once('attributes', function (attrs) { + console.log(prefix + 'Attributes: %s', inspect(attrs, false, 8)) + }) + msg.once('end', function () { + console.log(prefix + 'Finished') + }) + }) + f.once('error', function (err) { + console.log('Fetch error: ' + err) + }) + f.once('end', function () { + console.log('Done fetching all messages!') + imap.end() + }) + }) +}) +imap.once('error', function (err) { + console.log(err) +}) +imap.once('end', function () { + console.log('Connection ended') +}) +imap.connect() diff --git a/packages/wh/index.js b/packages/wh/index.js index ac36586..abf703d 100644 --- a/packages/wh/index.js +++ b/packages/wh/index.js @@ -16,6 +16,6 @@ app.use(helmet()) app.use('/', routes) -app.listen(5000, () => { +app.listen(5000, '0.0.0.0', () => { console.log(chalk.green('Server is running on port 5000')) }) diff --git a/packages/wh/modules/gh.js b/packages/wh/modules/gh.js new file mode 100644 index 0000000..127ccba --- /dev/null +++ b/packages/wh/modules/gh.js @@ -0,0 +1,7 @@ +const octokit = require('../helper/github') + +module.exports = async (req, res) => { + const notif = + await octokit.rest.activity.listNotificationsForAuthenticatedUser() + res.send(notif.data) +} diff --git a/packages/wh/modules/test.js b/packages/wh/modules/test.js index 91c537b..76ce592 100644 --- a/packages/wh/modules/test.js +++ b/packages/wh/modules/test.js @@ -1,6 +1,5 @@ const { hook, embed } = require('../lib/wh') module.exports = function (req, res, next) { - console.log(JSON.stringify(embed)) res.send('test') } diff --git a/packages/wh/package.json b/packages/wh/package.json index 1b53053..b4904bf 100644 --- a/packages/wh/package.json +++ b/packages/wh/package.json @@ -7,15 +7,18 @@ "license": "ISC", "private": true, "dependencies": { + "@octokit/rest": "^19.0.5", "axios": "^1.2.1", "chalk": "4", "cors": "^2.8.5", "discord-webhook-node": "^1.1.8", "discord-webhook-ts": "^5.0.0", "express": "^4.18.2", + "gitnews": "^3.1.3", "helmet": "^6.0.1", "moment": "^2.29.4", - "morgan": "^1.10.0" + "morgan": "^1.10.0", + "node-imap": "^0.9.6" }, "scripts": { "start": "node index.js", diff --git a/packages/wh/routes/index.js b/packages/wh/routes/index.js index e785dc0..c763d88 100644 --- a/packages/wh/routes/index.js +++ b/packages/wh/routes/index.js @@ -1,8 +1,10 @@ const { Router } = require('express') const test = require('../modules/test') +const gh = require('../modules/gh') const router = Router() router.get('/test', test) +router.get('/gh', gh) module.exports = router diff --git a/yarn.lock b/yarn.lock index 824c337..ebbc67d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1973,7 +1973,7 @@ node-fetch "^2.6.7" universal-user-agent "^6.0.0" -"@octokit/rest@^19.0.3": +"@octokit/rest@^19.0.3", "@octokit/rest@^19.0.5": version "19.0.5" resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-19.0.5.tgz#4dbde8ae69b27dca04b5f1d8119d282575818f6c" integrity sha512-+4qdrUFq2lk7Va+Qff3ofREQWGBeoTKNqlJO+FGjFP35ZahP+nBenhZiGdu8USSgmq4Ky3IJ/i4u0xbLqHaeow== @@ -2215,7 +2215,7 @@ resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== -"@types/qs@*": +"@types/qs@*", "@types/qs@^6.9.1": version "6.9.7" resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb" integrity sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw== @@ -3852,6 +3852,16 @@ gitconfiglocal@^1.0.0: dependencies: ini "^1.3.2" +gitnews@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/gitnews/-/gitnews-3.1.3.tgz#389b1d4ed6e631b4792067267aef5a36e1799c98" + integrity sha512-Jx//gDh+dNd8ZeazVuaQ+V2+Z7DpjVWY7Y+hhnmlo4WvbubyOL+aYT9OFCckkllAN9TcFt2+xq1L8DwLmkJk5w== + dependencies: + lodash.get "^4.4.2" + md5-hex "^2.0.0" + node-fetch "^2.2.0" + with-query "^1.1.2" + glob-parent@^5.1.1, glob-parent@^5.1.2, glob-parent@~5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" @@ -4597,6 +4607,11 @@ locate-path@^5.0.0: dependencies: p-locate "^4.1.0" +lodash.get@^4.4.2: + version "4.4.2" + resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" + integrity sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ== + lodash.ismatch@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz#756cb5150ca3ba6f11085a78849645f188f85f37" @@ -4684,6 +4699,18 @@ map-obj@^4.0.0: resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-4.3.0.tgz#9304f906e93faae70880da102a9f1df0ea8bb05a" integrity sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ== +md5-hex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/md5-hex/-/md5-hex-2.0.0.tgz#d0588e9f1c74954492ecd24ac0ac6ce997d92e33" + integrity sha512-0HLfzJTZ7707VBNM1ydr5sTb+IZLhmU4u2TVA+Eenfn/Ed42/gn10smbAPiuEm/jNgjvWKUiMNihqJQ6flus9w== + dependencies: + md5-o-matic "^0.1.1" + +md5-o-matic@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/md5-o-matic/-/md5-o-matic-0.1.1.tgz#822bccd65e117c514fab176b25945d54100a03c3" + integrity sha512-QBJSFpsedXUl/Lgs4ySdB2XCzUEcJ3ujpbagdZCkRaYIaC0kFnID8jhc84KEiVv6dNFtIrmW7bqow0lDxgJi6A== + media-typer@0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" @@ -5075,7 +5102,7 @@ node-domexception@^1.0.0: resolved "https://registry.yarnpkg.com/node-domexception/-/node-domexception-1.0.0.tgz#6888db46a1f71c0b76b3f7555016b63fe64766e5" integrity sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ== -node-fetch@2.6.7, node-fetch@^2.6.0, node-fetch@^2.6.1, node-fetch@^2.6.7: +node-fetch@2.6.7, node-fetch@^2.2.0, node-fetch@^2.6.0, node-fetch@^2.6.1, node-fetch@^2.6.7: version "2.6.7" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== @@ -5112,6 +5139,14 @@ node-gyp@^9.0.0: tar "^6.1.2" which "^2.0.2" +node-imap@^0.9.6: + version "0.9.6" + resolved "https://registry.yarnpkg.com/node-imap/-/node-imap-0.9.6.tgz#b98d87f4a99dbf5184e567cd6b0f3094014f64eb" + integrity sha512-pYQ2AtjQwrSvILq8EYInv3E3svrJwrTOxzW7uBGpP//AkCs/pMdO+O6KEgUlSchh/0/N0MSWs5io3xZhxJ9yLg== + dependencies: + readable-stream "^3.6.0" + utf7 "^1.0.2" + nodemailer@^6.8.0: version "6.8.0" resolved "https://registry.yarnpkg.com/nodemailer/-/nodemailer-6.8.0.tgz#804bcc5256ee5523bc914506ee59f8de8f0b1cd5" @@ -5759,7 +5794,7 @@ q@^1.5.1: resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" integrity sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw== -qs@6.11.0: +qs@6.11.0, qs@^6.9.3: version "6.11.0" resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== @@ -6067,6 +6102,11 @@ semver@^7.0.0, semver@^7.1.1, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7: dependencies: lru-cache "^6.0.0" +semver@~5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" + integrity sha512-mfmm3/H9+67MCVix1h+IXTpDwL6710LyHuk7+cWC9T1mE0qz4iHhh6r4hU2wrIT9iTsAAC2XQRvfblL028cpLw== + semver@~7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" @@ -6720,6 +6760,13 @@ url-parse@^1.5.10: querystringify "^2.1.1" requires-port "^1.0.0" +utf7@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/utf7/-/utf7-1.0.2.tgz#955f490aae653ba220b9456a0a8776c199360991" + integrity sha512-qQrPtYLLLl12NF4DrM9CvfkxkYI97xOb5dsnGZHE3teFr0tWiEZ9UdgMPczv24vl708cYMpe6mGXGHrotIp3Bw== + dependencies: + semver "~5.3.0" + util-deprecate@^1.0.1, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" @@ -6811,6 +6858,14 @@ wide-align@^1.1.5: dependencies: string-width "^1.0.2 || 2 || 3 || 4" +with-query@^1.1.2: + version "1.3.0" + resolved "https://registry.yarnpkg.com/with-query/-/with-query-1.3.0.tgz#994bef346c954f4d0761bc14f3c9af7c428728ee" + integrity sha512-grR6VEgM5imGOcQChTHN7D+mqavGBUo9EXzzge18EVagyFqBLVfA+amXmN30RLtnt9gJoiHmpSzhq6sfI3GrKQ== + dependencies: + "@types/qs" "^6.9.1" + qs "^6.9.3" + wordwrap@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb"