aboutsummaryrefslogtreecommitdiff
path: root/go/game/card.go
diff options
context:
space:
mode:
authorFlorian Fischer <florian.fischer@muhq.space>2025-07-05 17:35:58 -0400
committerFlorian Fischer <florian.fischer@muhq.space>2025-08-20 15:57:24 +0200
commitf46c023f0eadd2be844d40afaafded1b0f14a9fc (patch)
tree3c5bcd0dff4c88ccc5eba53650dbbd0d21cbc439 /go/game/card.go
parent91af2f3fe4a9b40093ea43c7c899f8281ee887f8 (diff)
downloadmuhqs-game-f46c023f0eadd2be844d40afaafded1b0f14a9fc.tar.gz
muhqs-game-f46c023f0eadd2be844d40afaafded1b0f14a9fc.zip
fail if loading an unknown card and add more poc test cases
Diffstat (limited to 'go/game/card.go')
-rw-r--r--go/game/card.go14
1 files changed, 13 insertions, 1 deletions
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: "",