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 }