67 lines
2.6 KiB
Go
67 lines
2.6 KiB
Go
package gueststar
|
||
|
||
import (
|
||
"context"
|
||
"fmt"
|
||
"net/http"
|
||
|
||
"github.com/google/go-querystring/query"
|
||
"go.fifitido.net/twitch/api/endpoint"
|
||
)
|
||
|
||
type UpdateGuestStarSlotSettingsParams 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 broadcaster’s 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 update a slot’s settings.
|
||
SessionID string `url:"session_id"`
|
||
|
||
// The slot assignment that has previously been assigned to a user.
|
||
SlotID int `url:"slot_id"`
|
||
|
||
// Flag indicating whether the slot is allowed to share their audio with the rest of the session.
|
||
// If false, the slot will be muted in any views containing the slot.
|
||
IsAudioEnabled *bool `url:"is_audio_enabled,omitempty"`
|
||
|
||
// Flag indicating whether the slot is allowed to share their video with the rest of the session.
|
||
// If false, the slot will have no video shared in any views containing the slot.
|
||
IsVideoEnabled *bool `url:"is_video_enabled,omitempty"`
|
||
|
||
// Flag indicating whether the user assigned to this slot is visible/can be heard from any public subscriptions.
|
||
// Generally, this determines whether or not the slot is enabled in any broadcasting software integrations.
|
||
IsLive *bool `url:"is_live,omitempty"`
|
||
|
||
// Value from 0-100 that controls the audio volume for shared views containing the slot.
|
||
Volume *int `url:"volume,omitempty"`
|
||
}
|
||
|
||
// Allows a user to update slot settings for a particular guest within a Guest Star session, such as allowing the user to share audio or video within the call as a host. These settings will be broadcasted to all subscribers which control their view of the guest in that slot. One or more of the optional parameters to this API can be specified at any time.
|
||
//
|
||
// 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) UpdateGuestStarSlotSettings(ctx context.Context, params *UpdateGuestStarSlotSettingsParams) error {
|
||
v, _ := query.Values(params)
|
||
|
||
req, err := http.NewRequestWithContext(ctx, http.MethodPost, endpoint.Make(g.baseUrl, "guest_star/slot_settings", 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 update guest star slot settings (%d)", res.StatusCode)
|
||
}
|
||
|
||
return nil
|
||
}
|