var Promise = require('bluebird');
var crypto=require("crypto");
var request = require('request');
var AppKey = "xxfvFQcOzpTBvwuwPMwwzLZxiCSaGb";
var HMKey = "DgQ3aNpoluV1cl3GFJAqitBg5xKiXZ";
function authenticate(){
return new Promise(function(resolve){
var CT = "1234567890";
var message = AppKey + CT;
var HB = crypto.createHmac("sha256", HMKey).update(message).digest("hex");
var url = "https://api.2ch.net/v1/auth/";
var values = {"ID" : "", "PW" : "", "KY" : AppKey, "CT" : CT, "HB" : HB }
var headers = { "User-Agent" : "", "X-2ch-UA": "JaneStyle/3.80"}
var sid="";
request.post({url: url, headers: headers, form: values})
.on("data", function(d){sid+=d;}).on("end", function(){resolve(sid.split(/:/)[1]);});
});
}
function getDAT(serverName, boardName, threadId, sid){
return new Promise(function(resolve){
var message = "/v1/" + serverName + "/" + boardName + "/" + threadId + sid + AppKey;
var hobo = crypto.createHmac("sha256", HMKey).update(message).digest("hex");
var url = "https://api.2ch.net/v1/" + serverName + "/" + boardName + "/" + threadId;
var values = { "sid" : sid, "hobo" : hobo, "appkey": AppKey };
var headers = { "User-Agent" : "Mozilla/3.0 (compatible; JaneStyle/3.80..)"};
var dat="";
request.post({url: url, headers: headers, form: values})
.on("data", function(d){dat+=d;}).on("end", function(){resolve(dat);});
});
}
Promise.resolve().then(authenticate)
.then(getDAT.bind(null, "anago", "software", "1424327586"))
.done(console.log);