From f1abe3becf78f2fec8f02f6ddde527664e12f90b Mon Sep 17 00:00:00 2001 From: Caleb Denio Date: Sun, 3 May 2026 19:19:53 -0600 Subject: [PATCH] we do json now --- cmd/main.go | 40 +++++++++++++++++++++++++--------------- 1 file changed, 25 insertions(+), 15 deletions(-) diff --git a/cmd/main.go b/cmd/main.go index 3a4f2ce..2b10d7e 100644 --- a/cmd/main.go +++ b/cmd/main.go @@ -2,6 +2,7 @@ package main import ( "database/sql" + "encoding/json" "fmt" "io" "log" @@ -117,12 +118,6 @@ func getVehicles() ([]*pb.VehiclePosition, *pb.FeedHeader, error) { return vehicles, feed.Header, nil } -type TripInfo struct { - Line pb.VehicleFeed_Line - Direction int32 - Headsign string -} - func feedifyVehicles(vehicles []*pb.VehiclePosition, header *pb.FeedHeader, routeTypes map[int]bool) pb.VehicleFeed { vehicle_feed := make([]*pb.VehicleFeed_Vehicle, 0, len(vehicles)) @@ -238,16 +233,31 @@ func main() { } } - feed := feedifyVehicles(vehicles, header, routeTypeFilter) - b, err := proto.Marshal(&feed) - if err != nil { - log.Println(err) - w.WriteHeader(http.StatusInternalServerError) - return + if r.Header.Get("Accept") == "application/json" { + feed := feedifyVehicles(vehicles, header, routeTypeFilter) + response, err := json.Marshal(&feed) + if err != nil { + log.Println(err) + w.WriteHeader(http.StatusInternalServerError) + return + } + w.Header().Add("Content-Type", "application/json") + w.Header().Add("Content-Length", strconv.Itoa(len(response))) + w.Write(response) + } else { + // send a protobuf + + feed := feedifyVehicles(vehicles, header, routeTypeFilter) + b, err := proto.Marshal(&feed) + if err != nil { + log.Println(err) + w.WriteHeader(http.StatusInternalServerError) + return + } + w.Header().Add("Content-Type", "application/protobuf") + w.Header().Add("Content-Length", strconv.Itoa(len(b))) + w.Write(b) } - w.Header().Add("Content-Type", "application/protobuf") - w.Header().Add("Content-Length", strconv.Itoa(len(b))) - w.Write(b) }) port := "3000"