From a3a7c18a2a965eec68b1b4d5efbdf7359cdb2c18 Mon Sep 17 00:00:00 2001 From: CrazyBolillo Date: Thu, 5 Jun 2025 20:29:18 -0600 Subject: [PATCH] ref: return message ID directly It provides no value to end users to have to access the response in order to get the message ID. Its better if the library just handles it altogether. --- client/threesixty/threesixty.go | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/client/threesixty/threesixty.go b/client/threesixty/threesixty.go index 91d4f83..7c06733 100644 --- a/client/threesixty/threesixty.go +++ b/client/threesixty/threesixty.go @@ -20,12 +20,12 @@ type Client struct { baseURL string } -type MessageEntry struct { +type messageEntry struct { ID string `json:"id"` } -type Response struct { - Messages []MessageEntry `json:"messages"` +type response struct { + Messages []messageEntry `json:"messages"` } func NewClient(token string, baseURL string) (*Client, error) { @@ -56,32 +56,36 @@ func (c *Client) Do(req *http.Request) (*http.Response, error) { return c.client.Do(req) } -func (c *Client) SendMessage(envelope message.Envelope) (*Response, error) { +func (c *Client) SendMessage(envelope message.Envelope) (string, error) { payload, err := json.Marshal(envelope) if err != nil { - return nil, err + return "", err } req, err := http.NewRequest("POST", c.url("messages"), bytes.NewReader(payload)) if err != nil { - return nil, err + return "", err } res, err := c.Do(req) if err != nil { - return nil, err + return "", err } if res.StatusCode != http.StatusOK { body, _ := io.ReadAll(res.Body) - return nil, fmt.Errorf("received status code %d, message: %s", res.StatusCode, body) + return "", fmt.Errorf("received status code %d, message: %s", res.StatusCode, body) } - var data Response + var data response if err := json.NewDecoder(res.Body).Decode(&data); err != nil { - return nil, fmt.Errorf("failed to parse response body: %w", err) + return "", fmt.Errorf("failed to parse response body: %w", err) + } + + if len(data.Messages) != 1 { + return "", fmt.Errorf("found %d messages in response, expected 1", len(data.Messages)) } - return &data, nil + return data.Messages[0].ID, nil }