TheMathemagicians/sevenkeys/scryfall/methods/bulkdata.go

62 lines
1.4 KiB
Go
Raw Normal View History

2024-04-24 13:29:38 +00:00
package methods
import (
"encoding/json"
"errors"
"io"
"net/http"
"sevenkeys/scryfall/types"
)
var BULK_DATA_URI = "https://api.scryfall.com/bulk-data"
2024-05-19 14:01:18 +00:00
func GetBulkData() (types.BulkDataList, error) {
2024-04-24 13:29:38 +00:00
response, err := http.Get(BULK_DATA_URI)
if err != nil {
2024-05-19 14:01:18 +00:00
return types.BulkDataList{}, err
2024-04-24 13:29:38 +00:00
}
if response.StatusCode != http.StatusOK {
2024-05-19 14:01:18 +00:00
return types.BulkDataList{}, errors.New("HTTP request failed with code: " + string(response.StatusCode))
2024-04-24 13:29:38 +00:00
}
defer response.Body.Close()
bulkDataBytes, err := io.ReadAll(response.Body)
if err != nil {
2024-05-19 14:01:18 +00:00
return types.BulkDataList{}, err
2024-04-24 13:29:38 +00:00
}
var bulkDataList types.BulkDataList
err = json.Unmarshal(bulkDataBytes, &bulkDataList)
if err != nil {
2024-05-19 14:01:18 +00:00
return types.BulkDataList{}, err
2024-04-24 13:29:38 +00:00
}
2024-05-19 14:01:18 +00:00
return bulkDataList, nil
2024-04-24 13:29:38 +00:00
}
2024-05-19 14:01:18 +00:00
func GetBulkDataByType(bulkDataType string) (types.BulkData, error) {
response, err := http.Get(BULK_DATA_URI + "/" + bulkDataType)
2024-04-24 13:29:38 +00:00
if err != nil {
2024-05-19 14:01:18 +00:00
return types.BulkData{}, err
2024-04-24 13:29:38 +00:00
}
if response.StatusCode != http.StatusOK {
2024-05-19 14:01:18 +00:00
return types.BulkData{}, errors.New("HTTP request failed with code: " + string(response.StatusCode))
2024-04-24 13:29:38 +00:00
}
defer response.Body.Close()
2024-05-19 14:01:18 +00:00
bulkDataBytes, err := io.ReadAll(response.Body)
2024-04-24 13:29:38 +00:00
if err != nil {
2024-05-19 14:01:18 +00:00
return types.BulkData{}, err
2024-04-24 13:29:38 +00:00
}
2024-05-19 14:01:18 +00:00
var bulkData types.BulkData
err = json.Unmarshal(bulkDataBytes, &bulkData)
2024-04-24 13:29:38 +00:00
if err != nil {
2024-05-19 14:01:18 +00:00
return types.BulkData{}, err
2024-04-24 13:29:38 +00:00
}
2024-05-19 14:01:18 +00:00
return bulkData, nil
2024-04-24 13:29:38 +00:00
}