1 | var express = require('express');
|
2 | var path = require('path');
|
3 | var favicon = require('static-favicon');
|
4 | var logger = require('morgan');
|
5 | var cookieParser = require('cookie-parser');
|
6 | var bodyParser = require('body-parser');
|
7 | var Busboy = require('busboy');
|
8 | var debug = require('debug')('lab');
|
9 |
|
10 | var routes = require('./routes/index');
|
11 |
|
12 | var app = express();
|
13 |
|
14 |
|
15 | app.set('views', path.join(__dirname, 'views'));
|
16 | app.set('view engine', 'jade');
|
17 |
|
18 | app.use(favicon());
|
19 | app.use(logger('dev'));
|
20 | app.use(bodyParser.json());
|
21 | app.use(bodyParser.urlencoded());
|
22 | app.use(cookieParser());
|
23 | app.use(express.static(path.join(__dirname, 'public')));
|
24 |
|
25 | var RE_MIME = /^(?:multipart\/.+)|(?:application\/x-www-form-urlencoded)$/i;
|
26 |
|
27 | function hasBody(req) {
|
28 | var encoding = 'transfer-encoding' in req.headers,
|
29 | length = 'content-length' in req.headers
|
30 | && req.headers['content-length'] !== '0';
|
31 | return encoding || length;
|
32 | };
|
33 |
|
34 | function mime(req) {
|
35 | var str = req.headers['content-type'] || '';
|
36 | return str.split(';')[0];
|
37 | };
|
38 |
|
39 |
|
40 | app.use(function (req, res, next) {
|
41 |
|
42 | if (req.busboy
|
43 | || req.method === 'GET'
|
44 | || req.method === 'HEAD'
|
45 | || !hasBody(req)
|
46 | || !RE_MIME.test(mime(req)))
|
47 | return next();
|
48 |
|
49 | var busboy = req.busboy = new Busboy({ headers: req.headers, immediate: true });
|
50 |
|
51 | busboy.on('file', function(fieldname, file, filename, encoding, mimetype) {
|
52 | console.log('File [' + fieldname + ']: filename: ' + filename + ', encoding: ' + encoding);
|
53 | file.on('data', function(data) {
|
54 | console.log('File [' + fieldname + '] got ' + data.length + ' bytes');
|
55 | });
|
56 | file.on('end', function() {
|
57 | console.log('File [' + fieldname + '] Finished');
|
58 | });
|
59 | });
|
60 |
|
61 | busboy.on('field', function(fieldname, val, fieldnameTruncated, valTruncated) {
|
62 | console.log('Field [' + fieldname + ']: value: ' + inspect(val));
|
63 | });
|
64 |
|
65 | busboy.on('finish', function() {
|
66 | console.log('Done parsing form!');
|
67 | res.send('Parsed');
|
68 | });
|
69 |
|
70 | req.pipe(req.busboy);
|
71 |
|
72 | });
|
73 |
|
74 | app.use('/', routes);
|
75 |
|
76 |
|
77 | app.use(function(req, res, next) {
|
78 | var err = new Error('Not Found');
|
79 | err.status = 404;
|
80 | next(err);
|
81 | });
|
82 |
|
83 |
|
84 |
|
85 |
|
86 |
|
87 | if (app.get('env') === 'development') {
|
88 | app.use(function(err, req, res, next) {
|
89 | res.status(err.status || 500);
|
90 | res.render('error', {
|
91 | message: err.message,
|
92 | error: err
|
93 | });
|
94 | });
|
95 | }
|
96 |
|
97 |
|
98 |
|
99 | app.use(function(err, req, res, next) {
|
100 | res.status(err.status || 500);
|
101 | res.render('error', {
|
102 | message: err.message,
|
103 | error: {}
|
104 | });
|
105 | });
|
106 |
|
107 |
|
108 | module.exports = app;
|
109 |
|
110 | app.set('port', process.env.PORT || 3000);
|
111 |
|
112 | var server = app.listen(app.get('port'), function() {
|
113 | debug('Express server listening on port ' + server.address().port);
|
114 | });
|
115 |
|
116 |
|