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) {