Skip to content
This repository was archived by the owner on Mar 13, 2020. It is now read-only.

Commit e3e18c6

Browse files
committed
Implemented calls to Mail API
1 parent 33fcd9e commit e3e18c6

File tree

6 files changed

+166
-2
lines changed

6 files changed

+166
-2
lines changed

app.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ require('dotenv').config();
99

1010
var index = require('./routes/index');
1111
var authorize = require('./routes/authorize');
12+
var mail = require('./routes/mail');
1213

1314
var app = express();
1415

@@ -26,6 +27,7 @@ app.use(express.static(path.join(__dirname, 'public')));
2627

2728
app.use('/', index);
2829
app.use('/authorize', authorize);
30+
app.use('/mail', mail);
2931

3032
// catch 404 and forward to error handler
3133
app.use(function(req, res, next) {

package-lock.json

Lines changed: 98 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
"start": "node ./bin/www"
77
},
88
"dependencies": {
9+
"@microsoft/microsoft-graph-client": "^1.0.0",
910
"body-parser": "~1.18.2",
1011
"cookie-parser": "~1.4.3",
1112
"debug": "~2.6.9",

routes/index.js

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,6 @@ router.get('/', async function(req, res, next) {
1212
if (accessToken && userName) {
1313
parms.user = userName;
1414
parms.debug = `User: ${userName}\nAccess Token: ${accessToken}`;
15-
16-
// If token was refreshed, save the new values in the session
1715
} else {
1816
parms.signInUrl = authHelper.getAuthUrl();
1917
parms.debug = parms.signInUrl;

routes/mail.js

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
var express = require('express');
2+
var router = express.Router();
3+
var authHelper = require('../helpers/auth');
4+
var graph = require('@microsoft/microsoft-graph-client');
5+
6+
/* GET home page. */
7+
router.get('/', async function(req, res, next) {
8+
let parms = { title: 'Inbox', active: { inbox: true } };
9+
10+
const accessToken = await authHelper.getAccessToken(req.cookies, res);
11+
const userName = req.cookies.graph_user_name;
12+
13+
if (accessToken && userName) {
14+
parms.user = userName;
15+
16+
// Initialize Graph client
17+
const client = graph.Client.init({
18+
authProvider: (done) => {
19+
done(null, accessToken);
20+
}
21+
});
22+
23+
try {
24+
// Get the 10 newest messages from inbox
25+
const result = await client
26+
.api('/me/mailfolders/inbox/messages')
27+
.top(10)
28+
.select('subject,from,receivedDateTime,isRead')
29+
.orderby('receivedDateTime DESC')
30+
.get();
31+
32+
parms.messages = result.value;
33+
} catch (err) {
34+
parms.message = 'Error retrieving messages';
35+
parms.error = { status: `${err.code}: ${err.message}` };
36+
parms.debug = JSON.stringify(err.body, null, 2);
37+
res.render('error', parms);
38+
}
39+
40+
} else {
41+
// Redirect to home
42+
res.redirect('/');
43+
}
44+
45+
res.render('mail', parms);
46+
});
47+
48+
module.exports = router;

views/mail.hbs

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
<h2>Inbox</h2>
2+
<table class="table">
3+
<thead class="thead-light">
4+
<th scope="col">From</th>
5+
<th scope="col">Subject</th>
6+
<th scope="col">Received</th>
7+
</thead>
8+
<tbody>
9+
{{#each messages}}
10+
<tr>
11+
<td title="{{this.from.emailAddress.address}}">{{this.from.emailAddress.name}}</td>
12+
<td>{{this.subject}}</td>
13+
<td>{{this.receivedDateTime}}</td>
14+
</tr>
15+
{{/each}}
16+
</tbody>
17+
</table>

0 commit comments

Comments
 (0)