From f46c023f0eadd2be844d40afaafded1b0f14a9fc Mon Sep 17 00:00:00 2001 From: Florian Fischer Date: Sat, 5 Jul 2025 17:35:58 -0400 Subject: fail if loading an unknown card and add more poc test cases --- go/game/card.go | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'go/game/card.go') diff --git a/go/game/card.go b/go/game/card.go index 70c591b7..5aee94bd 100644 --- a/go/game/card.go +++ b/go/game/card.go @@ -1,6 +1,7 @@ package game import ( + "errors" "fmt" "io" "log" @@ -178,6 +179,10 @@ func getCardDefinition(set, cardName string) ([]byte, error) { return cardDefinition, nil } +var ( + ErrUnknownCardPath = errors.New("unknown card path") +) + func retrieveCardDefinition(cardPath string) ([]byte, error) { url := PROTOCOL + path.Join(BASE_URL, CARD_DATA_URL, cardPath+".yml") log.Printf("loading %s\n", url) @@ -186,6 +191,10 @@ func retrieveCardDefinition(cardPath string) ([]byte, error) { return nil, err } + if resp.StatusCode == 404 { + return nil, ErrUnknownCardPath + } + defer resp.Body.Close() data, err := io.ReadAll(resp.Body) if err != nil { @@ -337,13 +346,16 @@ func NewCard(cardPath string) *Card { return card } -// Safely create a new card from the path. +// NewCardSafe safely creates a new card from the path. // Return an error if the path is invalid. func NewCardSafe(cardPath string) (*Card, error) { cardName := path.Base(cardPath) set := path.Dir(cardPath) cardDefinition, err := getCardDefinition(set, cardName) + if err != nil { + return nil, err + } c := Card{ Name: "", -- cgit v1.2.3