From caad8f7f14a9bd2517d8d80874238f974296e3b8 Mon Sep 17 00:00:00 2001
From: Janne Koschinski <janne@kuschku.de>
Date: Thu, 9 May 2019 11:42:40 +0200
Subject: [PATCH] Add coach sequences, standardize API endpoints

---
 main.go | 30 ++++++++++++++++++++++++++----
 1 file changed, 26 insertions(+), 4 deletions(-)

diff --git a/main.go b/main.go
index b8d608d..cdb496d 100644
--- a/main.go
+++ b/main.go
@@ -77,7 +77,7 @@ func main() {
 		Caches: caches,
 	}
 
-	http.HandleFunc("/autocomplete/", func(w http.ResponseWriter, r *http.Request) {
+	http.HandleFunc("/api/v1/autocomplete/", func(w http.ResponseWriter, r *http.Request) {
 		if query := canonicalizeName(r.FormValue("name")); query != "" {
 			var perfectMatch []AutocompleteStation
 			var prefix []AutocompleteStation
@@ -128,7 +128,7 @@ func main() {
 			}
 		}
 	})
-	http.HandleFunc("/station/", func(w http.ResponseWriter, r *http.Request) {
+	http.HandleFunc("/api/v1/station/", func(w http.ResponseWriter, r *http.Request) {
 		var err error
 
 		_, rawEvaId := path.Split(r.URL.Path)
@@ -151,7 +151,29 @@ func main() {
 			return
 		}
 	})
-	http.HandleFunc("/timetable/", func(w http.ResponseWriter, r *http.Request) {
+	http.HandleFunc("/api/v1/coach_sequence/", func(w http.ResponseWriter, r *http.Request) {
+		var err error
+
+		_, line := path.Split(r.URL.Path)
+		line = strings.TrimSpace(line)
+
+		var date time.Time
+		if date, err = time.Parse(time.RFC3339, strings.TrimSpace(r.FormValue("time"))); err != nil {
+			date = time.Now()
+		}
+
+		var coachSequence bahn.CoachSequence
+		if coachSequence, err = apiClient.CoachSequence(line, date); err != nil {
+			glog.Warning(err)
+			return
+		}
+
+		if err = returnJson(w, coachSequence); err != nil {
+			glog.Warning(err)
+			return
+		}
+	})
+	http.HandleFunc("/api/v0/timetable/", func(w http.ResponseWriter, r *http.Request) {
 		var err error
 
 		_, rawEvaId := path.Split(r.URL.Path)
@@ -283,7 +305,7 @@ func main() {
 			return
 		}
 	})
-	http.HandleFunc("/healthz", func(w http.ResponseWriter, r *http.Request) {
+	http.HandleFunc("/api/healthz", func(w http.ResponseWriter, r *http.Request) {
 		w.WriteHeader(200)
 		_, _ = w.Write([]byte("ok\n"))
 	})
-- 
GitLab