1 Commits
Author SHA1 Message Date
paul f3120905fe Sort departures by countdown
Build image / build-image (push) Failing after 1m49s
2025-04-25 16:33:28 +02:00
2 changed files with 9 additions and 17 deletions
+1 -1
View File
@@ -16,7 +16,7 @@
vrnp-static = pkgs.buildGoModule {
pname = "vrnp";
version = "0.0.8";
version = "0.0.6";
vendorHash = null;
# For building the package, we use only the files not ignored by Git as inputs.
+7 -15
View File
@@ -51,12 +51,6 @@ type EFAClient interface {
BuildRequest(string) (*http.Request, error)
}
var allEfaClients []EFAClient = []EFAClient{
BwegtEFAClient{},
VRNEFAClient{},
KVVEFAClient{},
}
type VRNEFAClient struct {
}
@@ -187,7 +181,7 @@ type Departure struct {
Symbol string `json:"symbol"`
Direction string `json:"direction"`
Leaving string `json:"leaving"`
Countdown int `json:"-"`
Countdown int
}
func ParseDepartures(response DMResponse, allowedPlatform *string) (Departures, error) {
@@ -246,18 +240,15 @@ func ParseDepartures(response DMResponse, allowedPlatform *string) (Departures,
func main() {
password := os.Getenv("VRNP_PASSWORD")
if len(password) == 0 {
log.Fatal("Required environment variable VRNP_PASSWORD is not set")
panic("Required environment variable VRNP_PASSWORD is not set")
}
clientAllowlist := strings.Split(os.Getenv("VRNP_CLIENT_ALLOWLIST"), ",")
// Use round-robin to send incoming requests to different servers
var efaClient atomic.Uint64
var efaClients []EFAClient
for _, efaClient := range allEfaClients {
if len(clientAllowlist) != 0 && slices.Contains(clientAllowlist, efaClient.GetName()) {
efaClients = append(efaClients, efaClient)
}
efaClients := []EFAClient{
BwegtEFAClient{},
VRNEFAClient{},
KVVEFAClient{},
}
http.HandleFunc("/departures", func(w http.ResponseWriter, r *http.Request) {
@@ -282,6 +273,7 @@ func main() {
}
c := efaClients[(efaClient.Add(1) - 1) % uint64(len(efaClients))]
log.Print(c.GetName())
ds, err := FetchDepartures(c, stopId)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)