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

Refactored api client

parent b7c11a8b
No related branches found
No related tags found
No related merge requests found
...@@ -2,4 +2,4 @@ module git.kuschku.de/justjanne/bahn-proxy ...@@ -2,4 +2,4 @@ module git.kuschku.de/justjanne/bahn-proxy
go 1.12 go 1.12
require git.kuschku.de/justjanne/bahn-api v0.0.0-20190426164822-2005e844c1c3 require git.kuschku.de/justjanne/bahn-api v0.0.0-20190426183324-6148fdeae5b2
...@@ -2,12 +2,12 @@ package main ...@@ -2,12 +2,12 @@ package main
import ( import (
"encoding/json" "encoding/json"
"fmt"
"git.kuschku.de/justjanne/bahn-api" "git.kuschku.de/justjanne/bahn-api"
"log" "log"
"net/http" "net/http"
"path" "path"
"sort" "sort"
"strconv"
"strings" "strings"
"time" "time"
) )
...@@ -29,8 +29,12 @@ func returnJson(w http.ResponseWriter, data interface{}) error { ...@@ -29,8 +29,12 @@ func returnJson(w http.ResponseWriter, data interface{}) error {
func main() { func main() {
autocompleteStations := loadAutocompleteStations() autocompleteStations := loadAutocompleteStations()
var netClient = &http.Client{ apiClient := bahn.ApiClient{
IrisBaseUrl: "http://iris.noncd.db.de/iris-tts",
CoachSequenceBaseUrl: "https://www.apps-bahn.de/wr/wagenreihung/1.0/",
HttpClient: &http.Client{
Timeout: time.Second * 10, Timeout: time.Second * 10,
},
} }
MaxResults := 20 MaxResults := 20
...@@ -87,25 +91,21 @@ func main() { ...@@ -87,25 +91,21 @@ func main() {
http.HandleFunc("/station/", func(w http.ResponseWriter, r *http.Request) { http.HandleFunc("/station/", func(w http.ResponseWriter, r *http.Request) {
var err error var err error
_, evaId := path.Split(r.URL.Path) _, rawEvaId := path.Split(r.URL.Path)
evaId = strings.TrimSpace(evaId) rawEvaId = strings.TrimSpace(rawEvaId)
url := fmt.Sprintf("http://iris.noncd.db.de/iris-tts/timetable/station/%s", evaId) var evaId int64
if evaId, err = strconv.ParseInt(rawEvaId, 10, 64); err != nil {
var response *http.Response
if response, err = netClient.Get(url); err != nil {
log.Fatal(err) log.Fatal(err)
return return
} }
var stations []bahn.Station var stations []bahn.Station
if stations, err = bahn.StationsFromReader(response.Body); err != nil { if stations, err = apiClient.Station(evaId); err != nil {
log.Fatal(err)
}
if err = response.Body.Close(); err != nil {
log.Fatal(err) log.Fatal(err)
return return
} }
if err = returnJson(w, stations); err != nil { if err = returnJson(w, stations); err != nil {
log.Fatal(err) log.Fatal(err)
return return
...@@ -114,32 +114,54 @@ func main() { ...@@ -114,32 +114,54 @@ func main() {
http.HandleFunc("/timetable/", func(w http.ResponseWriter, r *http.Request) { http.HandleFunc("/timetable/", func(w http.ResponseWriter, r *http.Request) {
var err error var err error
_, evaId := path.Split(r.URL.Path) _, rawEvaId := path.Split(r.URL.Path)
evaId = strings.TrimSpace(evaId) 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 var date time.Time
if date, err = time.Parse(time.RFC3339, strings.TrimSpace(r.FormValue("time"))); err != nil { if date, err = time.Parse(time.RFC3339, strings.TrimSpace(r.FormValue("time"))); err != nil {
date = time.Now() date = time.Now()
} }
BahnFormat := "060102/15" var timetable bahn.Timetable
if timetable, err = apiClient.Timetable(evaId, date); err != nil {
url := fmt.Sprintf("http://iris.noncd.db.de/iris-tts/timetable/plan/%s/%s", evaId, date.Format(BahnFormat)) log.Fatal(err)
return
}
var response *http.Response if err = returnJson(w, timetable); err != nil {
if response, err = netClient.Get(url); err != nil {
log.Fatal(err) log.Fatal(err)
return return
} }
})
http.HandleFunc("/realtime/", func(w http.ResponseWriter, r *http.Request) {
var err error
var timetable bahn.Timetable _, rawEvaId := path.Split(r.URL.Path)
if timetable, err = bahn.TimetableFromReader(response.Body); err != nil { rawEvaId = strings.TrimSpace(rawEvaId)
var evaId int64
if evaId, err = strconv.ParseInt(rawEvaId, 10, 64); err != nil {
log.Fatal(err) log.Fatal(err)
return
} }
if err = response.Body.Close(); err != nil {
var date time.Time
if date, err = time.Parse(time.RFC3339, strings.TrimSpace(r.FormValue("time"))); err != nil {
date = time.Now()
}
var timetable bahn.Timetable
if timetable, err = apiClient.RealtimeAll(evaId, date); err != nil {
log.Fatal(err) log.Fatal(err)
return return
} }
if err = returnJson(w, timetable); err != nil { if err = returnJson(w, timetable); err != nil {
log.Fatal(err) log.Fatal(err)
return return
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment