TheMathemagicians/sevenkeys/logic/scryfall/scryfallclient.go

48 lines
869 B
Go

package scryfall
import (
"net/http"
"time"
)
const SCRYFALL_API_URL string = "https://api.scryfall.com/"
type ScryfallClient struct {
baseURL string
httpClient *http.Client
}
type ScryfallClientOption func(*ScryfallClient) error
func NewScryfallClient(options ...ScryfallClientOption) (*ScryfallClient, error) {
client := &ScryfallClient{
baseURL: SCRYFALL_API_URL,
httpClient: &http.Client{
Timeout: time.Second * 30,
},
}
if err := client.parseOptions(options...); err != nil {
return nil, err
}
return client, nil
}
func BaseURL(baseURL string) ScryfallClientOption {
return func(c *ScryfallClient) error {
c.baseURL = baseURL
return nil
}
}
func (c *ScryfallClient) parseOptions(options ...ScryfallClientOption) error {
for _, option := range options {
err := option(c)
if err != nil {
return err
}
}
return nil
}