From f0dfea17285671964ce39ea3ea1a6abe0dbe39ed Mon Sep 17 00:00:00 2001 From: Knut Ahlers Date: Mon, 5 Dec 2022 18:58:10 +0100 Subject: [PATCH] [twitch] Implement `AddChannelVIP`, `RemoveChannelVIP` Signed-off-by: Knut Ahlers --- pkg/twitch/channels.go | 46 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/pkg/twitch/channels.go b/pkg/twitch/channels.go index eaf8583..bae2730 100644 --- a/pkg/twitch/channels.go +++ b/pkg/twitch/channels.go @@ -10,6 +10,29 @@ import ( "github.com/pkg/errors" ) +func (c *Client) AddChannelVIP(ctx context.Context, broadcasterName, userName string) error { + broadcaster, err := c.GetIDForUsername(broadcasterName) + if err != nil { + return errors.Wrap(err, "getting ID for broadcaster name") + } + + userID, err := c.GetIDForUsername(userName) + if err != nil { + return errors.Wrap(err, "getting ID for user name") + } + + return errors.Wrap( + c.request(clientRequestOpts{ + AuthType: authTypeBearerToken, + Context: ctx, + Method: http.MethodPost, + OKStatus: http.StatusNoContent, + URL: fmt.Sprintf("https://api.twitch.tv/helix/channels/vips?broadcaster_id=%s&user_id=%s", broadcaster, userID), + }), + "executing request", + ) +} + func (c *Client) ModifyChannelInformation(ctx context.Context, broadcasterName string, game, title *string) error { if game == nil && title == nil { return errors.New("netiher game nor title provided") @@ -83,3 +106,26 @@ func (c *Client) ModifyChannelInformation(ctx context.Context, broadcasterName s "executing request", ) } + +func (c *Client) RemoveChannelVIP(ctx context.Context, broadcasterName, userName string) error { + broadcaster, err := c.GetIDForUsername(broadcasterName) + if err != nil { + return errors.Wrap(err, "getting ID for broadcaster name") + } + + userID, err := c.GetIDForUsername(userName) + if err != nil { + return errors.Wrap(err, "getting ID for user name") + } + + return errors.Wrap( + c.request(clientRequestOpts{ + AuthType: authTypeBearerToken, + Context: ctx, + Method: http.MethodDelete, + OKStatus: http.StatusNoContent, + URL: fmt.Sprintf("https://api.twitch.tv/helix/channels/vips?broadcaster_id=%s&user_id=%s", broadcaster, userID), + }), + "executing request", + ) +}