content/hifi-content/Experiences/Releases/usefulUtilities/hiFiCalendar/2019-06-14_07-23-00/hifiWebApp/hifiCalendarRouter.js
2022-02-13 23:16:46 +01:00

125 lines
No EOL
4 KiB
JavaScript

const express = require('express');
const router = express.Router();
const request = require('request');
const serverConfig = require("./serverConfig.json");
const CLIENT_ID = serverConfig.CLIENT_ID;
const CLIENT_SECRET = serverConfig.CLIENT_SECRET;
const REDIRECT_URI = serverConfig.REDIRECT_URI;
const TOKEN_URL = "https://www.googleapis.com/oauth2/v4/token";
router.get("/", (req, res) => {
res.send("test");
})
router.get("/canary", (req, res) => {
// Ensure that the REDIRECT_URI is up.
// Checks that NGINX is serving the right page.
var redirectUriOK;
var apiRouterOK = true; // Always true if we can get here!
request.get(
REDIRECT_URI,
{
timeout: 15000
},
(error, response) => {
redirectUriOK = !error;
// The `result` value should be a logical AND
// of all of the subsystems whose status we check.
var responseObject = {
result: redirectUriOK && apiRouterOK && lastOauthRequestTokenOK && lastOauthExchangeCodeOK,
systemStatus: {
apiRouter: {
status: apiRouterOK
},
oAuth: {
lastRequest_token: {
status: lastOauthRequestTokenOK
},
lastExchangeCode: {
status: lastOauthExchangeCodeOK
}
},
redirectURI: {
status: redirectUriOK
}
}
};
res.statusCode = 200;
res.setHeader('Content-Type', 'application/json');
return res.end(JSON.stringify(responseObject));
}
);
});
var lastOauthRequestTokenOK = true; // System is fine until proven otherwise
router.post("/request_token", (req, res) => {
const refresh_token = req.body.refresh_token;
const oAuthInfo = {
client_id: CLIENT_ID,
client_secret: CLIENT_SECRET,
refresh_token: refresh_token,
grant_type: "refresh_token"
}
request({
uri: TOKEN_URL,
method: "POST",
json: true,
body: oAuthInfo
}, (error, response) => {
lastOauthRequestTokenOK = !error;
if (error) {
const responseObject = {
status: "error",
errorText: `Refreshing Oauth Token with Google`
};
res.statusCode = 500;
res.setHeader('Content-Type', 'application/json');
return res.end(JSON.stringify(responseObject));
} else {
response.body.status = "success"
res.statusCode = 200;
res.setHeader('Content-Type', 'application/json');
return res.end(JSON.stringify(response.body));
}
})
})
var lastOauthExchangeCodeOK = true; // System is fine until proven otherwise
router.post("/exchangeCode", (req, res) => {
const code = req.body.code;
request({
uri: TOKEN_URL,
method: "POST",
json: true,
body: {
client_id: CLIENT_ID,
client_secret: CLIENT_SECRET,
redirect_uri: REDIRECT_URI,
grant_type: "authorization_code",
code: code
}
}, (error, response) => {
lastOauthExchangeCodeOK = !error;
if (error) {
const responseObject = {
status: "error",
errorText: `Problem getting back token`
};
res.statusCode = 500;
res.setHeader('Content-Type', 'application/json');
return res.end(JSON.stringify(responseObject));
} else {
response.body.status = "success"
res.statusCode = 200;
res.setHeader('Content-Type', 'application/json');
return res.end(JSON.stringify(response.body));
}
})
})
module.exports = router;