@@ -3,96 +3,180 @@ const request = require("request");
33const samples = require ( "./samples" ) ;
44
55const runtime_options = {
6- "memory" : "128MB" ,
7- "timeoutSeconds" : 10
6+ "memory" : "128MB" ,
7+ "timeoutSeconds" : 10
88} ;
99
1010const content_type = {
11- "json" : "application/json; charset=utf-8" ,
12- "jsonp" : "application/javascript; charset=utf-8"
11+ "json" : "application/json; charset=utf-8" ,
12+ "jsonp" : "application/javascript; charset=utf-8"
1313} ;
1414
15+
16+ ////////////////////////////////////////////////////////////////////////////////////////////////////
17+ // Próximas partidas
18+
1519exports . departures = functions . runWith ( runtime_options ) . https . onRequest ( ( req , res ) => {
16- const station = req . query . station ;
17- const env = req . query . env ;
18- const callback = req . query . callback ;
19-
20- const stations = {
21- "santos-dumont" : 1 ,
22- "antonio-carlos" : 2 ,
23- "cinelandia" : 3 ,
24- "carioca" : 4 ,
25- "sete-de-setembro" : 5 ,
26- "candelaria" : 6 ,
27- "sao-bento" : 7 ,
28- "parada-dos-museus" : 8 ,
29- "parada-dos-navios" : 9 ,
30- "utopia-aquario" : 10 ,
31- "cidade-do-samba" : 11 ,
32- "santo-cristo" : 12 ,
33- "cordeiro-da-graca" : 13 ,
34- "praia-formosa" : 14 ,
35- "rodoviaria" : 15 ,
36- "equador" : 16 ,
37- "pereira-reis" : 17 ,
38- "gamboa" : 18 ,
39- "providencia" : 19 ,
40- "harmonia" : 20 ,
41- "vila-olimpica" : 21 ,
42- "central" : 22 ,
43- "saara" : 23 ,
44- "tiradentes" : 24 ,
45- "colombo" : 25 ,
46- "praca-xv" : 26 ,
47- "cristiano-ottoni" : 27 ,
48- "camerino" : 28 ,
49- "santa-rita" : 29
50- } ;
51-
52- const data = new Promise ( ( resolve ) => {
53- if ( env === "development" ) {
54- resolve ( JSON . stringify ( samples [ "departures" ] ) ) ;
55- } else {
56- request ( "http://appmobile.vltrio.com.br:8080/station/eta?id=vlt_station_" + stations [ station ] , ( error , response , body ) => {
57- resolve ( body ) ;
58- } ) ;
59- }
60- } ) . then ( ( response ) => {
61- if ( callback ) {
62- res . header ( "content-type" , content_type [ "jsonp" ] ) ;
63- res . send ( callback + "(" + response + ");" ) ;
64- } else {
65- res . header ( "content-type" , content_type [ "json" ] ) ;
66- res . send ( response ) ;
67- }
68- } ) ;
20+ const station = req . query . station ;
21+ const env = req . query . env ;
22+ const callback = req . query . callback ;
23+
24+ const stations = {
25+ "santos-dumont" : 1 ,
26+ "antonio-carlos" : 2 ,
27+ "cinelandia" : 3 ,
28+ "carioca" : 4 ,
29+ "sete-de-setembro" : 5 ,
30+ "candelaria" : 6 ,
31+ "sao-bento" : 7 ,
32+ "parada-dos-museus" : 8 ,
33+ "parada-dos-navios" : 9 ,
34+ "utopia-aquario" : 10 ,
35+ "cidade-do-samba" : 11 ,
36+ "santo-cristo" : 12 ,
37+ "cordeiro-da-graca" : 13 ,
38+ "praia-formosa" : 14 ,
39+ "rodoviaria" : 15 ,
40+ "equador" : 16 ,
41+ "pereira-reis" : 17 ,
42+ "gamboa" : 18 ,
43+ "providencia" : 19 ,
44+ "harmonia" : 20 ,
45+ "vila-olimpica" : 21 ,
46+ "central" : 22 ,
47+ "saara" : 23 ,
48+ "tiradentes" : 24 ,
49+ "colombo" : 25 ,
50+ "praca-xv" : 26 ,
51+ "cristiano-ottoni" : 27 ,
52+ "camerino" : 28 ,
53+ "santa-rita" : 29
54+ } ;
55+
56+ const data = new Promise ( ( resolve ) => {
57+ if ( env === "development" ) {
58+ resolve ( JSON . stringify ( samples [ "departures" ] ) ) ;
59+ } else {
60+ request ( "http://appmobile.vltrio.com.br:8080/station/eta?id=vlt_station_" + stations [ station ] , ( error , response , body ) => {
61+ resolve ( body ) ;
62+ } ) ;
63+ }
64+ } ) . then ( ( response ) => {
65+ if ( callback ) {
66+ res . header ( "content-type" , content_type [ "jsonp" ] ) ;
67+ res . send ( callback + "(" + response + ");" ) ;
68+ } else {
69+ res . header ( "content-type" , content_type [ "json" ] ) ;
70+ res . send ( response ) ;
71+ }
72+ } ) ;
6973} ) ;
7074
75+
76+ ////////////////////////////////////////////////////////////////////////////////////////////////////
77+ // Status do sistema
78+
7179exports . status = functions . runWith ( runtime_options ) . https . onRequest ( ( req , res ) => {
72- const env = req . query . env ;
73- const callback = req . query . callback ;
74-
75- const data = new Promise ( ( resolve ) => {
76- if ( env === "development" ) {
77- resolve ( samples [ "status" ] [ "warning" ] ) ;
78- } else {
79- request ( "http://157.230.119.186/modal_api" , ( error , response , body ) => {
80- const vlt = body . split ( "\n" ) [ 1 ] ;
81- const parts = vlt . split ( ";" ) ;
82-
83- resolve ( {
84- "status" : parts [ 1 ] ,
85- "message" : parts [ 2 ] || null
86- } ) ;
87- } ) ;
88- }
89- } ) . then ( ( response ) => {
90- if ( callback ) {
91- res . header ( "content-type" , content_type [ "jsonp" ] ) ;
92- res . send ( callback + "(" + JSON . stringify ( response ) + ");" ) ;
93- } else {
94- res . header ( "content-type" , content_type [ "json" ] ) ;
95- res . send ( response ) ;
96- }
97- } ) ;
80+ const language = req . query . language ;
81+ const env = req . query . env ;
82+ const callback = req . query . callback ;
83+
84+ const stations = [
85+ "Antonio Carlos" ,
86+ "Camerino" ,
87+ "Candelária" ,
88+ "Carioca" ,
89+ "Central" ,
90+ "Cidade do Samba" ,
91+ "Cinelândia" ,
92+ "Colombo" ,
93+ "Cordeiro da Graça" ,
94+ "Cristiano Ottoni" ,
95+ "Equador" ,
96+ "Gamboa" ,
97+ "Harmonia" ,
98+ "Parada dos Museus" ,
99+ "Parada dos Navios" ,
100+ "Pereira Reis" ,
101+ "Praça XV" ,
102+ "Praia Formosa" ,
103+ "Providência" ,
104+ "Rodoviária" ,
105+ "Saara" ,
106+ "Santa Rita" ,
107+ "Santo Cristo" ,
108+ "Santos Dumont" ,
109+ "São Bento" ,
110+ "Sete de Setembro" ,
111+ "Tiradentes" ,
112+ "Utopia AquaRio" ,
113+ "Vila Olímpica"
114+ ] ;
115+
116+ const fixMessage = ( message ) => {
117+ // Retira "Operação:" do começo
118+ message = message . replace ( / ^ O p e r a ç ã o : / , "" ) ;
119+
120+ // Corrige espaços a mais
121+ message = message . replace ( / ( \s ) + / g, " " ) ;
122+
123+ // Corrige falta de espaço apõs pontuação
124+ message = message . replace ( / , / g, "," ) . replace ( / , / g, ", " ) ;
125+ message = message . replace ( / \. / g, "." ) . replace ( / \. / g, ". " ) ;
126+
127+ // Retira espaços e pontuação do começo e do final
128+ message = message . replace ( / ^ \s / g, "" ) ;
129+ message = message . replace ( / \s $ / g, "" ) ;
130+ message = message . replace ( / \. $ / g, "" ) ;
131+
132+ // Corrige capitalização dos nomes das estações
133+ stations . forEach ( ( station ) => {
134+ message = message . replace ( RegExp ( station , "gi" ) , station ) ;
135+ } ) ;
136+
137+ // Corrige algarismos a mais nos nomes das linhas
138+ message = message . replace ( / ( L i n h a 0 ) / gi, "Linha " ) ;
139+
140+ // Se "Linha" aparecer em começo de frase, coloca em negrito
141+ message = message . replace ( / ^ ( L i n h a \d * ) / gi, "<strong>$1:</strong>" ) ;
142+ message = message . replace ( / . ( L i n h a \d * ) / gi, ". <strong>• $1:</strong>" ) ;
143+
144+ // Remove abreviação de estação
145+ message = message . replace ( / ( E s t \. ) / gi, "" ) ;
146+
147+ // Troca " x " por " — "
148+ message = message . replace ( / ( x ) / gi, " — " ) ;
149+
150+ return message ;
151+ } ;
152+
153+ const data = new Promise ( ( resolve ) => {
154+ if ( env === "development" ) {
155+ const test_message = "warning-2" ;
156+ resolve ( {
157+ "status" : samples [ "status" ] [ test_message ] [ "status" ] ,
158+ "raw-message" : samples [ "status" ] [ test_message ] [ "message" ] ,
159+ "message" : fixMessage ( samples [ "status" ] [ test_message ] [ "message" ] )
160+ } ) ;
161+ } else {
162+ request ( "http://157.230.119.186/modal_api" , ( error , response , body ) => {
163+ const vlt = body . split ( "\n" ) [ 1 ] ;
164+ const parts = vlt . split ( ";" ) ;
165+
166+ resolve ( {
167+ "status" : parts [ 1 ] ,
168+ "raw-message" : parts [ 2 ] || null ,
169+ "message" : fixMessage ( parts [ 2 ] ) || null
170+ } ) ;
171+ } ) ;
172+ }
173+ } ) . then ( ( response ) => {
174+ if ( callback ) {
175+ res . header ( "content-type" , content_type [ "jsonp" ] ) ;
176+ res . send ( callback + "(" + JSON . stringify ( response ) + ");" ) ;
177+ } else {
178+ res . header ( "content-type" , content_type [ "json" ] ) ;
179+ res . send ( response ) ;
180+ }
181+ } ) ;
98182} ) ;
0 commit comments