go-twitch/api/moderation/get_moderated_channels.go

78 lines
2.4 KiB
Go
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package moderation
import (
"context"
"encoding/json"
"fmt"
"net/http"
"github.com/google/go-querystring/query"
"go.fifitido.net/twitch/api/endpoint"
"go.fifitido.net/twitch/api/types"
)
type GetModeratedChannelsParams struct {
// A users ID. Returns the list of channels that this user has moderator privileges in. This ID must match the user ID in the user OAuth token
UserID string `url:"user_id"`
// The cursor used to get the next page of results. The Pagination object in the response contains the cursors value.
After *types.Cursor `url:"after,omitempty"`
// The maximum number of items to return per page in the response.
// The minimum page size is 1 item per page and the maximum is 100 items per page.
// The default is 20.
First *int `url:"first,omitempty"`
}
type GetModeratedChannelsResponse struct {
// The list of channels that the user has moderator privileges in.
Data []GetModeratedChannelsResponseData `json:"data"`
// Contains information about the pagination in the response.
// The object is empty if there are no more pages of results.
// Read More: https://dev.twitch.tv/docs/api/guide#pagination
Pagination types.Pagination `json:"pagination"`
}
type GetModeratedChannelsResponseData struct {
// An ID that uniquely identifies the channel this user can moderate.
BroadcasterID string `json:"broadcaster_id"`
// The channels login name.
BroadcasterLogin string `json:"broadcaster_login"`
// The channels display name.
BroadcasterName string `json:"broadcaster_name"`
}
// Gets a list of channels that the specified user has moderator privileges in.
//
// Query parameter user_id must match the user ID in the User-Access token
// Requires OAuth Scope: user:read:moderated_channels
func (m *Moderation) GetModeratedChannels(ctx context.Context, params *GetModeratedChannelsParams) (*GetModeratedChannelsResponse, error) {
v, _ := query.Values(params)
req, err := http.NewRequestWithContext(ctx, http.MethodGet, endpoint.Make(m.baseUrl, "moderation/channels", v), nil)
if err != nil {
return nil, err
}
res, err := m.client.Do(req)
if err != nil {
return nil, err
}
defer res.Body.Close()
statusOK := res.StatusCode >= 200 && res.StatusCode < 300
if !statusOK {
return nil, fmt.Errorf("failed to get moderated channels (%d)", res.StatusCode)
}
var data GetModeratedChannelsResponse
if err := json.NewDecoder(res.Body).Decode(&data); err != nil {
return nil, err
}
return &data, nil
}