|
@@ -1,10 +1,10 @@
|
|
|
var http = require("http")
|
|
var http = require("http")
|
|
|
,clientSession = require("client-sessions")
|
|
,clientSession = require("client-sessions")
|
|
|
- ,sleep = require("sleep").sleep
|
|
|
|
|
|
|
|
|
|
,Url = require("./url.js").Url
|
|
,Url = require("./url.js").Url
|
|
|
,config = require("../config.js")
|
|
,config = require("../config.js")
|
|
|
,sessionManager = require("./session.js").SessionManager
|
|
,sessionManager = require("./session.js").SessionManager
|
|
|
|
|
+ ,Slack = require("./slack.js").Slack
|
|
|
,slackManager = require("./slackManager.js").SlackManager;
|
|
,slackManager = require("./slackManager.js").SlackManager;
|
|
|
|
|
|
|
|
function Server(port) {
|
|
function Server(port) {
|
|
@@ -56,6 +56,16 @@ Server.prototype.onListen = function() {
|
|
|
console.log("onListen");
|
|
console.log("onListen");
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+function redirectToSlackAuth(res) {
|
|
|
|
|
+ res.writeHeader("302", {
|
|
|
|
|
+ Location: "https://slack.com/oauth/authorize"
|
|
|
|
|
+ +"?client_id=" +config.clientId
|
|
|
|
|
+ +"&scope=" +slackManager.getScope().join(",")
|
|
|
|
|
+ +"&redirect=" +config.rootUrl
|
|
|
|
|
+ });
|
|
|
|
|
+ res.end();
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
Server.prototype.onRequest = function(req, res) {
|
|
Server.prototype.onRequest = function(req, res) {
|
|
|
req.reqT = Date.now();
|
|
req.reqT = Date.now();
|
|
|
req.cookies = Server.parseCookies(req);
|
|
req.cookies = Server.parseCookies(req);
|
|
@@ -64,19 +74,22 @@ Server.prototype.onRequest = function(req, res) {
|
|
|
|
|
|
|
|
if (!req.session || !req.session.slackToken) {
|
|
if (!req.session || !req.session.slackToken) {
|
|
|
if (req.urlObj.queryTokens.code) {
|
|
if (req.urlObj.queryTokens.code) {
|
|
|
- req.session = sessionManager.lazyForRequest(req);
|
|
|
|
|
- req.session.setSlackToken(req.reqT, req.urlObj.queryTokens.code[0]);
|
|
|
|
|
- res.writeHeader("302", {
|
|
|
|
|
- Location: config.rootUrl
|
|
|
|
|
- ,"Set-Cookie": "sessID="+req.session.sessId
|
|
|
|
|
|
|
+ Slack.getOauthToken(req.urlObj.queryTokens.code, (token) => {
|
|
|
|
|
+ if (token) {
|
|
|
|
|
+ req.session = sessionManager.lazyForRequest(req);
|
|
|
|
|
+ req.session.setSlackToken(req.reqT, token);
|
|
|
|
|
+ res.writeHeader("302", {
|
|
|
|
|
+ Location: config.rootUrl
|
|
|
|
|
+ ,"Set-Cookie": "sessID="+req.session.sessId
|
|
|
|
|
+ });
|
|
|
|
|
+ sessionManager.saveSession(req.session);
|
|
|
|
|
+ res.end();
|
|
|
|
|
+ } else {
|
|
|
|
|
+ redirectToSlackAuth(res);
|
|
|
|
|
+ }
|
|
|
});
|
|
});
|
|
|
} else {
|
|
} else {
|
|
|
- res.writeHeader("302", {
|
|
|
|
|
- Location: "https://slack.com/oauth/authorize"
|
|
|
|
|
- +"?client_id=" +config.clientId
|
|
|
|
|
- +"&scope=" +slackManager.getScope().join(" ")
|
|
|
|
|
- +"&redirect=" +config.rootUrl
|
|
|
|
|
- });
|
|
|
|
|
|
|
+ redirectToSlackAuth(res);
|
|
|
}
|
|
}
|
|
|
} else if (req.urlObj.isPublic()) {
|
|
} else if (req.urlObj.isPublic()) {
|
|
|
if (!config.isDebug)
|
|
if (!config.isDebug)
|
|
@@ -87,15 +100,25 @@ Server.prototype.onRequest = function(req, res) {
|
|
|
sessionManager.saveSession(req.session);
|
|
sessionManager.saveSession(req.session);
|
|
|
return; // async pipe will close when finished
|
|
return; // async pipe will close when finished
|
|
|
} else {
|
|
} else {
|
|
|
|
|
+ var apiSuccess = false;
|
|
|
|
|
+
|
|
|
res.slack = slackManager.lazyGet(req.session);
|
|
res.slack = slackManager.lazyGet(req.session);
|
|
|
- //TODO stuff
|
|
|
|
|
- res.writeHeader("200", {
|
|
|
|
|
- "Content-Type": "application/json"
|
|
|
|
|
|
|
+ res.slack.onRequest(req.urlObj.queryTokens.v || 0, (slack, newData) => {
|
|
|
|
|
+ if (!slack.connected) {
|
|
|
|
|
+ res.writeHeader("403", {
|
|
|
|
|
+ "Content-Type": "application/json"
|
|
|
|
|
+ });
|
|
|
|
|
+ res.write(slack.error);
|
|
|
|
|
+ } else {
|
|
|
|
|
+ res.writeHeader("200", {
|
|
|
|
|
+ "Content-Type": "application/json"
|
|
|
|
|
+ });
|
|
|
|
|
+ res.write(JSON.stringify(newData));
|
|
|
|
|
+ }
|
|
|
|
|
+ sessionManager.saveSession(req.session);
|
|
|
|
|
+ res.end();
|
|
|
});
|
|
});
|
|
|
- res.write('"' +Math.floor(Date.now() /1000) +'"');
|
|
|
|
|
}
|
|
}
|
|
|
- sessionManager.saveSession(req.session);
|
|
|
|
|
- res.end();
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
module.exports.HttpServ = Server;
|
|
module.exports.HttpServ = Server;
|