package scryfall import ( "encoding/json" "errors" "io" "net/http" ) type Set struct { Object string `json:"object"` Id string `json:"id"` // Use UUID package? Code string `json:"code"` MtgoCode string `json:"mtgo_code"` ArenaCode string `json:"arena_code"` TcgplayerId int `json:"tcgplayer_id"` Name string `json:"name"` SetType string `json:"set_type"` ReleasedAt string `json:"released_at"` BlockCode string `json:"block_code"` Block string `json:"block"` ParentSetCode string `json:"parent_set_code"` CardCount int `json:"card_count"` PrintedSize int `json:"printed_size"` Digital bool `json:"digital"` FoilOnly bool `json:"foil_only"` NonfoilOnly bool `json:"nonfoil_only"` ScryfallUri string `json:"scryfall_uri"` Uri string `json:"uri"` IconSvgUri string `json:"icon_svg_uri"` SearchUri string `json:"search_uri"` } type SetList struct { Object string `json:"object"` HasMore bool `json:"has_more"` Data []Set `json:"data"` } var SETS_API string = "https://api.scryfall.com/sets" func GetSets() (SetList, error) { response, err := http.Get(SETS_API) if err != nil { return SetList{}, err } defer response.Body.Close() if response.StatusCode == http.StatusOK { setsBytes, err := io.ReadAll(response.Body) if err != nil { return SetList{}, err } var setList SetList err = json.Unmarshal(setsBytes, &setList) if err != nil { return SetList{}, err } return setList, nil } return SetList{}, errors.New("scryfall: failed to get all sets") }