szczanieckiej.git

commit 9202c37adb843d485e20757230f1dd2a18d0f2de

Author: Adam Evyčędo <git@apiote.xyz>

in feed return vehicles, not save them

 traffic/berlin_vbb.go | 9 ++-------
 traffic/brussels_stib_mivb.go | 9 ++-------
 traffic/convert.go | 23 +++++++++++++++++++++--
 traffic/feeds.go | 2 +-
 traffic/gzm_ztm.go | 9 ++-------
 traffic/krakow_ztp.go | 13 ++-----------
 traffic/poznan_ztm.go | 34 +++++++++-------------------------


diff --git a/traffic/berlin_vbb.go b/traffic/berlin_vbb.go
index 8f9ca0f1609b1393a3e6e9bb09e3ad50428a9ebe..908820e76bd0a3b6fbfcbf19814c1557edf2fa8e 100644
--- a/traffic/berlin_vbb.go
+++ b/traffic/berlin_vbb.go
@@ -26,13 +26,8 @@ 	l, _ := time.LoadLocation("Europe/Berlin")
 	return l
 }
 
-func (z VbbBerlin) ConvertVehicles(path string) error {
-	result, err := os.Create(filepath.Join(path, "vehicles.bare"))
-	if err != nil {
-		return fmt.Errorf("ConvertVehicles: cannot create bare file: %w", err)
-	}
-	defer result.Close()
-	return nil
+func (VbbBerlin) ConvertVehicles() ([]Vehicle, error) {
+	return []Vehicle{}, nil
 }
 
 func (z VbbBerlin) GetVersions(date time.Time, timezone *time.Location) ([]Version, error) {




diff --git a/traffic/brussels_stib_mivb.go b/traffic/brussels_stib_mivb.go
index f5323fd048e2d2ad47bf70ab3a8cb1a8f1dd1c2f..911592502210bd32d3408dd9a5192eb6270569d8 100644
--- a/traffic/brussels_stib_mivb.go
+++ b/traffic/brussels_stib_mivb.go
@@ -25,13 +25,8 @@ 	l, _ := time.LoadLocation("Europe/Brussels")
 	return l
 }
 
-func (z StibMivbBrussels) ConvertVehicles(path string) error {
-	result, err := os.Create(filepath.Join(path, "vehicles.bare"))
-	if err != nil {
-		return fmt.Errorf("ConvertVehicles: cannot create bare file: %w", err)
-	}
-	defer result.Close()
-	return nil
+func (StibMivbBrussels) ConvertVehicles() ([]Vehicle, error) {
+	return []Vehicle{}, nil
 }
 
 func (z StibMivbBrussels) GetVersions(date time.Time, timezone *time.Location) ([]Version, error) {




diff --git a/traffic/convert.go b/traffic/convert.go
index a515e4ca2fd4a9c20be70088f0942c98e89c85a4..ca7846c72fbb54e846d9a095e9f1fbd6af52fce0 100644
--- a/traffic/convert.go
+++ b/traffic/convert.go
@@ -302,8 +302,27 @@ func unzipGtfs(c feedConverter) error {
 	return file.UnzipGtfs(c.TmpFeedPath, c.GtfsFilename)
 }
 
-func convertVehicles(c feedConverter) error {
-	return c.Feed.ConvertVehicles(c.TmpFeedPath)
+func convertVehicles(c feedConverter) error { // ( -- >> vehicles.bare)
+	result, err := os.Create(filepath.Join(c.TmpFeedPath, "vehicles.bare"))
+	if err != nil {
+		return fmt.Errorf("while creating file: %w", err)
+	}
+	defer result.Close()
+
+	vehicles, err := c.Feed.ConvertVehicles()
+
+	for _, vehicle := range vehicles {
+		bytes, err := bare.Marshal(&vehicle)
+		if err != nil {
+			return fmt.Errorf("while marshalling: %w", err)
+		}
+		_, err = result.Write(bytes)
+		if err != nil {
+			return fmt.Errorf("while writing to file: %w", err)
+		}
+	}
+
+	return nil
 }
 
 func prepareFeedGtfs(c feedConverter) error {




diff --git a/traffic/feeds.go b/traffic/feeds.go
index ebbcc1b52dcd6fd98db8a78b4eb7720ce1691441..e69e05d5d25656e3d4e333c94e8822ccf1b74d6d 100644
--- a/traffic/feeds.go
+++ b/traffic/feeds.go
@@ -15,7 +15,7 @@ )
 
 type Feed interface {
 	fmt.Stringer
-	ConvertVehicles(string) error // TODO return []Vehicle -> save to file in convert()
+	ConvertVehicles() ([]Vehicle, error)
 	GetVersions(time.Time, *time.Location) ([]Version, error)
 	RealtimeFeeds() map[RealtimeFeedType]string
 	LuaUpdatesScript(config.Config) string




diff --git a/traffic/gzm_ztm.go b/traffic/gzm_ztm.go
index 91f920af734f1e2a5300daad4e0905e0c24714b9..f5c2d315092da3e594f1536c60a0e79e37464650 100644
--- a/traffic/gzm_ztm.go
+++ b/traffic/gzm_ztm.go
@@ -26,13 +26,8 @@ 	l, _ := time.LoadLocation("Europe/Warsaw")
 	return l
 }
 
-func (z GzmZtm) ConvertVehicles(path string) error {
-	result, err := os.Create(filepath.Join(path, "vehicles.bare"))
-	if err != nil {
-		return fmt.Errorf("ConvertVehicles: cannot create bare file: %w", err)
-	}
-	defer result.Close()
-	return nil
+func (z GzmZtm) ConvertVehicles() ([]Vehicle, error) {
+	return []Vehicle{}, nil
 }
 
 func (z GzmZtm) GetVersions(date time.Time, timezone *time.Location) ([]Version, error) {




diff --git a/traffic/krakow_ztp.go b/traffic/krakow_ztp.go
index 9aef66d39fab5e9feaca3db25309c529a3221c73..dc24dfae75ca5b1e0fc90b11e8516640ea013e77 100644
--- a/traffic/krakow_ztp.go
+++ b/traffic/krakow_ztp.go
@@ -4,9 +4,6 @@ import (
 	"apiote.xyz/p/szczanieckiej/config"
 	"apiote.xyz/p/szczanieckiej/transformers"
 
-	"fmt"
-	"os"
-	"path/filepath"
 	"time"
 
 	"golang.org/x/text/language"
@@ -20,14 +17,8 @@ 	l, _ := time.LoadLocation("Europe/Warsaw")
 	return l
 }
 
-func (ZtpKrakow) ConvertVehicles(path string) error {
-	// note no vehicles by Kraków
-	result, err := os.Create(filepath.Join(path, "vehicles.bare"))
-	if err != nil {
-		return fmt.Errorf("ConvertVehicles: cannot create bare file: %w", err)
-	}
-	defer result.Close()
-	return nil
+func (ZtpKrakow) ConvertVehicles() ([]Vehicle, error) {
+	return []Vehicle{}, nil
 }
 
 func (f ZtpKrakow) GetVersions(date time.Time, timezone *time.Location) ([]Version, error) {




diff --git a/traffic/poznan_ztm.go b/traffic/poznan_ztm.go
index f6138a05d8b146dd61f2e1b10d48bc424fe1e64c..b316b53da0b84fd440cd3f3f61dcc315e076ffce 100644
--- a/traffic/poznan_ztm.go
+++ b/traffic/poznan_ztm.go
@@ -8,15 +8,11 @@ 	"encoding/csv"
 	"fmt"
 	"io"
 	"net/http"
-	"os"
-	"path/filepath"
 	"regexp"
 	"strings"
 	"time"
 
 	"golang.org/x/text/transform"
-
-	"git.sr.ht/~sircmpwn/go-bare"
 )
 
 type HtmlSelector struct {
@@ -34,25 +30,21 @@ 	l, _ := time.LoadLocation("Europe/Warsaw")
 	return l
 }
 
-func (z ZtmPoznan) ConvertVehicles(path string) error {
+func (z ZtmPoznan) ConvertVehicles() ([]Vehicle, error) {
+	vehicles := []Vehicle{}
+
 	url := "https://ztm.poznan.pl/en/dla-deweloperow/getGtfsRtFile/?file=vehicle_dictionary.csv"
 	response, err := z.client.Get(url)
 	if err != nil {
-		return fmt.Errorf("ConvertVehicles: cannot GET ‘%s’: %w", url, err)
+		return vehicles, fmt.Errorf("ConvertVehicles: cannot GET ‘%s’: %w", url, err)
 	}
 
-	result, err := os.Create(filepath.Join(path, "vehicles.bare"))
-	if err != nil {
-		return fmt.Errorf("ConvertVehicles: cannot create bare file: %w", err)
-	}
-	defer result.Close()
-
 	r := csv.NewReader(response.Body)
 	r.Comma = ','
 	header, err := r.Read()
 	if err != nil {
 		fmt.Println("Header read error")
-		return err
+		return vehicles, err
 	}
 	fields := map[string]int{}
 	for i, headerField := range header {
@@ -65,7 +57,7 @@ 		if err == io.EOF {
 			break
 		}
 		if err != nil {
-			return err
+			return vehicles, err
 		}
 
 		var capabilites uint16 = 0
@@ -98,21 +90,13 @@ 		if record[fields["usb_charger"]] == "1" {
 			capabilites |= 0b1000_0000
 		}
 
-		vehicle := Vehicle{
+		vehicles = append(vehicles, Vehicle{
 			Id:           record[0],
 			Capabilities: capabilites,
-		}
+		})
 
-		bytes, err := bare.Marshal(&vehicle)
-		if err != nil {
-			return err
-		}
-		_, err = result.Write(bytes)
-		if err != nil {
-			return err
-		}
 	}
-	return nil
+	return vehicles, nil
 }
 
 func (z ZtmPoznan) GetVersions(date time.Time, timezone *time.Location) ([]Version, error) {