70 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			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;
 |