651 lines
17 KiB
Go
651 lines
17 KiB
Go
|
package obsws
|
||
|
|
||
|
import (
|
||
|
"errors"
|
||
|
"time"
|
||
|
)
|
||
|
|
||
|
// This file is automatically generated.
|
||
|
// https://github.com/christopher-dG/go-obs-websocket/blob/master/codegen/protocol.py
|
||
|
|
||
|
// GetStudioModeStatusRequest : Indicates if Studio Mode is currently enabled.
|
||
|
//
|
||
|
// Since obs-websocket version: 4.1.0.
|
||
|
//
|
||
|
// https://github.com/Palakis/obs-websocket/blob/4.3-maintenance/docs/generated/protocol.md#getstudiomodestatus
|
||
|
type GetStudioModeStatusRequest struct {
|
||
|
_request `json:",squash"`
|
||
|
response chan GetStudioModeStatusResponse
|
||
|
}
|
||
|
|
||
|
// NewGetStudioModeStatusRequest returns a new GetStudioModeStatusRequest.
|
||
|
func NewGetStudioModeStatusRequest() GetStudioModeStatusRequest {
|
||
|
return GetStudioModeStatusRequest{
|
||
|
_request{
|
||
|
ID_: getMessageID(),
|
||
|
Type_: "GetStudioModeStatus",
|
||
|
err: make(chan error, 1),
|
||
|
},
|
||
|
make(chan GetStudioModeStatusResponse, 1),
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Send sends the request.
|
||
|
func (r *GetStudioModeStatusRequest) Send(c *Client) error {
|
||
|
if r.sent {
|
||
|
return ErrAlreadySent
|
||
|
}
|
||
|
future, err := c.sendRequest(r)
|
||
|
if err != nil {
|
||
|
return err
|
||
|
}
|
||
|
r.sent = true
|
||
|
go func() {
|
||
|
m := <-future
|
||
|
var resp GetStudioModeStatusResponse
|
||
|
if err = mapToStruct(m, &resp); err != nil {
|
||
|
r.err <- err
|
||
|
} else if resp.Status() != StatusOK {
|
||
|
r.err <- errors.New(resp.Error())
|
||
|
} else {
|
||
|
r.response <- resp
|
||
|
}
|
||
|
}()
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
// Receive waits for the response.
|
||
|
func (r GetStudioModeStatusRequest) Receive() (GetStudioModeStatusResponse, error) {
|
||
|
if !r.sent {
|
||
|
return GetStudioModeStatusResponse{}, ErrNotSent
|
||
|
}
|
||
|
if receiveTimeout == 0 {
|
||
|
select {
|
||
|
case resp := <-r.response:
|
||
|
return resp, nil
|
||
|
case err := <-r.err:
|
||
|
return GetStudioModeStatusResponse{}, err
|
||
|
}
|
||
|
} else {
|
||
|
select {
|
||
|
case resp := <-r.response:
|
||
|
return resp, nil
|
||
|
case err := <-r.err:
|
||
|
return GetStudioModeStatusResponse{}, err
|
||
|
case <-time.After(receiveTimeout):
|
||
|
return GetStudioModeStatusResponse{}, ErrReceiveTimeout
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// SendReceive sends the request then immediately waits for the response.
|
||
|
func (r GetStudioModeStatusRequest) SendReceive(c *Client) (GetStudioModeStatusResponse, error) {
|
||
|
if err := r.Send(c); err != nil {
|
||
|
return GetStudioModeStatusResponse{}, err
|
||
|
}
|
||
|
return r.Receive()
|
||
|
}
|
||
|
|
||
|
// GetStudioModeStatusResponse : Response for GetStudioModeStatusRequest.
|
||
|
//
|
||
|
// Since obs-websocket version: 4.1.0.
|
||
|
//
|
||
|
// https://github.com/Palakis/obs-websocket/blob/4.3-maintenance/docs/generated/protocol.md#getstudiomodestatus
|
||
|
type GetStudioModeStatusResponse struct {
|
||
|
// Indicates if Studio Mode is enabled.
|
||
|
// Required: Yes.
|
||
|
StudioMode bool `json:"studio-mode"`
|
||
|
_response `json:",squash"`
|
||
|
}
|
||
|
|
||
|
// GetPreviewSceneRequest : Get the name of the currently previewed scene and its list of sources.
|
||
|
// Will return an `error` if Studio Mode is not enabled.
|
||
|
//
|
||
|
// Since obs-websocket version: 4.1.0.
|
||
|
//
|
||
|
// https://github.com/Palakis/obs-websocket/blob/4.3-maintenance/docs/generated/protocol.md#getpreviewscene
|
||
|
type GetPreviewSceneRequest struct {
|
||
|
_request `json:",squash"`
|
||
|
response chan GetPreviewSceneResponse
|
||
|
}
|
||
|
|
||
|
// NewGetPreviewSceneRequest returns a new GetPreviewSceneRequest.
|
||
|
func NewGetPreviewSceneRequest() GetPreviewSceneRequest {
|
||
|
return GetPreviewSceneRequest{
|
||
|
_request{
|
||
|
ID_: getMessageID(),
|
||
|
Type_: "GetPreviewScene",
|
||
|
err: make(chan error, 1),
|
||
|
},
|
||
|
make(chan GetPreviewSceneResponse, 1),
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Send sends the request.
|
||
|
func (r *GetPreviewSceneRequest) Send(c *Client) error {
|
||
|
if r.sent {
|
||
|
return ErrAlreadySent
|
||
|
}
|
||
|
future, err := c.sendRequest(r)
|
||
|
if err != nil {
|
||
|
return err
|
||
|
}
|
||
|
r.sent = true
|
||
|
go func() {
|
||
|
m := <-future
|
||
|
var resp GetPreviewSceneResponse
|
||
|
if err = mapToStruct(m, &resp); err != nil {
|
||
|
r.err <- err
|
||
|
} else if resp.Status() != StatusOK {
|
||
|
r.err <- errors.New(resp.Error())
|
||
|
} else {
|
||
|
r.response <- resp
|
||
|
}
|
||
|
}()
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
// Receive waits for the response.
|
||
|
func (r GetPreviewSceneRequest) Receive() (GetPreviewSceneResponse, error) {
|
||
|
if !r.sent {
|
||
|
return GetPreviewSceneResponse{}, ErrNotSent
|
||
|
}
|
||
|
if receiveTimeout == 0 {
|
||
|
select {
|
||
|
case resp := <-r.response:
|
||
|
return resp, nil
|
||
|
case err := <-r.err:
|
||
|
return GetPreviewSceneResponse{}, err
|
||
|
}
|
||
|
} else {
|
||
|
select {
|
||
|
case resp := <-r.response:
|
||
|
return resp, nil
|
||
|
case err := <-r.err:
|
||
|
return GetPreviewSceneResponse{}, err
|
||
|
case <-time.After(receiveTimeout):
|
||
|
return GetPreviewSceneResponse{}, ErrReceiveTimeout
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// SendReceive sends the request then immediately waits for the response.
|
||
|
func (r GetPreviewSceneRequest) SendReceive(c *Client) (GetPreviewSceneResponse, error) {
|
||
|
if err := r.Send(c); err != nil {
|
||
|
return GetPreviewSceneResponse{}, err
|
||
|
}
|
||
|
return r.Receive()
|
||
|
}
|
||
|
|
||
|
// GetPreviewSceneResponse : Response for GetPreviewSceneRequest.
|
||
|
//
|
||
|
// Since obs-websocket version: 4.1.0.
|
||
|
//
|
||
|
// https://github.com/Palakis/obs-websocket/blob/4.3-maintenance/docs/generated/protocol.md#getpreviewscene
|
||
|
type GetPreviewSceneResponse struct {
|
||
|
// The name of the active preview scene.
|
||
|
// Required: Yes.
|
||
|
Name string `json:"name"`
|
||
|
// Required: Yes.
|
||
|
Sources []map[string]interface{} `json:"sources"`
|
||
|
_response `json:",squash"`
|
||
|
}
|
||
|
|
||
|
// SetPreviewSceneRequest : Set the active preview scene.
|
||
|
// Will return an `error` if Studio Mode is not enabled.
|
||
|
//
|
||
|
// Since obs-websocket version: 4.1.0.
|
||
|
//
|
||
|
// https://github.com/Palakis/obs-websocket/blob/4.3-maintenance/docs/generated/protocol.md#setpreviewscene
|
||
|
type SetPreviewSceneRequest struct {
|
||
|
// The name of the scene to preview.
|
||
|
// Required: Yes.
|
||
|
SceneName string `json:"scene-name"`
|
||
|
_request `json:",squash"`
|
||
|
response chan SetPreviewSceneResponse
|
||
|
}
|
||
|
|
||
|
// NewSetPreviewSceneRequest returns a new SetPreviewSceneRequest.
|
||
|
func NewSetPreviewSceneRequest(sceneName string) SetPreviewSceneRequest {
|
||
|
return SetPreviewSceneRequest{
|
||
|
sceneName,
|
||
|
_request{
|
||
|
ID_: getMessageID(),
|
||
|
Type_: "SetPreviewScene",
|
||
|
err: make(chan error, 1),
|
||
|
},
|
||
|
make(chan SetPreviewSceneResponse, 1),
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Send sends the request.
|
||
|
func (r *SetPreviewSceneRequest) Send(c *Client) error {
|
||
|
if r.sent {
|
||
|
return ErrAlreadySent
|
||
|
}
|
||
|
future, err := c.sendRequest(r)
|
||
|
if err != nil {
|
||
|
return err
|
||
|
}
|
||
|
r.sent = true
|
||
|
go func() {
|
||
|
m := <-future
|
||
|
var resp SetPreviewSceneResponse
|
||
|
if err = mapToStruct(m, &resp); err != nil {
|
||
|
r.err <- err
|
||
|
} else if resp.Status() != StatusOK {
|
||
|
r.err <- errors.New(resp.Error())
|
||
|
} else {
|
||
|
r.response <- resp
|
||
|
}
|
||
|
}()
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
// Receive waits for the response.
|
||
|
func (r SetPreviewSceneRequest) Receive() (SetPreviewSceneResponse, error) {
|
||
|
if !r.sent {
|
||
|
return SetPreviewSceneResponse{}, ErrNotSent
|
||
|
}
|
||
|
if receiveTimeout == 0 {
|
||
|
select {
|
||
|
case resp := <-r.response:
|
||
|
return resp, nil
|
||
|
case err := <-r.err:
|
||
|
return SetPreviewSceneResponse{}, err
|
||
|
}
|
||
|
} else {
|
||
|
select {
|
||
|
case resp := <-r.response:
|
||
|
return resp, nil
|
||
|
case err := <-r.err:
|
||
|
return SetPreviewSceneResponse{}, err
|
||
|
case <-time.After(receiveTimeout):
|
||
|
return SetPreviewSceneResponse{}, ErrReceiveTimeout
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// SendReceive sends the request then immediately waits for the response.
|
||
|
func (r SetPreviewSceneRequest) SendReceive(c *Client) (SetPreviewSceneResponse, error) {
|
||
|
if err := r.Send(c); err != nil {
|
||
|
return SetPreviewSceneResponse{}, err
|
||
|
}
|
||
|
return r.Receive()
|
||
|
}
|
||
|
|
||
|
// SetPreviewSceneResponse : Response for SetPreviewSceneRequest.
|
||
|
//
|
||
|
// Since obs-websocket version: 4.1.0.
|
||
|
//
|
||
|
// https://github.com/Palakis/obs-websocket/blob/4.3-maintenance/docs/generated/protocol.md#setpreviewscene
|
||
|
type SetPreviewSceneResponse struct {
|
||
|
_response `json:",squash"`
|
||
|
}
|
||
|
|
||
|
// TransitionToProgramRequest : Transitions the currently previewed scene to the main output.
|
||
|
// Will return an `error` if Studio Mode is not enabled.
|
||
|
//
|
||
|
// Since obs-websocket version: 4.1.0.
|
||
|
//
|
||
|
// https://github.com/Palakis/obs-websocket/blob/4.3-maintenance/docs/generated/protocol.md#transitiontoprogram
|
||
|
type TransitionToProgramRequest struct {
|
||
|
// Change the active transition before switching scenes.
|
||
|
// Defaults to the active transition.
|
||
|
// Required: No.
|
||
|
WithTransition map[string]interface{} `json:"with-transition"`
|
||
|
// Name of the transition.
|
||
|
// Required: Yes.
|
||
|
WithTransitionName string `json:"with-transition.name"`
|
||
|
// Transition duration (in milliseconds).
|
||
|
// Required: No.
|
||
|
WithTransitionDuration int `json:"with-transition.duration"`
|
||
|
_request `json:",squash"`
|
||
|
response chan TransitionToProgramResponse
|
||
|
}
|
||
|
|
||
|
// NewTransitionToProgramRequest returns a new TransitionToProgramRequest.
|
||
|
func NewTransitionToProgramRequest(
|
||
|
withTransition map[string]interface{},
|
||
|
withTransitionName string,
|
||
|
withTransitionDuration int,
|
||
|
) TransitionToProgramRequest {
|
||
|
return TransitionToProgramRequest{
|
||
|
withTransition,
|
||
|
withTransitionName,
|
||
|
withTransitionDuration,
|
||
|
_request{
|
||
|
ID_: getMessageID(),
|
||
|
Type_: "TransitionToProgram",
|
||
|
err: make(chan error, 1),
|
||
|
},
|
||
|
make(chan TransitionToProgramResponse, 1),
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Send sends the request.
|
||
|
func (r *TransitionToProgramRequest) Send(c *Client) error {
|
||
|
if r.sent {
|
||
|
return ErrAlreadySent
|
||
|
}
|
||
|
future, err := c.sendRequest(r)
|
||
|
if err != nil {
|
||
|
return err
|
||
|
}
|
||
|
r.sent = true
|
||
|
go func() {
|
||
|
m := <-future
|
||
|
var resp TransitionToProgramResponse
|
||
|
if err = mapToStruct(m, &resp); err != nil {
|
||
|
r.err <- err
|
||
|
} else if resp.Status() != StatusOK {
|
||
|
r.err <- errors.New(resp.Error())
|
||
|
} else {
|
||
|
r.response <- resp
|
||
|
}
|
||
|
}()
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
// Receive waits for the response.
|
||
|
func (r TransitionToProgramRequest) Receive() (TransitionToProgramResponse, error) {
|
||
|
if !r.sent {
|
||
|
return TransitionToProgramResponse{}, ErrNotSent
|
||
|
}
|
||
|
if receiveTimeout == 0 {
|
||
|
select {
|
||
|
case resp := <-r.response:
|
||
|
return resp, nil
|
||
|
case err := <-r.err:
|
||
|
return TransitionToProgramResponse{}, err
|
||
|
}
|
||
|
} else {
|
||
|
select {
|
||
|
case resp := <-r.response:
|
||
|
return resp, nil
|
||
|
case err := <-r.err:
|
||
|
return TransitionToProgramResponse{}, err
|
||
|
case <-time.After(receiveTimeout):
|
||
|
return TransitionToProgramResponse{}, ErrReceiveTimeout
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// SendReceive sends the request then immediately waits for the response.
|
||
|
func (r TransitionToProgramRequest) SendReceive(c *Client) (TransitionToProgramResponse, error) {
|
||
|
if err := r.Send(c); err != nil {
|
||
|
return TransitionToProgramResponse{}, err
|
||
|
}
|
||
|
return r.Receive()
|
||
|
}
|
||
|
|
||
|
// TransitionToProgramResponse : Response for TransitionToProgramRequest.
|
||
|
//
|
||
|
// Since obs-websocket version: 4.1.0.
|
||
|
//
|
||
|
// https://github.com/Palakis/obs-websocket/blob/4.3-maintenance/docs/generated/protocol.md#transitiontoprogram
|
||
|
type TransitionToProgramResponse struct {
|
||
|
_response `json:",squash"`
|
||
|
}
|
||
|
|
||
|
// EnableStudioModeRequest : Enables Studio Mode.
|
||
|
//
|
||
|
// Since obs-websocket version: 4.1.0.
|
||
|
//
|
||
|
// https://github.com/Palakis/obs-websocket/blob/4.3-maintenance/docs/generated/protocol.md#enablestudiomode
|
||
|
type EnableStudioModeRequest struct {
|
||
|
_request `json:",squash"`
|
||
|
response chan EnableStudioModeResponse
|
||
|
}
|
||
|
|
||
|
// NewEnableStudioModeRequest returns a new EnableStudioModeRequest.
|
||
|
func NewEnableStudioModeRequest() EnableStudioModeRequest {
|
||
|
return EnableStudioModeRequest{
|
||
|
_request{
|
||
|
ID_: getMessageID(),
|
||
|
Type_: "EnableStudioMode",
|
||
|
err: make(chan error, 1),
|
||
|
},
|
||
|
make(chan EnableStudioModeResponse, 1),
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Send sends the request.
|
||
|
func (r *EnableStudioModeRequest) Send(c *Client) error {
|
||
|
if r.sent {
|
||
|
return ErrAlreadySent
|
||
|
}
|
||
|
future, err := c.sendRequest(r)
|
||
|
if err != nil {
|
||
|
return err
|
||
|
}
|
||
|
r.sent = true
|
||
|
go func() {
|
||
|
m := <-future
|
||
|
var resp EnableStudioModeResponse
|
||
|
if err = mapToStruct(m, &resp); err != nil {
|
||
|
r.err <- err
|
||
|
} else if resp.Status() != StatusOK {
|
||
|
r.err <- errors.New(resp.Error())
|
||
|
} else {
|
||
|
r.response <- resp
|
||
|
}
|
||
|
}()
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
// Receive waits for the response.
|
||
|
func (r EnableStudioModeRequest) Receive() (EnableStudioModeResponse, error) {
|
||
|
if !r.sent {
|
||
|
return EnableStudioModeResponse{}, ErrNotSent
|
||
|
}
|
||
|
if receiveTimeout == 0 {
|
||
|
select {
|
||
|
case resp := <-r.response:
|
||
|
return resp, nil
|
||
|
case err := <-r.err:
|
||
|
return EnableStudioModeResponse{}, err
|
||
|
}
|
||
|
} else {
|
||
|
select {
|
||
|
case resp := <-r.response:
|
||
|
return resp, nil
|
||
|
case err := <-r.err:
|
||
|
return EnableStudioModeResponse{}, err
|
||
|
case <-time.After(receiveTimeout):
|
||
|
return EnableStudioModeResponse{}, ErrReceiveTimeout
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// SendReceive sends the request then immediately waits for the response.
|
||
|
func (r EnableStudioModeRequest) SendReceive(c *Client) (EnableStudioModeResponse, error) {
|
||
|
if err := r.Send(c); err != nil {
|
||
|
return EnableStudioModeResponse{}, err
|
||
|
}
|
||
|
return r.Receive()
|
||
|
}
|
||
|
|
||
|
// EnableStudioModeResponse : Response for EnableStudioModeRequest.
|
||
|
//
|
||
|
// Since obs-websocket version: 4.1.0.
|
||
|
//
|
||
|
// https://github.com/Palakis/obs-websocket/blob/4.3-maintenance/docs/generated/protocol.md#enablestudiomode
|
||
|
type EnableStudioModeResponse struct {
|
||
|
_response `json:",squash"`
|
||
|
}
|
||
|
|
||
|
// DisableStudioModeRequest : Disables Studio Mode.
|
||
|
//
|
||
|
// Since obs-websocket version: 4.1.0.
|
||
|
//
|
||
|
// https://github.com/Palakis/obs-websocket/blob/4.3-maintenance/docs/generated/protocol.md#disablestudiomode
|
||
|
type DisableStudioModeRequest struct {
|
||
|
_request `json:",squash"`
|
||
|
response chan DisableStudioModeResponse
|
||
|
}
|
||
|
|
||
|
// NewDisableStudioModeRequest returns a new DisableStudioModeRequest.
|
||
|
func NewDisableStudioModeRequest() DisableStudioModeRequest {
|
||
|
return DisableStudioModeRequest{
|
||
|
_request{
|
||
|
ID_: getMessageID(),
|
||
|
Type_: "DisableStudioMode",
|
||
|
err: make(chan error, 1),
|
||
|
},
|
||
|
make(chan DisableStudioModeResponse, 1),
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Send sends the request.
|
||
|
func (r *DisableStudioModeRequest) Send(c *Client) error {
|
||
|
if r.sent {
|
||
|
return ErrAlreadySent
|
||
|
}
|
||
|
future, err := c.sendRequest(r)
|
||
|
if err != nil {
|
||
|
return err
|
||
|
}
|
||
|
r.sent = true
|
||
|
go func() {
|
||
|
m := <-future
|
||
|
var resp DisableStudioModeResponse
|
||
|
if err = mapToStruct(m, &resp); err != nil {
|
||
|
r.err <- err
|
||
|
} else if resp.Status() != StatusOK {
|
||
|
r.err <- errors.New(resp.Error())
|
||
|
} else {
|
||
|
r.response <- resp
|
||
|
}
|
||
|
}()
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
// Receive waits for the response.
|
||
|
func (r DisableStudioModeRequest) Receive() (DisableStudioModeResponse, error) {
|
||
|
if !r.sent {
|
||
|
return DisableStudioModeResponse{}, ErrNotSent
|
||
|
}
|
||
|
if receiveTimeout == 0 {
|
||
|
select {
|
||
|
case resp := <-r.response:
|
||
|
return resp, nil
|
||
|
case err := <-r.err:
|
||
|
return DisableStudioModeResponse{}, err
|
||
|
}
|
||
|
} else {
|
||
|
select {
|
||
|
case resp := <-r.response:
|
||
|
return resp, nil
|
||
|
case err := <-r.err:
|
||
|
return DisableStudioModeResponse{}, err
|
||
|
case <-time.After(receiveTimeout):
|
||
|
return DisableStudioModeResponse{}, ErrReceiveTimeout
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// SendReceive sends the request then immediately waits for the response.
|
||
|
func (r DisableStudioModeRequest) SendReceive(c *Client) (DisableStudioModeResponse, error) {
|
||
|
if err := r.Send(c); err != nil {
|
||
|
return DisableStudioModeResponse{}, err
|
||
|
}
|
||
|
return r.Receive()
|
||
|
}
|
||
|
|
||
|
// DisableStudioModeResponse : Response for DisableStudioModeRequest.
|
||
|
//
|
||
|
// Since obs-websocket version: 4.1.0.
|
||
|
//
|
||
|
// https://github.com/Palakis/obs-websocket/blob/4.3-maintenance/docs/generated/protocol.md#disablestudiomode
|
||
|
type DisableStudioModeResponse struct {
|
||
|
_response `json:",squash"`
|
||
|
}
|
||
|
|
||
|
// ToggleStudioModeRequest : Toggles Studio Mode.
|
||
|
//
|
||
|
// Since obs-websocket version: 4.1.0.
|
||
|
//
|
||
|
// https://github.com/Palakis/obs-websocket/blob/4.3-maintenance/docs/generated/protocol.md#togglestudiomode
|
||
|
type ToggleStudioModeRequest struct {
|
||
|
_request `json:",squash"`
|
||
|
response chan ToggleStudioModeResponse
|
||
|
}
|
||
|
|
||
|
// NewToggleStudioModeRequest returns a new ToggleStudioModeRequest.
|
||
|
func NewToggleStudioModeRequest() ToggleStudioModeRequest {
|
||
|
return ToggleStudioModeRequest{
|
||
|
_request{
|
||
|
ID_: getMessageID(),
|
||
|
Type_: "ToggleStudioMode",
|
||
|
err: make(chan error, 1),
|
||
|
},
|
||
|
make(chan ToggleStudioModeResponse, 1),
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Send sends the request.
|
||
|
func (r *ToggleStudioModeRequest) Send(c *Client) error {
|
||
|
if r.sent {
|
||
|
return ErrAlreadySent
|
||
|
}
|
||
|
future, err := c.sendRequest(r)
|
||
|
if err != nil {
|
||
|
return err
|
||
|
}
|
||
|
r.sent = true
|
||
|
go func() {
|
||
|
m := <-future
|
||
|
var resp ToggleStudioModeResponse
|
||
|
if err = mapToStruct(m, &resp); err != nil {
|
||
|
r.err <- err
|
||
|
} else if resp.Status() != StatusOK {
|
||
|
r.err <- errors.New(resp.Error())
|
||
|
} else {
|
||
|
r.response <- resp
|
||
|
}
|
||
|
}()
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
// Receive waits for the response.
|
||
|
func (r ToggleStudioModeRequest) Receive() (ToggleStudioModeResponse, error) {
|
||
|
if !r.sent {
|
||
|
return ToggleStudioModeResponse{}, ErrNotSent
|
||
|
}
|
||
|
if receiveTimeout == 0 {
|
||
|
select {
|
||
|
case resp := <-r.response:
|
||
|
return resp, nil
|
||
|
case err := <-r.err:
|
||
|
return ToggleStudioModeResponse{}, err
|
||
|
}
|
||
|
} else {
|
||
|
select {
|
||
|
case resp := <-r.response:
|
||
|
return resp, nil
|
||
|
case err := <-r.err:
|
||
|
return ToggleStudioModeResponse{}, err
|
||
|
case <-time.After(receiveTimeout):
|
||
|
return ToggleStudioModeResponse{}, ErrReceiveTimeout
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// SendReceive sends the request then immediately waits for the response.
|
||
|
func (r ToggleStudioModeRequest) SendReceive(c *Client) (ToggleStudioModeResponse, error) {
|
||
|
if err := r.Send(c); err != nil {
|
||
|
return ToggleStudioModeResponse{}, err
|
||
|
}
|
||
|
return r.Receive()
|
||
|
}
|
||
|
|
||
|
// ToggleStudioModeResponse : Response for ToggleStudioModeRequest.
|
||
|
//
|
||
|
// Since obs-websocket version: 4.1.0.
|
||
|
//
|
||
|
// https://github.com/Palakis/obs-websocket/blob/4.3-maintenance/docs/generated/protocol.md#togglestudiomode
|
||
|
type ToggleStudioModeResponse struct {
|
||
|
_response `json:",squash"`
|
||
|
}
|