readd backend changes

This commit is contained in:
sperwing 2024-12-01 00:34:54 +01:00
parent 9b930cc694
commit 57205dd2cf
3 changed files with 99 additions and 12 deletions

56
back/dist/app.js vendored
View File

@ -1,12 +1,26 @@
import express from 'express';
import { createClient } from 'hafas-client';
import { profile as dbProfile } from 'hafas-client/p/db/index.js';
import { profile as vbbProfile } from 'hafas-client/p/vbb/index.js';
import { profile as pkpProfile } from 'hafas-client/p/pkp/index.js';
import { profile as irishProfile } from 'hafas-client/p/irish-rail/index.js';
import { profile as oebbProfile } from 'hafas-client/p/oebb/index.js';
import { profile as luProfile } from 'hafas-client/p/mobiliteit-lu/index.js';
import { profile as zvvProfile } from 'hafas-client/p/zvv/index.js';
const app = express();
const port = 3000;
// Adapt this to your project! createClient() won't work with this string.
const userAgent = 'sperwing@sperwing.de';
// create a client with the Deutsche Bahn profile
const client = createClient(dbProfile, userAgent);
let clients = new Map();
clients.set("db", client);
clients.set("vbb", createClient(vbbProfile, userAgent));
clients.set("zvv", createClient(zvvProfile, userAgent));
clients.set("pkp", createClient(pkpProfile, userAgent));
clients.set("irish", createClient(irishProfile, userAgent));
clients.set("oebb", createClient(oebbProfile, userAgent));
clients.set("lu", createClient(luProfile, userAgent));
app.use((req, res, next) => {
res.append('Access-Control-Allow-Origin', ['*']);
res.append('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE');
@ -14,15 +28,47 @@ app.use((req, res, next) => {
next();
});
app.get('/', (req, res) => {
client.journeys('8011167', '8000261', { results: 1 }).then(result => res.send(result));
client.journeys('8011167', '8000261', { results: 1 }).then(result => res.send(result)).catch(error => res.status(500).send(error));
});
app.get('/searchStation', (req, res) => {
let query = req.query;
client.locations(query.text, { results: 1 }).then(result => res.send({ name: result[0].name, id: result[0].id }));
if (!req.query || !req.query.text) {
res.send([]);
}
else {
let query = req.query;
clients.get((String)(req.query.service)).locations(query.text, { results: 1 }).then(result => res.send({ name: result[0].name, id: result[0].id })).catch(error => res.status(500).send(error));
}
});
app.get('/searchStations', (req, res) => {
console.log(req);
if (!req.query || !req.query.text) {
res.send([]);
}
else {
let query = req.query;
try {
clients.get((String)(req.query.service)).locations(query.text, { results: 6 }).then(result => res.send(result.map(entry => { return { name: entry.name, id: entry.id }; }))).catch(error => res.status(500).send(error));
}
catch (e) {
res.status(500).send(e);
}
}
});
app.get('/searchConnection', (req, res) => {
let query = req.query;
client.journeys(query.from, query.to, { results: 5 }).then(result => res.send(result.journeys)).catch(error => res.sendStatus(500));
if (!req.query || !req.query.from || !req.query.to || !req.query.date || !req.query.service) {
console.log(req.query);
res.send([]);
}
else {
let query = req.query;
let date = new Date((String)(req.query.date));
try {
clients.get((String)(req.query.service)).journeys(query.from, query.to, { results: 5, departure: date }).then(result => res.send(result.journeys)).catch(error => res.status(500).send(error));
}
catch (e) {
res.status(500).send(e);
}
}
});
app.listen(port, () => {
return console.log(`Express is listening at http://localhost:${port}`);

View File

@ -1 +1 @@
{"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAC,YAAY,EAAC,MAAM,cAAc,CAAA;AACzC,OAAO,EAAC,OAAO,IAAI,SAAS,EAAC,MAAM,4BAA4B,CAAA;AAC/D,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;AACtB,MAAM,IAAI,GAAG,IAAI,CAAC;AAElB,0EAA0E;AAC1E,MAAM,SAAS,GAAG,sBAAsB,CAAA;AAExC,iDAAiD;AACjD,MAAM,MAAM,GAAG,YAAY,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;AAEjD,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;IACvB,GAAG,CAAC,MAAM,CAAC,6BAA6B,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACjD,GAAG,CAAC,MAAM,CAAC,8BAA8B,EAAE,qBAAqB,CAAC,CAAC;IAClE,GAAG,CAAC,MAAM,CAAC,8BAA8B,EAAE,cAAc,CAAC,CAAC;IAC3D,IAAI,EAAE,CAAC;AACX,CAAC,CAAC,CAAC;AAEH,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;IACtB,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,EAAE,EAAC,OAAO,EAAE,CAAC,EAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AACzF,CAAC,CAAC,CAAC;AACH,GAAG,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;IACnC,IAAI,KAAK,GAAQ,GAAG,CAAC,KAAK,CAAC;IAC3B,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,EAAC,OAAO,EAAC,CAAC,EAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAC,CAAC,CAAC,CAAC;AAChH,CAAC,CAAC,CAAC;AACH,GAAG,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;IACtC,IAAI,KAAK,GAAQ,GAAG,CAAC,KAAK,CAAC;IAC3B,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAC,EAAC,OAAO,EAAC,CAAC,EAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;AACpI,CAAC,CAAC,CAAC;AAEH,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE;IACpB,OAAO,OAAO,CAAC,GAAG,CAAC,4CAA4C,IAAI,EAAE,CAAC,CAAC;AACzE,CAAC,CAAC,CAAC"}
{"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAC,YAAY,EAAc,MAAM,cAAc,CAAA;AACtD,OAAO,EAAC,OAAO,IAAI,SAAS,EAAC,MAAM,4BAA4B,CAAA;AAC/D,OAAO,EAAC,OAAO,IAAI,UAAU,EAAC,MAAM,6BAA6B,CAAA;AACjE,OAAO,EAAC,OAAO,IAAI,UAAU,EAAC,MAAM,6BAA6B,CAAA;AACjE,OAAO,EAAC,OAAO,IAAI,YAAY,EAAC,MAAM,oCAAoC,CAAA;AAC1E,OAAO,EAAC,OAAO,IAAI,WAAW,EAAC,MAAM,8BAA8B,CAAA;AACnE,OAAO,EAAC,OAAO,IAAI,SAAS,EAAC,MAAM,uCAAuC,CAAA;AAC1E,OAAO,EAAC,OAAO,IAAI,UAAU,EAAC,MAAM,6BAA6B,CAAA;AACjE,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;AACtB,MAAM,IAAI,GAAG,IAAI,CAAC;AAElB,0EAA0E;AAC1E,MAAM,SAAS,GAAG,sBAAsB,CAAA;AAExC,iDAAiD;AACjD,MAAM,MAAM,GAAG,YAAY,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;AACjD,IAAI,OAAO,GAAG,IAAI,GAAG,EAAuB,CAAC;AAC7C,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAC1B,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,YAAY,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC;AACxD,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,YAAY,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC;AACxD,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,YAAY,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC;AACxD,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,YAAY,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC,CAAC;AAC5D,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC;AAC1D,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,YAAY,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;AAEtD,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;IACvB,GAAG,CAAC,MAAM,CAAC,6BAA6B,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACjD,GAAG,CAAC,MAAM,CAAC,8BAA8B,EAAE,qBAAqB,CAAC,CAAC;IAClE,GAAG,CAAC,MAAM,CAAC,8BAA8B,EAAE,cAAc,CAAC,CAAC;IAC3D,IAAI,EAAE,CAAC;AACX,CAAC,CAAC,CAAC;AAEH,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;IACtB,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,EAAE,EAAC,OAAO,EAAE,CAAC,EAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AACrI,CAAC,CAAC,CAAC;AACH,GAAG,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;IACnC,IAAG,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAC,CAAC;QAC9B,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;SAAK,CAAC;QAEP,IAAI,KAAK,GAAQ,GAAG,CAAC,KAAK,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAE,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,EAAC,OAAO,EAAC,CAAC,EAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAC3L,CAAC;AACL,CAAC,CAAC,CAAC;AACH,GAAG,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;IACpC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAChB,IAAG,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAC,CAAC;QAC9B,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;SAAM,CAAC;QACJ,IAAI,KAAK,GAAQ,GAAG,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAE,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,EAAC,OAAO,EAAC,CAAC,EAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,GAAE,OAAO,EAAC,IAAI,EAAC,KAAK,CAAC,IAAI,EAAE,EAAE,EAAC,KAAK,CAAC,EAAE,EAAC,CAAA,CAAA,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QACpN,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACT,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAC3B,CAAC;IACL,CAAC;AACL,CAAC,CAAC,CAAC;AACH,GAAG,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;IACtC,IAAG,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,EAAC,CAAC;QACxF,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACvB,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;SAAM,CAAC;QACJ,IAAI,KAAK,GAAQ,GAAG,CAAC,KAAK,CAAC;QAC3B,IAAI,IAAI,GAAS,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QACpD,IAAI,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAE,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAC,EAAC,OAAO,EAAC,CAAC,EAAE,SAAS,EAAC,IAAI,EAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAC/L,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACT,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAC3B,CAAC;IACL,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE;IACpB,OAAO,OAAO,CAAC,GAAG,CAAC,4CAA4C,IAAI,EAAE,CAAC,CAAC;AACzE,CAAC,CAAC,CAAC"}

View File

@ -1,6 +1,12 @@
import express from 'express';
import {createClient} from 'hafas-client'
import {createClient, HafasClient} from 'hafas-client'
import {profile as dbProfile} from 'hafas-client/p/db/index.js'
import {profile as vbbProfile} from 'hafas-client/p/vbb/index.js'
import {profile as pkpProfile} from 'hafas-client/p/pkp/index.js'
import {profile as irishProfile} from 'hafas-client/p/irish-rail/index.js'
import {profile as oebbProfile} from 'hafas-client/p/oebb/index.js'
import {profile as luProfile} from 'hafas-client/p/mobiliteit-lu/index.js'
import {profile as zvvProfile} from 'hafas-client/p/zvv/index.js'
const app = express();
const port = 3000;
@ -9,6 +15,14 @@ const userAgent = 'sperwing@sperwing.de'
// create a client with the Deutsche Bahn profile
const client = createClient(dbProfile, userAgent)
let clients = new Map<string, HafasClient>();
clients.set("db", client);
clients.set("vbb", createClient(vbbProfile, userAgent));
clients.set("zvv", createClient(zvvProfile, userAgent));
clients.set("pkp", createClient(pkpProfile, userAgent));
clients.set("irish", createClient(irishProfile, userAgent));
clients.set("oebb", createClient(oebbProfile, userAgent));
clients.set("lu", createClient(luProfile, userAgent));
app.use((req, res, next) => {
res.append('Access-Control-Allow-Origin', ['*']);
@ -18,15 +32,42 @@ app.use((req, res, next) => {
});
app.get('/', (req, res) => {
client.journeys('8011167', '8000261', {results: 1}).then(result => res.send(result));
client.journeys('8011167', '8000261', {results: 1}).then(result => res.send(result)).catch(error => res.status(500).send(error));
});
app.get('/searchStation', (req, res) => {
let query: any = req.query;
client.locations(query.text, {results:1}).then(result => res.send({name: result[0].name, id:result[0].id}));
if(!req.query || !req.query.text){
res.send([]);
} else {
let query: any = req.query;
clients.get((String) (req.query.service)).locations(query.text, {results:1}).then(result => res.send({name: result[0].name, id:result[0].id})).catch(error => res.status(500).send(error));
}
});
app.get('/searchStations', (req, res) => {
console.log(req)
if(!req.query || !req.query.text){
res.send([]);
} else {
let query: any = req.query;
try {
clients.get((String) (req.query.service)).locations(query.text, {results:6}).then(result => res.send(result.map(entry => {return {name:entry.name, id:entry.id}}))).catch(error => res.status(500).send(error));
} catch (e) {
res.status(500).send(e)
}
}
});
app.get('/searchConnection', (req, res) => {
let query: any = req.query;
client.journeys(query.from, query.to,{results:5}).then(result => res.send(result.journeys)).catch(error => res.sendStatus(500));
if(!req.query || !req.query.from || !req.query.to || !req.query.date || !req.query.service){
console.log(req.query);
res.send([]);
} else {
let query: any = req.query;
let date: Date = new Date((String)(req.query.date));
try {
clients.get((String) (req.query.service)).journeys(query.from, query.to,{results:5, departure:date}).then(result => res.send(result.journeys)).catch(error => res.status(500).send(error));
} catch (e) {
res.status(500).send(e)
}
}
});
app.listen(port, () => {