Skip to content
Snippets Groups Projects
Commit a17b8664 authored by Janne Mareike Koschinski's avatar Janne Mareike Koschinski
Browse files

Merge realtime and plan data

parent e646a549
No related branches found
No related tags found
No related merge requests found
...@@ -133,33 +133,19 @@ func main() { ...@@ -133,33 +133,19 @@ func main() {
log.Fatal(err) log.Fatal(err)
return return
} }
var realtime bahn.Timetable
if err = returnJson(w, timetable); err != nil { if realtime, err = apiClient.RealtimeAll(evaId, date); err != nil {
log.Fatal(err) log.Fatal(err)
return return
} }
}) realtimeData := make(map[string]*bahn.TimetableStop)
http.HandleFunc("/realtime/", func(w http.ResponseWriter, r *http.Request) { for i := range realtime.Stops {
var err error stop := realtime.Stops[i]
realtimeData[stop.StopId] = &stop
_, rawEvaId := path.Split(r.URL.Path)
rawEvaId = strings.TrimSpace(rawEvaId)
var evaId int64
if evaId, err = strconv.ParseInt(rawEvaId, 10, 64); err != nil {
log.Fatal(err)
return
}
var date time.Time
if date, err = time.Parse(time.RFC3339, strings.TrimSpace(r.FormValue("time"))); err != nil {
date = time.Now()
} }
for i := range timetable.Stops {
var timetable bahn.Timetable stop := &timetable.Stops[i]
if timetable, err = apiClient.RealtimeAll(evaId, date); err != nil { MergeTimetableStop(stop, realtimeData[stop.StopId])
log.Fatal(err)
return
} }
if err = returnJson(w, timetable); err != nil { if err = returnJson(w, timetable); err != nil {
......
merge.go 0 → 100644
package main
import (
"git.kuschku.de/justjanne/bahn-api"
)
func MergeTimetableStop(data *bahn.TimetableStop, realtime *bahn.TimetableStop) {
if data == nil || realtime == nil {
return
}
data.Messages = realtime.Messages
MergeTripLabel(&data.TripLabel, &realtime.TripLabel)
MergeTimetableStop(data.Ref, realtime.Ref)
MergeEvent(data.Arrival, realtime.Arrival)
MergeEvent(data.Departure, realtime.Departure)
data.HistoricDelays = realtime.HistoricDelays
data.HistoricPlatformChanges = realtime.HistoricPlatformChanges
data.Connections = realtime.Connections
}
func MergeTripLabel(data *bahn.TripLabel, realtime *bahn.TripLabel) {
if data == nil || realtime == nil {
return
}
data.Messages = realtime.Messages
}
func MergeEvent(data *bahn.Event, realtime *bahn.Event) {
if data == nil || realtime == nil {
return
}
data.Messages = realtime.Messages
data.ChangedPlatform = realtime.ChangedPlatform
data.ChangedTime = realtime.ChangedTime
data.ChangedPath = realtime.ChangedPath
data.ChangedDestination = realtime.ChangedDestination
data.ChangedStatus = realtime.ChangedStatus
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment