go-twitch/api/gueststar/assign_gueststar_slot.go

57 lines
1.9 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 gueststar
import (
"context"
"fmt"
"net/http"
"github.com/google/go-querystring/query"
"go.fifitido.net/twitch/api/endpoint"
)
type AssignGuestStarSlot struct {
// The ID of the broadcaster running the Guest Star session.
BroadcasterID string `url:"broadcaster_id"`
// The ID of the broadcaster or a user that has permission to moderate the broadcasters chat room.
// This ID must match the user_id in the user access token.
ModeratorID string `url:"moderator_id"`
// The ID of the Guest Star session in which to assign the slot.
SessionID string `url:"session_id"`
// The Twitch User ID corresponding to the guest to assign a slot in the session.
// This user must already have an invite to this session, and have indicated that they are ready to join.
GuestID string `url:"guest_id"`
// The slot assignment to give to the user. Must be a numeric identifier between “1” and “N” where N is the max number of slots for the session.
// Max number of slots allowed for the session is reported by Get Channel Guest Star Settings.
SlotID int `url:"slot_id"`
}
// Allows a previously invited user to be assigned a slot within the active Guest Star session, once that guest has indicated they are ready to join.
//
// Query parameter moderator_id must match the user_id in the User-Access token
// Requires OAuth Scope: channel:manage:guest_star or moderator:manage:guest_star
func (g *GuestStar) AssignGuestStarSlot(ctx context.Context, params *AssignGuestStarSlot) error {
v, _ := query.Values(params)
req, err := http.NewRequestWithContext(ctx, http.MethodPost, endpoint.Make(g.baseUrl, "guest_star/slot", v), nil)
if err != nil {
return err
}
res, err := g.client.Do(req)
if err != nil {
return err
}
defer res.Body.Close()
statusOK := res.StatusCode >= 200 && res.StatusCode < 300
if !statusOK {
return fmt.Errorf("failed to assign guest star slot (%d)", res.StatusCode)
}
return nil
}