// Generated by CoffeeScript 1.4.0 (function() { var DB_PATH, DEV, app, express, fs, mkdirp, path, splitFeedId, _this = this; express = require('express'); path = require('path'); fs = require('fs'); mkdirp = require('mkdirp'); DEV = process.env.NODE_ENV === 'development'; DB_PATH = DEV ? 'originals' : '/srv/originals'; app = express.createServer(); app.use(express.bodyParser()); app.listen(3060); 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); filePath = "" + DB_PATH + "/" + feedIdDir + ".zhtml"; return path.exists(filePath, function(exists, err) { console.log((" ---> Loading: " + feedId + " (" + filePath + "). ") + ("" + (exists ? "" : "NOT FOUND"))); 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"); filePath = "" + DB_PATH + "/" + feedIdDir + ".zhtml"; 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);