traewelling / traewelling Goto Github PK
View Code? Open in Web Editor NEWFree check-in service to log your public transit journeys
Home Page: https://traewelling.de
License: GNU Affero General Public License v3.0
Free check-in service to log your public transit journeys
Home Page: https://traewelling.de
License: GNU Affero General Public License v3.0
Is your feature request related to a problem? Please describe.
I'd like to set my social avatar as my Träwelling image, but I don't have it handy.
Describe the solution you'd like
If my Träwelling account connected to my Mastodon Account, I'd like to have a shortcut that grabs my avatar and uploads it to Träwelling. It's squared already, so no more steps needed.
Additional context
Issue:
https://traewelling.de/settings lists all API Tokens as belonging to the "Träwelling Personal Access Client" service. When a user has logged into Traewelling via more than one API client, this makes it hard to revoke access to a specific app. It's also unclear which apps have been granted access to the user's Traewelling account.
Suggestion:
Add clientName and (perhaps) URL parameters to /auth/login
and list them in the API Token overview.
Is your feature request related to a problem? Please describe.
Describe the solution you'd like
On check-in (and later), I'd like to flag my status as a commuter trip or as a work trip. When I export my data, I'd like to have a filter.
Describe alternatives you've considered
--
Additional context
TRWL beta had this feature, but it was removed before the release. The feature did not seperate between commuters and rail workers, but rather just splitted between business and private trips. See db9362cf41d08211e4ecb439b2e94dccc2b1d6b4
which reverts the frontend code.
Gitlab issue regarding the feature removal and how we could split trips
Describe the bug
HTTP 500 error occurs if a wrong IBNR is supplied in the checkin-endpoint
"message": "Undefined offset: 0",\n
"exception": "ErrorException",\n
"file": "/home/herrlevin_/PhpstormProjects/traewelling/app/Http/Controllers/Controller.php",\n
To Reproduce
Steps to reproduce the behavior:
/api/v0/trains/checkin
with wrong start (e.g. asdf)Expected behavior
throw HTTP 400
Screenshots
If applicable, add screenshots to help explain your problem.
Additional context
API DEV-Branch
Removing the SSO provider checks that the account has a password set, but does not that an email address is set.
It should be checked as a user without an email address but with a password cannot log in... :D
Describe the bug
Twitter likes to cache the profile picture which it grabs from the Open Graph tags. Our software does not communicate cache resets when Twitter reaches for https://traewelling.de/profile/{username}/profilepicture
.
To Reproduce
0. Connect your Träwelling account with Twitter.
Expected behavior
Träwelling communicates the change to Twitter, Twitter fetches a new picture.
Additional context
Describe the bug
The progressbar and date will not show up in the active statuses or the profile page if you're not logged in.
To Reproduce
Steps to reproduce the behavior:
Screenshots
Logged in:
Logged out:
Expected behavior
See the progress bar progressing and the date above the status.
Desktop (please complete the following information):
Is your feature request related to a problem? Please describe.
I want to track my public transport journeys, but I don't want to share them.
Describe the solution you'd like
Describe alternatives you've considered
Marking a user account and all of its check-ins as insivible is a good first step.
Additional Context
Some routes carry out actions without having checked whether the user really wants to carry them out. A CSRF protection should be used. In addition, the routes from GET to POST
(or PUT, DELETE, ...) change.
Affected e.g.
Describe the bug
After login, the user gets redirected to /notifications/latest
. This results in the delivery of the corresponding JSON file.
To Reproduce
Steps to reproduce the behavior:
Expected behavior
After login, the user gets redirected to his dashboard.
Desktop (please complete the following information):
Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0
Additional context
Commit: 1c55723227b1399d623ad3f4906420eebd8bb130
Is your feature request related to a problem? Please describe.
I don't know the "real" name of the station that I'm departing from, but my phone has a GPS locator that you could use.
Describe the solution you'd like
With the push of a button (in includes/station-autocomplete.blade.php
), my phone gives Träwelling its location, Träwelling looks it up and opens the first step to check-in.
Träwelling uses the db-rest
station search API to find the closest station.
Describe alternatives you've considered
Träwelling tries to find the closest station out of the known stations in thetrain_stations
table.
Additional context
db-rest's location api seems to be broken, related issue in their project
Is your feature request related to a problem? Please describe.
The API returns a non-standardized date format for things like created_at
or updated_at
.
Describe the solution you'd like
Change non-standardized timestamps to a more common standard like ISO8601 or Unix timestamp.
Describe the bug
When a train terminates before its last station, it might provoke a false-positive "cancelled station". In this example, the RE 8 19074 terminates in Lauda instead of Würzburg Hbf. Both stops have the cancelled
key set to true
, however Lauda still has a arrival
, a arrivalDelay
and a arrivalPlatform
, every departure
-tag is set to null. I'm guessing that cancelled
might only be an indicater whether the train still departs from this stop.
To Reproduce
Find a Train with cancelled last stop.
Expected behavior
Show the correct stops.
Additional context
Tested on 2020-02-21 with 1|262777|0|80|21022020
between 15:50 and 16:10.
API-Response:
{"origin":{"type":"stop","id":"8000096","name":"Stuttgart Hbf","location":{"type":"location","id":"8000096","latitude":48.785052,"longitude":9.182589},"products":{"nationalExpress":true,"national":true,"regionalExp":true,"regional":true,"suburban":true,"bus":true,"ferry":false,"subway":false,"tram":true,"taxi":false}},"destination":{"type":"stop","id":"8000260","name":"Würzburg Hbf","location":{"type":"location","id":"8000260","latitude":49.802163,"longitude":9.93593},"products":{"nationalExpress":true,"national":true,"regionalExp":false,"regional":true,"suburban":false,"bus":true,"ferry":false,"subway":false,"tram":true,"taxi":false}},"departure":"2020-02-21T15:05:00+01:00","arrival":null,"reachable":true,"line":{"type":"line","id":"re-8","fahrtNr":"19074","name":"RE 8","public":true,"mode":"train","product":"regional","operator":{"type":"operator","id":"go-ahead-baden-wurttemberg-gmbh","name":"Go-Ahead Baden-Württemberg GmbH"},"additionalName":"RE 8"},"direction":"Würzburg Hbf","arrivalPlatform":null,"departurePlatform":"5","stopovers":[{"stop":{"type":"stop","id":"8000096","name":"Stuttgart Hbf","location":{"type":"location","id":"8000096","latitude":48.785052,"longitude":9.182589},"products":{"nationalExpress":true,"national":true,"regionalExp":true,"regional":true,"suburban":true,"bus":true,"ferry":false,"subway":false,"tram":true,"taxi":false}},"arrival":null,"arrivalDelay":null,"arrivalPlatform":null,"departure":"2020-02-21T15:05:00+01:00","departureDelay":null,"departurePlatform":"5"},{"stop":{"type":"stop","id":"8000235","name":"Ludwigsburg","location":{"type":"location","id":"8000235","latitude":48.892374,"longitude":9.185115},"products":{"nationalExpress":true,"national":false,"regionalExp":false,"regional":true,"suburban":true,"bus":true,"ferry":false,"subway":false,"tram":false,"taxi":false}},"arrival":"2020-02-21T15:16:00+01:00","arrivalDelay":null,"arrivalPlatform":"1","departure":"2020-02-21T15:19:00+01:00","departureDelay":null,"departurePlatform":"1"},{"stop":{"type":"stop","id":"8000038","name":"Bietigheim-Bissingen","location":{"type":"location","id":"8000038","latitude":48.948044,"longitude":9.137499},"products":{"nationalExpress":false,"national":false,"regionalExp":false,"regional":true,"suburban":true,"bus":true,"ferry":false,"subway":false,"tram":false,"taxi":false}},"arrival":"2020-02-21T15:26:00+01:00","arrivalDelay":null,"arrivalPlatform":"10","departure":"2020-02-21T15:29:00+01:00","departureDelay":null,"departurePlatform":"10"},{"stop":{"type":"stop","id":"8000157","name":"Heilbronn Hbf","location":{"type":"location","id":"8000157","latitude":49.143245,"longitude":9.207579},"products":{"nationalExpress":true,"national":false,"regionalExp":false,"regional":true,"suburban":true,"bus":true,"ferry":false,"subway":false,"tram":false,"taxi":false}},"arrival":"2020-02-21T15:47:00+01:00","arrivalDelay":null,"arrivalPlatform":"3","departure":"2020-02-21T15:48:00+01:00","departureDelay":null,"departurePlatform":"3"},{"stop":{"type":"stop","id":"8004220","name":"Neckarsulm","location":{"type":"location","id":"8004220","latitude":49.188668,"longitude":9.219759},"products":{"nationalExpress":false,"national":false,"regionalExp":false,"regional":true,"suburban":true,"bus":true,"ferry":false,"subway":false,"tram":false,"taxi":false}},"arrival":"2020-02-21T15:52:00+01:00","arrivalDelay":null,"arrivalPlatform":"1","departure":"2020-02-21T15:52:00+01:00","departureDelay":null,"departurePlatform":"1"},{"stop":{"type":"stop","id":"8000017","name":"Bad Friedrichshall Hbf","location":{"type":"location","id":"8000017","latitude":49.231205,"longitude":9.200091},"products":{"nationalExpress":false,"national":false,"regionalExp":false,"regional":true,"suburban":true,"bus":true,"ferry":false,"subway":false,"tram":false,"taxi":false}},"arrival":"2020-02-21T15:57:00+01:00","arrivalDelay":0,"arrivalPlatform":"3","departure":"2020-02-21T15:58:00+01:00","departureDelay":0,"departurePlatform":"3"},{"stop":{"type":"stop","id":"8004050","name":"Möckmühl","location":{"type":"location","id":"8004050","latitude":49.321187,"longitude":9.357977},"products":{"nationalExpress":false,"national":false,"regionalExp":false,"regional":true,"suburban":false,"bus":true,"ferry":false,"subway":false,"tram":false,"taxi":false}},"arrival":"2020-02-21T16:14:00+01:00","arrivalDelay":0,"arrivalPlatform":"2","departure":"2020-02-21T16:15:00+01:00","departureDelay":0,"departurePlatform":"2"},{"stop":{"type":"stop","id":"8000295","name":"Osterburken","location":{"type":"location","id":"8000295","latitude":49.42992,"longitude":9.422996},"products":{"nationalExpress":false,"national":false,"regionalExp":false,"regional":true,"suburban":true,"bus":true,"ferry":false,"subway":false,"tram":false,"taxi":true}},"arrival":"2020-02-21T16:26:00+01:00","arrivalDelay":0,"arrivalPlatform":"4","departure":"2020-02-21T16:27:00+01:00","departureDelay":0,"departurePlatform":"4"},{"stop":{"type":"stop","id":"8000221","name":"Lauda","location":{"type":"location","id":"8000221","latitude":49.56537,"longitude":9.70959},"products":{"nationalExpress":false,"national":false,"regionalExp":false,"regional":true,"suburban":false,"bus":true,"ferry":false,"subway":false,"tram":false,"taxi":true}},"arrival":"2020-02-21T16:49:00+01:00","arrivalDelay":0,"arrivalPlatform":"3","departure":null,"departureDelay":null,"departurePlatform":null,"cancelled":true,"formerDepartureDelay":null,"scheduledDeparture":"2020-02-21T16:50:00+01:00"},{"stop":{"type":"stop","id":"8000260","name":"Würzburg Hbf","location":{"type":"location","id":"8000260","latitude":49.802163,"longitude":9.93593},"products":{"nationalExpress":true,"national":true,"regionalExp":false,"regional":true,"suburban":false,"bus":true,"ferry":false,"subway":false,"tram":true,"taxi":false}},"arrival":null,"arrivalDelay":null,"arrivalPlatform":null,"departure":null,"departureDelay":null,"departurePlatform":null,"cancelled":true,"formerArrivalDelay":null,"scheduledArrival":"2020-02-21T17:20:00+01:00","remarks":[]}],"remarks":[{"text":"Number of bicycles conveyed limited","type":"hint","code":"bicycle-conveyance","summary":"bicycles conveyed"},{"type":"hint","code":"GL","text":"Conveyance of groups is limited"},{"text":"Behindertengerechtes Fahrzeug","type":"hint","code":"barrier-free-vehicle","summary":"barrier-free vehicle"}],"cancelled":true,"arrivalDelay":null,"scheduledArrival":"2020-02-21T17:20:00+01:00","id":"1|262777|0|80|21022020"}
@DC7IA offered to translate Träwelling to Swedish. He said, it will take some time, but he will do it.
Is your feature request related to a problem? Please describe.
I'd like to link to my Träwelling profile from Mastodon and show that those profiles belong to the same identity.
Describe the solution you'd like
Mastodon can "verify" links, if they have a rel="me"
link like this:
<a rel="me" href="https://uelfte.club/@jannik">Mastodon</a>
Additional context
As seen in https://github.com/Traewelling/traewelling/runs/635769510, tests currently run into a HTTP 502 error.
The response from uranium.herrlev.in:
{
"error": true,
"msg": "HAFAS error: CGI_READ_FAILED"
}
Is your feature request related to a problem? Please describe.
I love myself a tidy calendar that has all my checked-in journeys. I'm using subscribable calendars already and know how to deal with them.
Describe the solution you'd like
Offer .ics
files as an export option for a given timespan, comparable with the export options that exist.
Describe alternatives you've considered
Offer a tokenized link that my calendar app of choice can read periodically. Issue here is, that those files become very large. Maybe a mix of both options?
Additional context
If a user shares their status on Mastodon, it will always post with the visibility "unlisted".
The user should be able to decide for themselves which visibility setting they like.
Describe the bug
A button to delete the profile picture is missing until the file is deleted / no avatar is set.
To Reproduce
Steps to reproduce the behavior:
Expected behavior
A button to delete you current profile picture is displayed on settings page.
Screenshots
Desktop (please complete the following information):
Smartphone (please complete the following information):
Additional context
The button is hidden in html source via CSS class. The class should be removed if active picture is set in database.
Describe the bug
When checking into a train via /trains/checkin using an unauthorized bearer token, the server does not return an error such as HTTP 401. Instead, it returns an HTTP 302 redirect to the HTML login page.
To Reproduce
Steps to reproduce the behavior:
Expected behavior
The server should return HTTP 401 and preferably a JSON document explaining the error instead of HTML.
Note that I did not test whether this also happens with entirely invalid bearer tokens.
Travelynx Log
-- Non-blocking request (https://traewelling.de/api/v0/trains/checkin)
-- Reusing connection e0813e072e572ed952a845dea5dd99ae (https://traewelling.de:443)
-- Client >>> Server (https://traewelling.de/api/v0/trains/checkin)
POST /api/v0/trains/checkin HTTP/1.1\x0d
Content-Length: 103\x0d
Accept-Encoding: gzip\x0d
Authorization: Bearer [redacted]\x0d
Content-Type: application/json\x0d
Host: traewelling.de\x0d
User-Agent: travelynx/1.17.5-11-g562dd7c-dirty on / +https://finalrewind.org/projects/travelynx\x0d
\x0d
{"destination":"8000142","start":"8000080","toot":false,"tripID":"1|221647|5|80|4102020","tweet":false}
-- Client >>> Server (https://traewelling.de/api/v0/trains/checkin)
-- Client <<< Server (https://traewelling.de/api/v0/trains/checkin)
HTTP/1.1 302 Found\x0d
Date: Sun, 04 Oct 2020 10:33:56 GMT\x0d
Content-Type: text/html; charset=UTF-8\x0d
Transfer-Encoding: chunked\x0d
Connection: keep-alive\x0d
Server: nginx\x0d
Cache-Control: no-cache, private\x0d
X-RateLimit-Limit: 60\x0d
X-RateLimit-Remaining: 56\x0d
Location: https://traewelling.de/login\x0d
X-Xss-Protection: 1; mode=block\x0d
X-Frame-Options: SAMEORIGIN\x0d
Strict-Transport-Security: max-age=31536000\x0d
X-Content-Type-Options: nosniff\x0d
Referrer-Policy: strict-origin-when-cross-origin\x0d
\x0d
166\x0d
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<meta http-equiv="refresh" content="0;url='https://traewelling.de/login'" />
<title>Redirecting to https://traewelling.de/login</title>
</head>
<body>
Redirecting to <a href="https://traewelling.de/login">https://traewelling.de/login</a>.
</body>
</html>\x0d
-- Client <<< Server (https://traewelling.de/api/v0/trains/checkin)
0\x0d
\x0d
Describe the bug
Given that your Traewelling account is linked with your Twitter account, checking into a train using /trains/checkin
with valid tripID, start and stop station (with workaround described in #72) will always post a tweet no matter what the "tweet" option is set to.
To Reproduce
Have your Traewelling account linked with your Twitter account. Then:
curl -v https://traewelling.de/api/v0/trains/checkin -H 'authorization: Bearer ...' -H 'content-type: application/json' -d '{"tripID":"...","start":"...","destination":"...","tweet":false,"toot":false,"body":null}'
This will always result in a tweet on Twitter, even if "tweet" is false.
Expected behavior
No tweets should be posted if "tweet" is false.
Describe the bug
Trying to export the data of any timespan fails and results in a download of the html source, but with the file name and extension of the expected result.
To Reproduce
Use the Export function in Firefox Preview Mobile
Expected behavior
Exported data as in any other browser
Smartphone (please complete the following information):
You can add this to the repo next to the description. 😃
Describe the bug
When travelling exactly 1 hour, the status only displays "0 min"
To Reproduce
Steps to reproduce the behavior:
Expected behavior
Display the time correctly
Screenshots
If applicable, add screenshots to help explain your problem.
Desktop (please complete the following information):
Smartphone (please complete the following information):
Additional context
Behaviour can be seen here: https://traewelling.de/status/128386
Describe the bug
Over blog posts, there is a <h5>undefined</h5>
that should not be there.
To Reproduce
Steps to reproduce the behavior:
Expected behavior
Nothing.
Desktop (please complete the following information):
Additional context
Seems to be connected with the JS code in components/status.js
.
Describe the bug
https://traewelling.de/status/118639 is a 0km bus ride, because the RMV is doing weird things with Hafas.
To Reproduce
Steps to reproduce the behavior:
Homburg Hbf
ZOB (Stadtmitte), Zweibrücken
ZOB (Stadtmitte), Zweibrücken
.Expected behavior
The distance is correct (~ 13km).
Additional context
RMV seems to squeeze two busses (one-way and back) into a single hafas trip (see attached screenshot from the API). While this does not explain the error on this particular journey, it certainly contributes to its weirdness.
Whenever I try to open my profile page https://traewelling.de/profile/bodems I get a 500 error from the webserver. Other profiles works and the problem occurs also when I am not logged in and use another browser or device.
Is your feature request related to a problem? Please describe.
It is way harder for me to look up and find the nearest/last train stop, then look at the big sign or iceportal.de or so top find out my three/four-digit train number.
Also, these are way more characters to write (and make typos). And if you have written these letters completely (and correctly) I may already be at the next train stop… 😜
Describe the solution you'd like
In the search at "Where are you?" it should allow me to enter "ICE 1234" etc.
Describe alternatives you've considered
Current state: I need to enter the station and then additionally select the train.
If you need the station, do it in the reverse way (optionally): If I enter/select a train first, then offer me to select the station afterwards.
Also, I see much more trains at one station usually (if you have a big main station or so), so it is really hard to select the correct one.
Entering the train number seems easy though. Then you can easily select the train stop (there likely are not that much).
Additional context
Of course, you can just implement this in addition to the current mechanism.
Describe the bug
When clicking in the Settings on the button to destroy all Sessions I will redirected to the welcome page, but are still logged in.
To Reproduce
See Description.
Expected behavior
I expected to be logged out.
Desktop (please complete the following information):
macOS, Google Chrome. But this is likely a server side bug.
Describe the bug
https://traewelling.de/status/129666 (which also seems to suffer from the bug described in #10) and https://traewelling.de/status/129656 are trips with a negative journey time. The bus/train also seems to arrive at the destination before it leaves at the start.
To Reproduce
Steps to reproduce the behavior:
Höhenstr., Potsdam
Platz der Einheit/West, Potsdam
Rathaus, Potsdam
(any other stop might also work)Alternatively:
Berlin Westkreuz
Berlin Südkreuz (S)
Berlin-Tempelhof
(any other stop after that might also work)Expected behavior
The logged journey time should not be negative and the bus/train should not arrive before it has started. Also, the arrival time should be correct (the departure time is already correct).
Additional context
The bug seems to happen when two busses (one-way and back) or two trains (two times around the circle) are squeezed into a single hafas trip. When this happens, stations can appear multiple times in one trip. It seems like Traewelling then internally chooses the first time a station appears in the trip as the destination, rather than that one the user really chose.
Describe the bug
The dashboard should be sorted by departure time and not by the creation-date since you should have the possibility to enter old trains.
But I don't know how, since laravel won't paginate Eloquent-requests sorted by relational columns like in
getActiveStatuses()
in the StatusController.
Affected Pages
Additional context
Related Gitlab issue
Is your feature request related to a problem? Please describe.
The HafasTrip that is returned with a status contains a polyline
field its seams to be some datebase internal hash. This is quite useless while working with the API
Describe the solution you'd like
Replacing the polyline
hash with the actual polyline
polygon data
Describe alternatives you've considered
A possible alternative would be a separate endpoint to request this data, but this could create a high request load while loading multiple polylines in a frontend. A possible solution to this problem would be a API that allow to request multiple polyline
polygon.
Is your feature request related to a problem? Please describe.
After performing a checkin via Traewelling's API, I might want to update the status text or delete it. To do so, I need the status ID – however, /trains/checkin does not provide it
Describe the solution you'd like
The object returned by /trains/checkin should include the ID of the status created by the checkin.
Describe alternatives you've considered
Workaround: query /user/{name} after checking in and extract the status ID from the latest checkin.
Describe the bug
When clicking a link on the laravel debugging bar (in dev-env) i got redirected to another page with "null" in the url.
It's caused by the ressources/js/components/pwa_fix.js
, but I don't know how to fix.
To Reproduce
Steps to reproduce the behavior:
Expected behavior
The Debugging Bar will open instead of redirect.
Describe the bug
I can't remove one Single Sign-On provider, although another one is set.
To Reproduce
Preconditions:
Expected behavior
I can remove one of the SSO providers because a 2nd one is set
Actual behavior
Error message saying I need to set a password before disconnecting an SSO provider
Additional context
Describe the bug
If you're trying to check into a train which only stops to let people exit, Träwelling crashes, since there's no departure time.
To Reproduce
Steps to reproduce the behavior:
Expected behavior
Successful checkin
Describe the bug
The en route map sometimes doesn't show journeys from/to Frankfurt(Main) Hbf and/or they're longer than 1h. I don't know why, and I don't know how, but that seems to be the only connection between all journeys that are hidden.
To Reproduce
Steps to reproduce the behavior:
Expected behavior
The polyline is displayed
Desktop (please complete the following information):
Additional context
The issue sometimes happens on other journeys, too - so I guess it's another flaw.
Describe the bug
Checking into a train using /trains/checkin
and a valid tripID, start and stop station results in HTTP 500 unless a request to /trains/trip
is sent first.
To Reproduce
curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer ..." https://traewelling.de/api/v0/trains/checkin --data '{"tripID":...}'
-> HTTP 500 "Server Error"
curl -H "Content-Type: application/json" -H "Authorization: Bearer ..." 'https://traewelling.de/api/v0/trains/trip?tripID=...&lineName=...&start=...'
curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer ..." https://traewelling.de/api/v0/trains/checkin --data '{"tripID":...}'
-> works fine
Expected behavior
/trains/checkin
should work regardless of previous /trains/trip
requests.
Describe the bug
Träwelling is very CES*T
focused, Trains in Romania (UTC+2) seem to depart in the past.
What is even happening with connections that go over borders? France-UK, Spain-Portugal?
To Reproduce
Steps to reproduce the behavior:
Expected behavior
The results depart in the -5 to +15min
interval that is requested.
Desktop (please complete the following information):
Additional context
On the other hand try to check in to a train in London: The returned trains seem okay, but when you select your destination all stations are one hour in the future.
When disconnecting the account from Twitter or Mastodon, only the user ID is deleted. The token remains in the database.
The tokens should also be deleted.
Describe the bug
When checking into a train with cancelled last stop, the "fast checkin"-button results in a 500 since Träwelling tries to check in with the cancelled stop as last stop.
To Reproduce
Steps to reproduce the behavior:
Expected behavior
Either hide the button or check in until the last available station.
Desktop (please complete the following information):
Smartphone (please complete the following information):
Is your feature request related to a problem? Please describe.
I'd like to save that my trip was delayed, or even built up a delay during the ride.
Describe the solution you'd like
Describe alternatives you've considered
Additional context
scheduled+delay
, Deutsche Bahn won't tell us that this train is delayed. We'd have to check that earlier.delay
field in one of the database tables but god knows what it does (how accurate that information is at what time for which station).Describe the bug
Visiting a profile without linked Mastodon account throws error 500.
To Reproduce
Steps to reproduce the behavior:
Expected behavior
The profile gets displayed.
Desktop:
Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0
Additional context
I cannot confirm if this also happens in production, but in every testing and dev installation of mine it happens.
Describe the bug
When sending a request to the official traewelling instance at https://traewelling.de/api/. The CORS header Access-Control-Allow-Origin
isn't set in the response with causes the browser to block the request. This make it impossible to create any kind of third party web app.
To Reproduce
Steps to reproduce the behavior:
OPTION
request to any API endpoint curl -i https://traewelling.de/api/v0/auth/login -X OPTIONS
Access-Control-Allow-Origin
headerExpected behavior
The Access-Control-Allow-Origin
being set to *
for all API endpoints.
Desktop (please complete the following information):
StatusPaginate schema:
prev_page_url
is not marked nullablenext_page_url
is not marked nullableStatus schema:
links_count
is send as a integer
and not as a string
.liked
field is missing entirely, there is how ever an undocumented favorited
fieldbody
not marked as nullableStation schema:
latitude
is send as a string
and not as a float
longitude
is send as a string
and not as a float
TrainCheck schema:
delay
is not marked nullableHafasTrip:
polyline
is missing and not marked as nullabledelay
is not marked nullableThis bug results from #37, #38 and possibly #10.
Describe the bug
If travelling in a ringline, the wrong distances are calculated.
Expected behavior
The correct travelled distance
Calculating the real distances (That does not work yet since len(Polyline-Points) != len(Stopovers) and the polyline points don't know when the train stops there).
Is your feature request related to a problem? Please describe.
I'd like to be notified whenever something happens on Träwelling that I might be concerned about. Thinking of:
Describe the solution you'd like
Describe alternatives you've considered
Mail notifications? Telegram messages?
Additional context
Please close this issue once all examples are implemented.
Describe the bug
When sending a request to the /auth/login
endpoint with the password field being a empty string, it returns a 400 bad request.
To Reproduce
Steps to reproduce the behavior:
curl 'https://traewelling.de/api/v0/auth/login' -H 'content-type: application/json' --data-raw '{"email":"[email protected]","password":""}'
4. See HTTP status code
Expected behavior
Responses with 401 Unauthorized.
Is your feature request related to a problem? Please describe.
According to the user settings page, a bearer token obtained by logging into the API expires one year after it has been obtained. The expiration timestamp or duration is not available via the API itself, so warning users that their login token is about to expire is only possible by hardcoding one year from login into an API client.
Describe the solution you'd like
/auth/signup
and /auth/login
should return the expiration timestamp in addition to the bearer token.
Describe alternatives you've considered
Alternatively, the swagger docs should state that bearer tokens expire after one year (and this time shouldn't be changed without bumping the API version)
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.