-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathserver.js
103 lines (88 loc) · 3.18 KB
/
server.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
var express = require('express');
var app = express();
var async = require('async');
var session = require('express-session');
var FileStore = require('session-file-store')(session);
var http = require('http');
var fs = require('fs');
var url = require('url');
var catamaran = require('./catamaran/catamaran.node');
var events = require('events');
var multer = require('multer');
app.use(express.static('catamaran'));
var upload = multer({ dest: './tmp/' });
app.use(session({
name: 'session-id',
secret: 'secret',
saveUninitialized: true,
resave: true,
store: new FileStore()
}));
catamaran_js = {}
catamaran_js.event_listener = new events.EventEmitter();
catamaran_js.extract_from_file = function (filename, schema, callback) {
var table = catamaran.extract_from_file(filename, schema);
console.log('extraction:', table);
callback(table);
};
catamaran_js.select_schema = function (filename, schema_list, callback) {
var val = catamaran.select_schema(filename, schema_list);
console.log('select_schema:', val);
callback(val.schema);
};
catamaran_js.candidate_gen = function (filename, callback) {
var val = catamaran.candidate_gen(filename);
console.log('candidate_gen:', val);
callback(val.schema_list);
};
catamaran_js.extract_struct_from_file = function (filename, callback) {
process.nextTick(function() {
catamaran_js.candidate_gen(filename, function (schema_list) {
process.nextTick(function() {
catamaran_js.select_schema(filename, schema_list, function (schema) {
process.nextTick(function() {
if (schema != 'nullptr')
catamaran_js.extract_from_file(filename, schema, callback);
else
callback('Not Found!');
});
});
});
});
});
};
catamaran_js.extract_struct_from_string = function (doc, callback) {
};
app.post('/extract-from-string', function (req, res) {
catamaran_js.extract_struct_from_string(req.string, function(table) {
res.end( JSON.stringify(table) );
});
});
app.post('/extract-from-file', upload.single('uploaded'), function (req, res) {
var filepath = req.file.path;
var listener = function(callback) {
catamaran_js.extract_struct_from_file(filepath, callback);
};
catamaran_js.event_listener.on(filepath, listener);
req.session.file_id = filepath;
setTimeout( function() {
fs.unlinkSync(filepath);
catamaran_js.event_listener.removeListener(filepath, listener);
}, 3600000);
res.redirect('/demo.html')
});
app.get('/get-table', function (req, res) {
if (typeof req.session.file_id != 'undefined') {
catamaran_js.event_listener.emit(req.session.file_id, function(table) {
if (table === 'Not Found!')
res.end(JSON.stringify([['No Table Found']]));
else
res.end( JSON.stringify(table) );
});
} else {
res.end(JSON.stringify([['No Table Found']]));
}
});
var server = app.listen(8081, function() {
console.log('Server running at http://ygao34.web.engr.illinois.edu:8081');
});