Aller au contenu

Liaisons de langage Golang GTFS-realtime

Fournit des structures Golang générées à partir du protocole GTFS-realtime Spécification du tampon. Ces structures vous permettront d’analyser un flux de données binaires en temps réel Protocol Buffer GTFS dans des objets Golang.

Ajouter la dépendance

Pour utiliser les structures gtfs-realtime-bindings dans votre propre projet, vous devez d’abord installer cette bibliothèque avec :

go get github.com/MobilityData/gtfs-realtime-bindings/golang/gtfs

And install the golang protobuf library dependency with:

go get google.golang.org/protobuf/proto

Exemple de code

L’extrait de code suivant montre le téléchargement d’un flux de données GTFS Realtime à partir d’une URL particulière, en l’analysant comme un FeedMessage (le type racine du § § Schéma GTFS-temps réel) et itération sur les résultats.

package main

import (
    "fmt"
    "google.golang.org/protobuf/proto"
    "github.com/MobilityData/gtfs-realtime-bindings/golang/gtfs"
    "io/ioutil"
    "log"
    "net/http"
)

func main() {
    var (
        username = "YOUR_ACCESS_KEY"
        password = "YOUR_SECRET_KEY"
    )

    client := &http.Client{}
    req, err := http.NewRequest("GET", "URL OF YOUR GTFS-REALTIME SOURCE GOES HERE", nil)
    req.SetBasicAuth(username, password)
    resp, err := client.Do(req)
    defer resp.Body.Close()
    if err != nil {
        log.Fatal(err)
    }
    body, err := ioutil.ReadAll(resp.Body)
    if err != nil {
        log.Fatal(err)
    }

    feed := gtfs.FeedMessage{}
    err = proto.Unmarshal(body, &feed)
    if err != nil {
        log.Fatal(err)
    }

    for _, entity := range feed.Entity {
        tripUpdate := entity.GetTripUpdate()
        trip := tripUpdate.GetTrip()
        tripId := trip.GetTripId()
        fmt.Printf("Trip ID: %s\n", tripId)
    }
}

Pour plus de détails sur les conventions de dénomination des structures Golang générées à partir du gtfs-realtime.proto, consultez le Golang Generated Code section du site des développeur·euse de Protocol Buffers.