From 7437fbf85b381400c782f043913cb761d458f38a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Phillip=20K=C3=BChne?= Date: Sun, 2 Feb 2020 02:41:55 +0100 Subject: [PATCH] Stboard legacy encoding, refactoring --- package-lock.json | 180 ++++++++++++++++++++++++++++++++++++++-------- package.json | 3 +- server.js | 70 ++++++++++++++---- test.js | 3 + 4 files changed, 212 insertions(+), 44 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7cf84ef..29ca090 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,8 @@ { - "requires": true, + "name": "simple_hafas", + "version": "0.0.1", "lockfileVersion": 1, + "requires": true, "dependencies": { "@derhuerst/br2nl": { "version": "1.0.0", @@ -181,11 +183,6 @@ } } }, - "decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" - }, "depd": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", @@ -421,11 +418,97 @@ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=" }, + "iso-8859-15": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/iso-8859-15/-/iso-8859-15-0.1.2.tgz", + "integrity": "sha1-KNGlzSp6OQMFl937HLiZeThCVzs=" + }, + "iso-8859-2": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/iso-8859-2/-/iso-8859-2-0.1.2.tgz", + "integrity": "sha1-VQtMDykufryHM6dv/S5pkIx77P4=" + }, + "iso-8859-3": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/iso-8859-3/-/iso-8859-3-0.1.2.tgz", + "integrity": "sha1-PeT+tr1fZjllI+aSLFfSGKXJd2Q=" + }, + "iso-8859-4": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/iso-8859-4/-/iso-8859-4-0.1.2.tgz", + "integrity": "sha1-bM3E/URq2f0uDPMXTnu9H1haw+Y=" + }, + "iso-8859-5": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/iso-8859-5/-/iso-8859-5-0.1.2.tgz", + "integrity": "sha1-oYkIiIXgtAXYgB9tbkLD/gxDvKs=" + }, + "iso-8859-6": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/iso-8859-6/-/iso-8859-6-0.1.2.tgz", + "integrity": "sha1-YQwEDlxfCXJzCqL4Kyjl54dNVmE=" + }, + "iso-8859-7": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/iso-8859-7/-/iso-8859-7-0.1.2.tgz", + "integrity": "sha1-Tlr64n716I4dXmziMVspkmDXuZk=" + }, + "iso-8859-8": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/iso-8859-8/-/iso-8859-8-0.1.2.tgz", + "integrity": "sha1-NUvZfApt4/ny7Q0x77ONQr+gvOU=" + }, + "iso-8859-8-i": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/iso-8859-8-i/-/iso-8859-8-i-0.1.2.tgz", + "integrity": "sha1-cAlX57fEK6i1RruHbbh1nQDyGVw=" + }, + "jconv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/jconv/-/jconv-0.1.5.tgz", + "integrity": "sha1-xlDtukzCzm3Skr85ELEjQzxLR/U=" + }, "json-parse-better-errors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" }, + "koi8-r": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/koi8-r/-/koi8-r-0.1.2.tgz", + "integrity": "sha1-pc2d3IVV3NYAc1tokPLT2GlU5+g=" + }, + "legacy-encoding": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/legacy-encoding/-/legacy-encoding-3.0.0.tgz", + "integrity": "sha1-oTvTn9kXZXLhRTbTFd/KjqOA2OE=", + "requires": { + "iconv-lite": "^0.4.4", + "iso-8859-15": "^0.1.2", + "iso-8859-2": "^0.1.2", + "iso-8859-3": "^0.1.2", + "iso-8859-4": "^0.1.2", + "iso-8859-5": "^0.1.2", + "iso-8859-6": "^0.1.2", + "iso-8859-7": "^0.1.2", + "iso-8859-8": "^0.1.2", + "iso-8859-8-i": "^0.1.2", + "jconv": "^0.1.5", + "koi8-r": "^0.1.2", + "macintosh": "^0.1.2", + "windows-1250": "^0.1.2", + "windows-1251": "^0.1.2", + "windows-1252": "^0.1.2", + "windows-1253": "^0.1.2", + "windows-1254": "^0.1.2", + "windows-1255": "^0.1.2", + "windows-1256": "^0.1.2", + "windows-1257": "^0.1.2", + "windows-1258": "^0.1.2", + "windows-874": "^0.1.2", + "x-mac-cyrillic": "^0.1.2" + } + }, "load-json-file": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", @@ -470,6 +553,11 @@ "resolved": "https://registry.npmjs.org/luxon/-/luxon-1.21.0.tgz", "integrity": "sha512-GkS6D9prDlacKi062DW/OxVI7i+CKgfBc2uDqI//UH1VwPPlgYiMwfoP5uHK3UfzdjXgbwmEwZHWIGgLcg/APg==" }, + "macintosh": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/macintosh/-/macintosh-0.1.2.tgz", + "integrity": "sha1-gu9KUSjxqlH2I6pVRcJJRgdqybs=" + }, "map-obj": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-2.0.0.tgz", @@ -602,11 +690,6 @@ "retry": "^0.12.0" } }, - "p-throttle": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-throttle/-/p-throttle-1.1.0.tgz", - "integrity": "sha1-3QgiJH/8d2eox7sRhvzGMv6lcHU=" - }, "p-try": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", @@ -681,16 +764,6 @@ "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.0.tgz", "integrity": "sha512-27RP4UotQORTpmNQDX8BHPukOnBP3p1uUJY5UnDhaJB+rMt9iMsok724XL+UHU23bEFOHRMQ2ZhI99qOWUMGFA==" }, - "query-string": { - "version": "6.8.3", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-6.8.3.tgz", - "integrity": "sha512-llcxWccnyaWlODe7A9hRjkvdCKamEKTh+wH8ITdTc3OhchaqUZteiSCX/2ablWHVrkVIe04dntnaZJ7BdyW0lQ==", - "requires": { - "decode-uri-component": "^0.2.0", - "split-on-first": "^1.0.0", - "strict-uri-encode": "^2.0.0" - } - }, "quick-lru": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-1.1.0.tgz", @@ -867,21 +940,11 @@ "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==" }, - "split-on-first": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz", - "integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==" - }, "statuses": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" }, - "strict-uri-encode": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", - "integrity": "sha1-ucczDHBChi9rFC3CdLvMWGbONUY=" - }, "strip-bom": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", @@ -963,6 +1026,61 @@ "resolved": "https://registry.npmjs.org/vbb-translate-ids/-/vbb-translate-ids-3.1.0.tgz", "integrity": "sha512-5APLiY9foEeKQfUXBSz0sasTOrReTuua4uMhENdVzMWvcyuQI61Q+RBITFXhdeALz5+W0/67MoO4IhxAVSuJ/w==" }, + "windows-1250": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/windows-1250/-/windows-1250-0.1.2.tgz", + "integrity": "sha1-w3uaBz5AW89CCB02uq8v3nc7mcw=" + }, + "windows-1251": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/windows-1251/-/windows-1251-0.1.2.tgz", + "integrity": "sha1-SIHY+QU9Dre1+l008PlNYN5DwtM=" + }, + "windows-1252": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/windows-1252/-/windows-1252-0.1.2.tgz", + "integrity": "sha1-Zit1Mede3ZRcLby6K/eZwXC4yBY=" + }, + "windows-1253": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/windows-1253/-/windows-1253-0.1.2.tgz", + "integrity": "sha1-z6AiW33dZqj0A43qbpOJRXMPklE=" + }, + "windows-1254": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/windows-1254/-/windows-1254-0.1.2.tgz", + "integrity": "sha1-rXeQfF7k7FGvpkpFyqJF7C1Ti4M=" + }, + "windows-1255": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/windows-1255/-/windows-1255-0.1.2.tgz", + "integrity": "sha1-HSCCyriBdV+jIr7ELz9iaRjMpSE=" + }, + "windows-1256": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/windows-1256/-/windows-1256-0.1.2.tgz", + "integrity": "sha1-mwlXRpikEnQfSzVsJFCo/5KpDJI=" + }, + "windows-1257": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/windows-1257/-/windows-1257-0.1.2.tgz", + "integrity": "sha1-i0xE7rDpcbtzQPv0+eZ06GDLtmY=" + }, + "windows-1258": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/windows-1258/-/windows-1258-0.1.2.tgz", + "integrity": "sha1-MCM96qvaEYSUJGkzOIVrlVLeVg4=" + }, + "windows-874": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/windows-874/-/windows-874-0.1.2.tgz", + "integrity": "sha1-dyI7Ptabdd6Yhtz6K73VI6fconc=" + }, + "x-mac-cyrillic": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/x-mac-cyrillic/-/x-mac-cyrillic-0.1.2.tgz", + "integrity": "sha1-dpMPw3V1SSmxCkmONFE3+Ut0ezw=" + }, "yargs-parser": { "version": "10.1.0", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz", diff --git a/package.json b/package.json index 4c89759..9ffd7eb 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,8 @@ "main": "server.js", "dependencies": { "express": "^4.17.1", - "hafas-client": "^4.6.1" + "hafas-client": "^4.6.1", + "legacy-encoding": "^3.0.0" }, "devDependencies": {}, "scripts": { diff --git a/server.js b/server.js index 32bc3c4..da7533c 100644 --- a/server.js +++ b/server.js @@ -1,5 +1,6 @@ const createClient = require('hafas-client') const insaProfile = require('hafas-client/p/insa') +const legacyEncoder = require('legacy-encoding') var express = require("express"); var app = express(); @@ -7,8 +8,7 @@ const port = 3000 const client = createClient(insaProfile, 'my-awesome-program') -function printResult(departures,respdata) { - let outstr = "" +function formatResult(departures,respdata) { departures.forEach(element => { let delay = "" if (element['delay'] != 0) { @@ -25,7 +25,23 @@ function printResult(departures,respdata) { return respdata; } -async function getNearestStationDepartures(lat, lon) { +function formatStboard(departures,respdata,num) { + let count = 0; + departures.forEach(departure => { + if (count res.send('Hello World!')) app.use(express.json()); // Access the parse results as request.body -app.post('/', function (request, response) { +app.post('/departures/nearest', function (request, response) { console.log(request.body.lat); console.log(request.body.lon); - getNearestStationDepartures(request.body.lat, request.body.lon) - .then((result) => { - response.send(result) + getNearestStation(request.body.lat, request.body.lon) + .then((station) => { + getStationDepartures(station) + .then((departures) => { + var respdata = { + "name": station['name'], + "departures": [] + } + formatResult(departures, respdata) + response.send(respdata) + }) + .catch(console.log("Error while getting departures.")) }) - .catch(console.log("Error.")) + .catch(console.log("Error while getting Station ID.")) + }); +app.post('/radar', function (request, response) { + res.send("//TODO") +}); + +app.get('/stboard/:id/:num', function (req, res, next) { + console.log('id was '+ req.params.id) + getStationDepartures(req.params.id) + .then((departures) => { + var respdata = { + "departures": [] + } + formatStboard(departures, respdata, req.params.num) + /* Yikes. */ + res.write(legacyEncoder.encode(JSON.stringify(respdata),'cp850')) + res.end() + }) + .catch(console.log("Error while getting departures.")) +}) + app.listen(port, () => console.log(`Example app listening on port ${port}!`)) \ No newline at end of file diff --git a/test.js b/test.js index d97e207..71480d4 100644 --- a/test.js +++ b/test.js @@ -11,6 +11,9 @@ var queryPromise = client.nearby({ distance: 400 }) +async function getNearestStation() { + +} async function getNearestStationDepartures() { var result = await queryPromise