package twilio

import (
	"fmt"
	"io"
	"net/http"
	"net/url"
	"strings"
)

type Client struct {
	AccountSID  string
	AuthToken   string
	PhoneNumber string
}

func (c *Client) SendSMS(to, msg string) error {
	apiURL := fmt.Sprintf("https://api.twilio.com/2010-04-01/Accounts/%s/Messages.json", c.AccountSID)
	data := url.Values{}
	data.Set("From", c.PhoneNumber)
	data.Set("To", to)
	data.Set("Body", msg)
	req, err := http.NewRequest("POST", apiURL, strings.NewReader(data.Encode()))
	if err != nil {
		panic(err)
	}
	req.SetBasicAuth(c.AccountSID, c.AuthToken)
	req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
	res, err := http.DefaultClient.Do(req)
	if err != nil {
		b, err := io.ReadAll(res.Body)
		if err != nil {
			return err
		}
		return fmt.Errorf("%s: %s", err, strings.TrimSpace(string(b)))
	}
	return nil
}
