1- var h = require ( 'apis-helpers' ) ,
2- request = require ( 'request' ) ,
3- app = require ( '../../server' ) ,
4- isn2wgs = require ( 'isn2wgs' ) ;
1+ const h = require ( 'apis-helpers' ) ;
2+ const request = require ( 'request' ) ;
3+ const app = require ( '../../server' ) ;
4+ const isn2wgs = require ( 'isn2wgs' ) ;
5+
6+ const debug = require ( 'debug' ) ( 'bus/realtime' ) ;
57
68app . get ( '/bus/realtime' , function ( req , res ) {
7- var data = req . query ;
8-
9- request ( 'http://straeto.is/bitar/bus/livemap/json.jsp' , function ( error , response , body ) {
10- if ( error || response . statusCode !== 200 )
11- return res . json ( 500 , { error :'The bus api is down or refuses to respond' } ) ;
12-
13- var obj ;
14- try {
15- obj = JSON . parse ( body ) ;
16- } catch ( error ) {
17- return res . json ( 500 , { error :'Something is wrong with the data provided from the data source' } ) ;
18- }
19-
20- var activeBusses = [ ] ,
21- requestedBusses = [ ] ;
22-
23- obj . routes . forEach ( function ( object , key ) {
24- activeBusses . push ( object . id ) ;
25- } ) ;
26-
27- if ( data . busses ) { //Post busses = 1,2,3,4,5
28- requestedBusses = data . busses . split ( "," ) ;
29-
30- for ( var i in requestedBusses ) { //Prevent requested to busses that are not available
31- if ( activeBusses . indexOf ( requestedBusses [ i ] ) == - 1 ) {
32- requestedBusses . splice ( requestedBusses . indexOf ( requestedBusses [ i ] ) , 1 ) ;
33- }
34- }
35- } else {
36- //No bus was posted, use all active busses
37- requestedBusses = activeBusses ;
38- }
39-
40- var objString = requestedBusses . join ( '%2C' ) ;
41-
42- request ( 'http://straeto.is/bitar/bus/livemap/json.jsp?routes=' + objString , function ( error , response , body ) {
43-
44- if ( error || response . statusCode !== 200 )
45- return res . json ( 500 , { error :'The bus api is down or refuses to respond' } ) ;
46-
47- try {
48- var data = JSON . parse ( body ) ;
49- } catch ( e ) {
50- return res . json ( 500 , { error :'Something is wrong with the data provided from the data source' } ) ;
51- }
52-
53- var routes = data . routes ;
54-
55- var objRoutes = {
56- results : [ ]
57- } ;
58- routes . forEach ( function ( route , key ) {
59-
60- var objRoute = {
61- busNr : route . id || "" , // will be undefined if none are active
62- busses : [ ]
63- } ;
64- objRoutes . results . push ( objRoute ) ;
65-
66- if ( ! route . busses ) return ; // No busses active, eg. after schedule
67-
68- route . busses . forEach ( function ( bus , key ) {
69-
70- var location = isn2wgs ( bus . X , bus . Y ) ,
71- oneRoute = {
72- 'unixTime' : Date . parse ( bus . TIMESTAMPREAL ) / 1000 ,
73- 'x' : location . latitude ,
74- 'y' : location . longitude ,
75- 'from' : bus . FROMSTOP ,
76- 'to' : bus . TOSTOP
77- } ;
78- objRoute . busses . push ( oneRoute ) ;
79-
80- } ) ;
81-
82- } ) ;
83- return res . json ( objRoutes ) ;
84- } ) ;
85- } ) ;
86- } ) ;
9+ var data = req . query ;
10+
11+ request ( 'http://straeto.is/bitar/bus/livemap/json.jsp' , function ( error , response , body ) {
12+ if ( error || response . statusCode !== 200 )
13+ return res . json ( 500 , { error :'The bus api is down or refuses to respond' } ) ;
14+
15+ var obj ;
16+ try {
17+ obj = JSON . parse ( body ) ;
18+ } catch ( error ) {
19+ return res . json ( 500 , { error :'Something is wrong with the data provided from the data source' } ) ;
20+ }
21+
22+ var activeBusses = [ ] ,
23+ requestedBusses = [ ] ;
24+
25+ const routes = obj . routes || [ ] ;
26+
27+ routes . forEach ( function ( object , key ) {
28+ activeBusses . push ( object . id ) ;
29+ } ) ;
30+
31+ if ( data . busses ) { //Post busses = 1,2,3,4,5
32+ requestedBusses = data . busses . split ( "," ) ;
33+
34+ for ( var i in requestedBusses ) { //Prevent requested to busses that are not available
35+ if ( activeBusses . indexOf ( requestedBusses [ i ] ) == - 1 ) {
36+ requestedBusses . splice ( requestedBusses . indexOf ( requestedBusses [ i ] ) , 1 ) ;
37+ }
38+ }
39+ } else {
40+ //No bus was posted, use all active busses
41+ requestedBusses = activeBusses ;
42+ }
43+
44+ var objString = requestedBusses . join ( '%2C' ) ;
45+
46+ request ( 'http://straeto.is/bitar/bus/livemap/json.jsp?routes=' + objString , function ( error , response , body ) {
47+
48+ if ( error || response . statusCode !== 200 )
49+ return res . json ( 500 , { error :'The bus api is down or refuses to respond' } ) ;
50+
51+ try {
52+ var data = JSON . parse ( body ) ;
53+ } catch ( e ) {
54+ return res . json ( 500 , { error :'Something is wrong with the data provided from the data source' } ) ;
55+ }
56+
57+ var routes = data . routes ;
58+
59+ var objRoutes = {
60+ results : [ ]
61+ } ;
62+ routes . forEach ( function ( route , key ) {
63+
64+ var objRoute = {
65+ busNr : route . id || "" , // will be undefined if none are active
66+ busses : [ ]
67+ } ;
68+ objRoutes . results . push ( objRoute ) ;
69+
70+ if ( ! route . busses ) return ; // No busses active, eg. after schedule
71+
72+ route . busses . forEach ( function ( bus , key ) {
73+
74+ var location = isn2wgs ( bus . X , bus . Y ) ,
75+ oneRoute = {
76+ 'unixTime' : Date . parse ( bus . TIMESTAMPREAL ) / 1000 ,
77+ 'x' : location . latitude ,
78+ 'y' : location . longitude ,
79+ 'from' : bus . FROMSTOP ,
80+ 'to' : bus . TOSTOP
81+ } ;
82+ objRoute . busses . push ( oneRoute ) ;
83+
84+ } ) ;
85+
86+ } ) ;
87+ return res . json ( objRoutes ) ;
88+ } ) ;
89+ } ) ;
90+ } ) ;
0 commit comments