1package api23import (4 "encoding/json"5 "fmt"6 "net/http"7 "time"89 "github.com/dami/showings/internal/models"10)1112const defaultBaseURL = "https://drafthouse.com/s/mother/v2/schedule/venue/"1314type Client struct {15 httpClient *http.Client16 baseURL string17}1819func NewClient() *Client {20 return &Client{21 httpClient: &http.Client{22 Timeout: 30 * time.Second,23 },24 baseURL: defaultBaseURL,25 }26}2728func NewClientWithURL(baseURL string) *Client {29 return &Client{30 httpClient: &http.Client{31 Timeout: 30 * time.Second,32 },33 baseURL: baseURL,34 }35}3637func (c *Client) FetchSchedule(venue string) (*models.APIResponse, error) {38 url := c.baseURL + venue39 resp, err := c.httpClient.Get(url)40 if err != nil {41 return nil, fmt.Errorf("failed to fetch schedule: %w", err)42 }43 defer resp.Body.Close()4445 if resp.StatusCode != http.StatusOK {46 return nil, fmt.Errorf("unexpected status code: %d", resp.StatusCode)47 }4849 var result models.APIResponse50 if err := json.NewDecoder(resp.Body).Decode(&result); err != nil {51 return nil, fmt.Errorf("failed to decode response: %w", err)52 }5354 return &result, nil55}