127.0.0.1:8000 smart-home-server / master server / routes / hue.js
master

Tree @master (Download .tar.gz)

hue.js @masterraw · history · blame

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");
            });
        }
    }
};