/**
* Simple phantomjs snapshot server
*/
var dataDir = 'snapshots';
var fs = require('fs');
var server = require('webserver').create();
var page = require('webpage').create();
page.settings.userAgent = 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.130 Safari/537.36';
var listening = server.listen(8200, function (request, response) {
console.log("Got request", request.url);
var url = atob(decodeURIComponent(request.url.trim()).slice(1)).trim(); // decode from base64
console.log("Start taking snapshot for", url);
takeSnapshot(url);
response.statusCode = 200;
response.write("Done");
response.close();
});
var takeSnapshot = function(url) {
var urlBase64 = btoa(url);
page.open(url, function(status) {
if (status === "success") {
// TODO:
// - handle non-200
// - stop page activity if done requests
console.log('Taking snapshot successfully for', url);
var jsValue = page.evaluate(function() {
document.body.bgColor = 'white';
return document.getElementsByTagName('html')[0].outerHTML;
});
fs.write(dataDir + '/' + urlBase64 + '.html', jsValue, 'w');
page.render(dataDir + '/' + urlBase64 + '.png');
} else {
console.log('Failed to take snapshot for', url);
}
//phantom.exit();
});
};