Skip to content

Commit 7cb5752

Browse files
committed
Formatação da mensagem original de estado do sistema
1 parent 2d72342 commit 7cb5752

File tree

8 files changed

+286
-189
lines changed

8 files changed

+286
-189
lines changed

.firebase/hosting.ZGVwbG95.cache

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
1-
manifest.json,1571104737167,a1dca096703bfa61f3bf6d2fb8d8fb8791fac47f2c9dc8519b38cc19cb5fa53e
1+
manifest.json,1574626995747,a1dca096703bfa61f3bf6d2fb8d8fb8791fac47f2c9dc8519b38cc19cb5fa53e
22
cabin-400.woff2,1560822820822,801ab0789a3952093806871540942b18eade36e94b545b2b6ec72a4f5392b6e7
33
cabin-500.woff2,1560822819681,2730fa6d8cbacbaf3a531673b501845c4ae54dccae05bc005045694af5e0e057
4+
service-worker.js,1574626996690,4bff6d12e647ca78fc4e894c062861c751da2fdf232889450d1bc75b4734fe2e
5+
.well-known/assetlinks.json,1573615249928,5036a028b7c2d2168e27c019aff19d4f9c90c8e390751117206b2f602c6ff7ac
46
icon.png,1539479478000,27a3dbeb5916976c7132eadd036f7cd61e270b7ac6377f6fc168a88f7548204c
5-
service-worker.js,1571104741209,fb74814e4d6a8feb0c144868eafeb5629d73b93ec5eb81d89ac33dbab886e445
7+
index.html,1574626996690,9bc99f9f065138997545849edd1417e3a8f8a6d04c0f88aa53419ffc41cbea99
68
cabin-700.woff2,1560822840262,4acbf2507da66ea28cbf223e043df6a10353339eb5d11bee6db1319de328cb7b
7-
index.html,1571104741209,a20206805fd95950050d715bf43bee7407596ba880257a0186754b73c484bc8b
89
material-icons.woff2,1560822804019,fe00fc3a31cd4aa80dbf1f7c69d03c2765da28e648728fb0603fa00d7a11b9c3

deploy/index.html

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

functions/index.js

Lines changed: 167 additions & 83 deletions
Original file line numberDiff line numberDiff line change
@@ -3,96 +3,180 @@ const request = require("request");
33
const samples = require("./samples");
44

55
const runtime_options = {
6-
"memory": "128MB",
7-
"timeoutSeconds": 10
6+
"memory": "128MB",
7+
"timeoutSeconds": 10
88
};
99

1010
const 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+
1519
exports.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+
7179
exports.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(/^Operaçã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(/(Linha 0)/gi, "Linha ");
139+
140+
// Se "Linha" aparecer em começo de frase, coloca em negrito
141+
message = message.replace(/^(Linha \d*)/gi, "<strong>$1:</strong>");
142+
message = message.replace(/. (Linha \d*)/gi, ". <strong>• $1:</strong>");
143+
144+
// Remove abreviação de estação
145+
message = message.replace(/(Est\. )/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

Comments
 (0)