all repos — tipigee @ 36c4ad6d8bb8962a94e8627cb82ec52c4242990e

(Very) old version of Kokyo

actions/wichDock.js (view raw)

 1const requestTPG = require("../tpgRequest");
 2
 3const TRAMS = {
 4  PALE: "15",
 5  NATI: "15",
 6  PRBE: "14",
 7  CRGE: "18",
 8  GRVI: "14",
 9};
10
11const getFirstTram = dataTPG => {
12  const tramNum = TRAMS[dataTPG.data.stop.stopCode];
13  const firstTram = dataTPG.data.departures.find(
14    tram => tram.line.lineCode === tramNum && tram.waitingTimeMillis > 0
15  );
16  return firstTram;
17};
18
19const formatData = dataTPG => {
20  if (!dataTPG)
21    return "Désolé, je n'arrive pas à récupérer les infos du prochain tram\nNous avons quelques soucis avec l'arrêt *Palettes* actuellement.";
22  const stopCode = dataTPG.data.stop.stopCode;
23  const step =
24    dataTPG.data.steps[0].stop.stopCode === stopCode
25      ? dataTPG.data.steps[0]
26      : dataTPG.data.steps[dataTPG.data.steps.length - 1];
27  if (step.stop.stopCode !== stopCode)
28    return "Le tram ne fera que passer à l'arrêt";
29  if (!step.arrivalTime)
30    return "Désolé, je n'arrive pas à récupérer les infos du prochain tram pour le moment.";
31  const physicalStopCode = step.physicalStop.physicalStopCode;
32  const quai = physicalStopCode.replace(stopCode, "").replace("0", "");
33  const waitingTime = step.arrivalTime.replace("00", "0");
34  const content = `Le prochain tram *${TRAMS[stopCode]}* sera sur le quai n° *${
35    quai
36  }* dans *${waitingTime} min*`;
37  return content;
38};
39
40module.exports = (request, response) => {
41  const dialogflow = request.content.dialogflow;
42  if (!dialogflow.parameters.stopName)
43    return response.sendText("Pour quel arrêt ?");
44  const stopCode = dialogflow.parameters.stopName;
45  return requestTPG("GetNextDepartures", { stopCode })
46    .then(dataTPG => {
47      const firstTram = getFirstTram(dataTPG);
48      return requestTPG("GetThermometerPhysicalStops", {
49        departureCode: firstTram.departureCode,
50      });
51    })
52    .then(dataTPG => {
53      const content = formatData(dataTPG);
54      return response.sendText(content);
55    })
56    .catch(error => {
57      console.log({ error });
58      response.sendText(
59        `Désolé, Je ne parviens pas à reconnaître un nom d'arrêt TPG avec plusieurs quais.
60Les arrêts possibles sont *Palettes*, *Carouge*, *Nations*, *P+R Bernex* et *Meyrin Gravière*`
61      );
62    });
63};