2012-12-14 16:28:06 -08:00
|
|
|
// Generated by CoffeeScript 1.4.0
|
|
|
|
(function() {
|
2013-01-07 11:16:52 -08:00
|
|
|
var DB_PATH, DEV, app, express, fs, mkdirp, path, splitFeedId,
|
2012-12-14 16:28:06 -08:00
|
|
|
_this = this;
|
|
|
|
|
|
|
|
express = require('express');
|
|
|
|
|
|
|
|
path = require('path');
|
|
|
|
|
|
|
|
fs = require('fs');
|
|
|
|
|
|
|
|
mkdirp = require('mkdirp');
|
|
|
|
|
2013-01-07 11:16:52 -08:00
|
|
|
DEV = process.env.NODE_ENV === 'development';
|
|
|
|
|
|
|
|
DB_PATH = DEV ? 'originals' : '/srv/originals';
|
|
|
|
|
2012-12-14 16:28:06 -08:00
|
|
|
app = express.createServer();
|
|
|
|
|
|
|
|
app.use(express.bodyParser());
|
|
|
|
|
2012-12-17 15:08:52 -08:00
|
|
|
app.listen(3060);
|
|
|
|
|
2012-12-14 16:28:06 -08:00
|
|
|
app.get(/^\/original_page\/(\d+)\/?/, function(req, res) {
|
|
|
|
var etag, feedId, feedIdDir, filePath, lastModified;
|
|
|
|
feedId = parseInt(req.params, 10);
|
|
|
|
etag = req.header('If-None-Match');
|
|
|
|
lastModified = req.header('If-Modified-Since');
|
|
|
|
feedIdDir = splitFeedId(feedId);
|
2013-01-07 11:16:52 -08:00
|
|
|
filePath = "" + DB_PATH + "/" + feedIdDir + ".zhtml";
|
2012-12-14 16:28:06 -08:00
|
|
|
return path.exists(filePath, function(exists, err) {
|
2012-12-17 15:08:52 -08:00
|
|
|
console.log((" ---> Loading: " + feedId + " (" + filePath + "). ") + ("" + (exists ? "" : "NOT FOUND")));
|
2012-12-14 16:28:06 -08:00
|
|
|
if (!exists) {
|
|
|
|
return res.send(404);
|
|
|
|
}
|
|
|
|
return fs.stat(filePath, function(err, stats) {
|
|
|
|
if (!err && etag && stats.mtime === etag) {
|
|
|
|
return res.send(304);
|
|
|
|
}
|
|
|
|
if (!err && lastModified && stats.mtime === lastModified) {
|
|
|
|
return res.send(304);
|
|
|
|
}
|
|
|
|
return fs.readFile(filePath, function(err, content) {
|
|
|
|
res.header('Etag', Date.parse(stats.mtime));
|
|
|
|
return res.send(content);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
app.post(/^\/original_page\/(\d+)\/?/, function(req, res) {
|
|
|
|
var feedId, feedIdDir, filePath, filePathDir, html;
|
|
|
|
feedId = parseInt(req.params, 10);
|
|
|
|
feedIdDir = splitFeedId(feedId);
|
|
|
|
html = req.param("original_page");
|
2013-01-07 11:16:52 -08:00
|
|
|
filePath = "" + DB_PATH + "/" + feedIdDir + ".zhtml";
|
2012-12-14 16:28:06 -08:00
|
|
|
filePathDir = path.dirname(filePath);
|
|
|
|
return mkdirp(filePathDir, function(err) {
|
|
|
|
return fs.rename(req.files.original_page.path, filePath, function(err) {
|
|
|
|
if (err) {
|
|
|
|
console.log(err);
|
|
|
|
}
|
|
|
|
console.log(" ---> Saving: " + feedId + " (" + filePath + ")");
|
|
|
|
return res.send("OK");
|
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
splitFeedId = function(feedId) {
|
|
|
|
var rgx;
|
|
|
|
feedId += '';
|
|
|
|
rgx = /(\d+)(\d{3})/;
|
|
|
|
while (rgx.test(feedId)) {
|
|
|
|
feedId = feedId.replace(rgx, '$1' + '/' + '$2');
|
|
|
|
}
|
|
|
|
return feedId;
|
|
|
|
};
|
|
|
|
|
|
|
|
}).call(this);
|