Please enter the commit message for your changes. Lines starting
with '#' will be ignored, and an empty message aborts the commit. On branch main Initial commit Changes to be committed: new file: .DS_Store new file: .env new file: .gitignore new file: ai-worker/Dockerfile new file: ai-worker/requirements.txt new file: ai-worker/worker.py new file: background-worker/Dockerfile new file: background-worker/go.mod new file: background-worker/go.sum new file: background-worker/main.go new file: background-worker/market.go new file: background-worker/rmv.go new file: background-worker/rss.go new file: background-worker/sql_work.go new file: db/Dockerfile new file: db/init.sql new file: docker-compose.yml new file: server-app/dockerfile new file: server-app/go.mod new file: server-app/go.sum new file: server-app/main.go new file: volumes/.DS_Store new file: volumes/db-init/.DS_Store new file: volumes/db-init/data/news_rss_feeds.csv new file: volumes/web/.DS_Store new file: volumes/web/static/css/blog.css new file: volumes/web/static/css/index-lite.css new file: volumes/web/static/css/index.css new file: volumes/web/static/css/mandelbrot.css new file: volumes/web/static/img/minecraft.png new file: volumes/web/static/js/blog.js new file: volumes/web/static/js/index-lite.js new file: volumes/web/static/js/index.js new file: volumes/web/static/js/mandelbrot.js new file: volumes/web/static/media/cantina.mp3 new file: volumes/web/static/media/countdowns.json new file: volumes/web/static/media/gong.mp4 new file: volumes/web/template/blog.html new file: volumes/web/template/index-lite.html new file: volumes/web/template/index.html new file: volumes/web/template/mandelbrot.html
This commit is contained in:
108
background-worker/rmv.go
Normal file
108
background-worker/rmv.go
Normal file
@@ -0,0 +1,108 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"log"
|
||||
"net/http"
|
||||
"net/url"
|
||||
"os"
|
||||
)
|
||||
|
||||
type RMVResponse struct {
|
||||
Trip []Trip `json:"Trip"`
|
||||
}
|
||||
|
||||
type Trip struct {
|
||||
LegList LegList `json:"LegList"`
|
||||
}
|
||||
|
||||
type LegList struct {
|
||||
Leg []Leg `json:"Leg"`
|
||||
}
|
||||
|
||||
type Leg struct {
|
||||
Type string `json:"type"`
|
||||
Name string `json:"name"`
|
||||
Origin Stop `json:"Origin"`
|
||||
Destination Stop `json:"Destination"`
|
||||
}
|
||||
|
||||
type Stop struct {
|
||||
Name string `json:"name"`
|
||||
Time string `json:"time"`
|
||||
RtTime string `json:"rtTime"`
|
||||
}
|
||||
|
||||
type Verbindung struct {
|
||||
Linie string
|
||||
Abfahrt string
|
||||
Ankunft string
|
||||
Von string
|
||||
Nach string
|
||||
}
|
||||
|
||||
func rmv_request() {
|
||||
u, _ := url.Parse("https://www.rmv.de/hapi/trip")
|
||||
q := u.Query()
|
||||
q.Set("originId", "3018009")
|
||||
q.Set("destId", "3029164")
|
||||
q.Set("format", "json")
|
||||
q.Set("accessId", os.Getenv("RMV_API_KEY"))
|
||||
u.RawQuery = q.Encode()
|
||||
|
||||
resp, err := http.Get(u.String())
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
|
||||
var respData RMVResponse
|
||||
|
||||
dec := json.NewDecoder(resp.Body)
|
||||
if err := dec.Decode(&respData); err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
var verbindungen [][]Verbindung
|
||||
|
||||
for _, trip := range respData.Trip {
|
||||
var tripInfo []Verbindung
|
||||
|
||||
for _, leg := range trip.LegList.Leg {
|
||||
if leg.Type == "WALK" {
|
||||
continue
|
||||
}
|
||||
|
||||
abfahrt := leg.Origin.RtTime
|
||||
if abfahrt == "" {
|
||||
abfahrt = leg.Origin.Time
|
||||
}
|
||||
|
||||
ankunft := leg.Destination.RtTime
|
||||
if ankunft == "" {
|
||||
ankunft = leg.Destination.Time
|
||||
}
|
||||
|
||||
tripInfo = append(tripInfo, Verbindung{
|
||||
Linie: leg.Name,
|
||||
Abfahrt: abfahrt,
|
||||
Ankunft: ankunft,
|
||||
Von: leg.Origin.Name,
|
||||
Nach: leg.Destination.Name,
|
||||
})
|
||||
}
|
||||
|
||||
if len(tripInfo) > 0 {
|
||||
verbindungen = append(verbindungen, tripInfo)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
writeVerbindungToSQL(verbindungen)
|
||||
|
||||
log.Println("RMV data updated")
|
||||
|
||||
if err := writeVerbindungToSQL(verbindungen); err != nil {
|
||||
log.Printf("failed to persist RMV data: %v", err)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user