-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathweb.js
More file actions
68 lines (54 loc) · 1.51 KB
/
web.js
File metadata and controls
68 lines (54 loc) · 1.51 KB
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
var express = require('express');
var util = require("util");
var Autocomplete = require("./Autocomplete.js");
var port = process.env.PORT || 5000;
var app = express.createServer();
var autocomplete = new Autocomplete("dict/string.txt");
app.configure(function ()
{
app.use(express.query());
app.use(express.methodOverride());
});
app.get('/autocomplete/:value', function(request, response)
{
var term = request.params["value"];
var startTime = new Date();
var options = autocomplete.getOptionsFor(term);
var endTime = new Date();
var execTime = (endTime.getTime() - startTime.getTime());
var result = {
summary: {
execTime: execTime,
execTimeUnits: "ms",
optionCount: options.length
},
options: options
}
response.send(result);
console.log("Responded to " + term + " with " + options.length + " options in " + execTime + "ms");
});
app.get('/dict', function(request, response)
{
response.send("<pre>" + autocomplete.trieToString() + "</pre>");
});
app.get('/memory', function (request,response)
{
response.send(util.inspect(process.memoryUsage()));
});
app.get('/add/:term', function (request,response)
{
var term = request.params["term"];
autocomplete.add(term);
response.send(term + " added");
});
app.get('/unload', function (request,response)
{
autocomplete.unload();
response.send("unloaded");
});
app.listen(port, function()
{
console.log("Listening on " + port);
console.log("Send autocomplete requests to /autocomplete/:value");
console.log("View trie by sending request to /dict");
});