forked from conveyal/otp.js
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.js
More file actions
61 lines (52 loc) · 1.42 KB
/
index.js
File metadata and controls
61 lines (52 loc) · 1.42 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
var clone = require('clone');
var config = require('config');
var fmt = require('fmt');
var log = require('log')('otp');
var Profiler = require('otp-profiler');
var qs = require('querystring');
/**
* Create profiler
*/
var profiler = new Profiler({
host: '/api/otp'
});
/**
* Expose `journey`
*/
module.exports = function profile(query, callback) {
log('--> profiling');
log('-- see raw results here: %s', generateUrl(query));
profiler.profile(query, function(err, data) {
if (err) {
log.error('<-- error profiling', err);
callback(err, data);
} else if (!data.options || data.options.length < 1) {
log.warning('<-- no options found');
callback('No options found', data);
} else {
query.profile = data;
profiler.journey(query, function(err, journey) {
if (err) {
log.error('<-- error profiling', err);
callback(err, journey);
} else {
log('<-- profiled %s options', data.options.length);
callback(null, {
journey: journey,
options: data.options
});
}
});
}
});
};
/**
* OTP Url
*/
module.exports.url = generateUrl;
function generateUrl(query) {
var data = clone(query);
data.from = query.from.lat + ',' + query.from.lon;
data.to = query.to.lat + ',' + query.to.lon;
return fmt('%s/api/otp/profile?%s', config.base_url(), decodeURIComponent(qs.stringify(data)));
}