From 402ac4ea5895d9cc9e2158a4aed3a2f2314bc324 Mon Sep 17 00:00:00 2001 From: Joop Kiefte Date: Tue, 8 Aug 2023 19:03:52 +0100 Subject: Correct code --- main.go | 32 ++++++++++++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/main.go b/main.go index d1ea657..59c58c8 100644 --- a/main.go +++ b/main.go @@ -4,12 +4,14 @@ package main import ( "archive/zip" + "bytes" "fmt" "io" "net/http" "os" "path/filepath" "strings" + "encoding/csv" ) type GTFS map[string][]string @@ -23,8 +25,16 @@ func readFromURL(url string) GTFS { } defer resp.Body.Close() + // Read all into a byte slice, then make a ReaderAt from it + body, err := io.ReadAll(resp.Body) + if err != nil { + fmt.Println(err) + os.Exit(1) + } + reader := bytes.NewReader(body) + // Read zip file - return readFromZip(resp.Body) + return readFromZip(reader) } func readFromFile(filename string) GTFS { @@ -40,7 +50,7 @@ func readFromFile(filename string) GTFS { return readFromZip(file) } -func readFromZip(file io.Reader) GTFS { +func readFromZip(file io.ReaderAt) GTFS { // Open zip file r, err := zip.NewReader(file, 0) if err != nil { @@ -67,6 +77,24 @@ func readFromZip(file io.Reader) GTFS { return gtfs } +func readFromCSV(file io.Reader) []string { + // Read CSV file + r := csv.NewReader(file) + rows, err := r.ReadAll() + if err != nil { + fmt.Println(err) + os.Exit(1) + } + + // Convert rows to []string + var result []string + for _, row := range rows { + result = append(result, strings.Join(row, ",")) + } + + return result +} + func writeToDir(gtfs GTFS) { for table, rows := range gtfs { // Open file -- cgit v1.2.3-70-g09d2