const qs = require('query-string');
const utils = require('../utils');
const ifttt = require('../utils/ifttt');
const hue_auth = require('../utils/hue/auth');
module.exports = {
post: {
"reauthenticate": function(req, res) {
utils.query("SELECT state FROM hue_auth").then(function(rows) {
if (rows[0].state === req.body.state) {
hue_auth.authenticate().then(function() {
res.send(utils.ok());
}).catch(function(error) {
res.send(utils.error(), {
message: error
});
});
} else {
console.warn("Unknown request to /hue/reauthenticate");
ifttt({
type: "notification",
data: "Unknown request to /hue/reauthenticate"
});
res.status(403);
res.send('Unauthorized');
}
});
},
},
get: {
"auth-callback": function(req, res) {
let data = qs.parseUrl(req.url).query;
utils.query("SELECT state FROM hue_auth").then(function(rows) {
if (rows[0].state === data.state) {
console.log("Obtained code from hue callback:", data.code);
utils.query("UPDATE hue_auth SET ?", {
auth_code: data.code,
access_token: null,
access_token_expires: null,
refresh_token: null,
refresh_token_expires: null,
username: null
}).then(function() {
res.status(200);
res.send("OK");
}).catch(function(error) {
console.error(error);
res.status(500);
res.send("Internal Server Error");
});
} else {
console.warn("Unknown request to /hue/auth-callback");
ifttt({
type: "notification",
data: "Unknown request to /hue/auth-callback"
});
res.status(403);
res.send('Unauthorized');
}
}).catch(function(error) {
console.error(error);
res.status(500);
res.send("Internal Server Error");
});
}
}
};