diff --git a/internal/client/poll.go b/internal/client/poll.go index 5b1516f..bf1bc50 100644 --- a/internal/client/poll.go +++ b/internal/client/poll.go @@ -5,6 +5,8 @@ package client import ( + "bytes" + "encoding/json" "fmt" "net/http" @@ -29,3 +31,25 @@ func (g *Client) GetPoll(pollID string) (model.Poll, error) { return poll, nil } + +func (g *Client) VoteInPoll(pollID string, choices []int) error { + form := struct { + Choices []int `json:"choices"` + }{ + Choices: choices, + } + + data, err := json.Marshal(form) + if err != nil { + return fmt.Errorf("unable to encode the JSON form: %w", err) + } + + requestBody := bytes.NewBuffer(data) + url := g.Authentication.Instance + pollPath + "/" + pollID + "/vote" + + if err := g.sendRequest(http.MethodPost, url, requestBody, nil); err != nil { + return fmt.Errorf("received an error after sending the request to vote in the poll: %w", err) + } + + return nil +}