diff --git a/pkg/serra/scryfall.go b/pkg/serra/scryfall.go index 28e9cfb..4e06a73 100644 --- a/pkg/serra/scryfall.go +++ b/pkg/serra/scryfall.go @@ -6,7 +6,6 @@ import ( "encoding/json" "fmt" "io" - "io/ioutil" "log" "net/http" "os" @@ -144,19 +143,31 @@ type BulkIndex struct { } `json:"data"` } +func makeRequest(url string) (*http.Response, error) { + req, err := http.NewRequest("GET", url, nil) + if err != nil { + log.Fatalf("Error creating HTTP request: %v", err) + } + + req.Header.Set("User-Agent", fmt.Sprintf("Serra_Collection_Tracker/%s", Version)) + req.Header.Set("Accept", "*/*") + + return http.DefaultClient.Do(req) +} + func fetchBulkDownloadURL() (string, error) { url := "https://api.scryfall.com/bulk-data" downloadURL := "" // Make an HTTP GET request - resp, err := http.Get(url) + resp, err := makeRequest(url) if err != nil { log.Fatalf("Error fetching data: %v", err) } defer resp.Body.Close() // Read the response body - body, err := ioutil.ReadAll(resp.Body) + body, err := io.ReadAll(resp.Body) if err != nil { log.Fatalf("Error reading response body: %v", err) } @@ -194,7 +205,7 @@ func downloadBulkData(downloadURL string) (string, error) { // defer tempFile.Close() // Ensure we close the file when we're done // Download the file - resp, err := http.Get(downloadURL) + resp, err := makeRequest(downloadURL) if err != nil { log.Fatalf("Error downloading file: %v", err) } @@ -293,13 +304,14 @@ func (c Card) getValue(foil bool) float64 { } func fetchCard(setName, collectorNumber string) (*Card, error) { - resp, err := http.Get(fmt.Sprintf("https://api.scryfall.com/cards/%s/%s/", setName, collectorNumber)) + resp, err := makeRequest(fmt.Sprintf("https://api.scryfall.com/cards/%s/%s", setName, collectorNumber)) if err != nil { log.Fatalln(err) return &Card{}, err } if resp.StatusCode != 200 { + log.Println(resp.StatusCode) return &Card{}, fmt.Errorf("Card %s/%s not found", setName, collectorNumber) } @@ -325,7 +337,7 @@ func fetchCard(setName, collectorNumber string) (*Card, error) { val.Prices.Date = primitive.NewDateTimeFromTime(time.Now()) val.SerraPrices = append(val.SerraPrices, val.Prices) - imgResp, imgErr := http.Get(val.ImageUris.Png) + imgResp, imgErr := makeRequest(val.ImageUris.Png) if imgErr != nil { log.Fatalln(err) return &Card{}, err @@ -343,7 +355,7 @@ func fetchCard(setName, collectorNumber string) (*Card, error) { func fetchSets() (*SetList, error) { // TODO: better URL Building... - resp, err := http.Get("https://api.scryfall.com/sets") + resp, err := makeRequest("https://api.scryfall.com/sets") if err != nil { log.Fatalln(err) return &SetList{}, err