deardesi.js/server.js

70 lines
1.8 KiB
JavaScript

'use strict';
var path = require('path');
function create(options) {
var connect = require('connect')
, query = require('connect-query')
, bodyParser = require('body-parser')
, serveStatic = require('serve-static')
, send = require('connect-send-json')
, app = connect()
, restful = require('./desirae-http-api').create(options)
;
app
.use(send.json())
.use(query())
.use(bodyParser.json({ limit: 10 * 1024 * 1024 })) // 10mb
.use(require('compression')())
;
//
// Keeping the API *required* by desirae super minimal
// so that it can be implemented easily in any language
//
app
.use('/api/fs/static', serveStatic(options.blogdir))
.use('/api/fs/walk', restful.walk)
.use('/api/fs/files', restful.getFiles)
.use('/api/fs/files', restful.putFiles)
.use('/api/fs/copy', restful.copy)
;
// end Desirae API
if (options.tmpdir) {
app.use(serveStatic(options.tmpdir));
}
// this is used by DearDesi, but not required for desirae
app
.use('/api/fs/rootdir', function (req, res) {
var pathname = path.resolve(options.blogdir)
;
res.send({
path: pathname
, name: path.basename(pathname)
, relativePath: path.dirname(pathname)
});
return;
})
;
app
// the AngularJS App
.use(serveStatic(__dirname))
// TODO change file requests to '/blog'
//.use(serveStatic(options.blogdir))
.use('/blog', serveStatic(options.blogdir))
.use('/compiled_dev', serveStatic(path.join(options.blogdir, '/compiled_dev')))
//.use('/compiled', serveStatic(path.join(options.blogdir, '/compiled')))
;
return app;
}
module.exports = create({ blogdir: path.join(__dirname, 'blog') });
module.exports.create = create;