package obsws import ( "errors" "time" ) // This file is automatically generated. // https://github.com/christopher-dG/go-obs-websocket/blob/master/codegen/protocol.py // GetVersionRequest : Returns the latest version of the plugin and the API. // // Since obs-websocket version: 0.3. // // https://github.com/Palakis/obs-websocket/blob/4.3-maintenance/docs/generated/protocol.md#getversion type GetVersionRequest struct { _request `json:",squash"` response chan GetVersionResponse } // NewGetVersionRequest returns a new GetVersionRequest. func NewGetVersionRequest() GetVersionRequest { return GetVersionRequest{ _request{ ID_: getMessageID(), Type_: "GetVersion", err: make(chan error, 1), }, make(chan GetVersionResponse, 1), } } // Send sends the request. func (r *GetVersionRequest) 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 GetVersionResponse 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 GetVersionRequest) Receive() (GetVersionResponse, error) { if !r.sent { return GetVersionResponse{}, ErrNotSent } if receiveTimeout == 0 { select { case resp := <-r.response: return resp, nil case err := <-r.err: return GetVersionResponse{}, err } } else { select { case resp := <-r.response: return resp, nil case err := <-r.err: return GetVersionResponse{}, err case <-time.After(receiveTimeout): return GetVersionResponse{}, ErrReceiveTimeout } } } // SendReceive sends the request then immediately waits for the response. func (r GetVersionRequest) SendReceive(c *Client) (GetVersionResponse, error) { if err := r.Send(c); err != nil { return GetVersionResponse{}, err } return r.Receive() } // GetVersionResponse : Response for GetVersionRequest. // // Since obs-websocket version: 0.3. // // https://github.com/Palakis/obs-websocket/blob/4.3-maintenance/docs/generated/protocol.md#getversion type GetVersionResponse struct { // OBSRemote compatible API version. // Fixed to 1.1 for retrocompatibility. // Required: Yes. Version float64 `json:"version"` // obs-websocket plugin version. // Required: Yes. OBSWebsocketVersion string `json:"obs-websocket-version"` // OBS Studio program version. // Required: Yes. OBSStudioVersion string `json:"obs-studio-version"` // List of available request types, formatted as a comma-separated list string (e.g. : "Method1,Method2,Method3"). // Required: Yes. AvailableRequests string `json:"available-requests"` _response `json:",squash"` } // GetAuthRequiredRequest : Tells the client if authentication is required // If so, returns authentication parameters `challenge` // and `salt` (see "Authentication" for more information). // // Since obs-websocket version: 0.3. // // https://github.com/Palakis/obs-websocket/blob/4.3-maintenance/docs/generated/protocol.md#getauthrequired type GetAuthRequiredRequest struct { _request `json:",squash"` response chan GetAuthRequiredResponse } // NewGetAuthRequiredRequest returns a new GetAuthRequiredRequest. func NewGetAuthRequiredRequest() GetAuthRequiredRequest { return GetAuthRequiredRequest{ _request{ ID_: getMessageID(), Type_: "GetAuthRequired", err: make(chan error, 1), }, make(chan GetAuthRequiredResponse, 1), } } // Send sends the request. func (r *GetAuthRequiredRequest) 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 GetAuthRequiredResponse 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 GetAuthRequiredRequest) Receive() (GetAuthRequiredResponse, error) { if !r.sent { return GetAuthRequiredResponse{}, ErrNotSent } if receiveTimeout == 0 { select { case resp := <-r.response: return resp, nil case err := <-r.err: return GetAuthRequiredResponse{}, err } } else { select { case resp := <-r.response: return resp, nil case err := <-r.err: return GetAuthRequiredResponse{}, err case <-time.After(receiveTimeout): return GetAuthRequiredResponse{}, ErrReceiveTimeout } } } // SendReceive sends the request then immediately waits for the response. func (r GetAuthRequiredRequest) SendReceive(c *Client) (GetAuthRequiredResponse, error) { if err := r.Send(c); err != nil { return GetAuthRequiredResponse{}, err } return r.Receive() } // GetAuthRequiredResponse : Response for GetAuthRequiredRequest. // // Since obs-websocket version: 0.3. // // https://github.com/Palakis/obs-websocket/blob/4.3-maintenance/docs/generated/protocol.md#getauthrequired type GetAuthRequiredResponse struct { // Indicates whether authentication is required. // Required: Yes. AuthRequired bool `json:"authRequired"` // Required: No. Challenge string `json:"challenge"` // Required: No. Salt string `json:"salt"` _response `json:",squash"` } // AuthenticateRequest : Attempt to authenticate the client to the server. // // Since obs-websocket version: 0.3. // // https://github.com/Palakis/obs-websocket/blob/4.3-maintenance/docs/generated/protocol.md#authenticate type AuthenticateRequest struct { // Response to the auth challenge (see "Authentication" for more information). // Required: Yes. Auth string `json:"auth"` _request `json:",squash"` response chan AuthenticateResponse } // NewAuthenticateRequest returns a new AuthenticateRequest. func NewAuthenticateRequest(auth string) AuthenticateRequest { return AuthenticateRequest{ auth, _request{ ID_: getMessageID(), Type_: "Authenticate", err: make(chan error, 1), }, make(chan AuthenticateResponse, 1), } } // Send sends the request. func (r *AuthenticateRequest) 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 AuthenticateResponse 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 AuthenticateRequest) Receive() (AuthenticateResponse, error) { if !r.sent { return AuthenticateResponse{}, ErrNotSent } if receiveTimeout == 0 { select { case resp := <-r.response: return resp, nil case err := <-r.err: return AuthenticateResponse{}, err } } else { select { case resp := <-r.response: return resp, nil case err := <-r.err: return AuthenticateResponse{}, err case <-time.After(receiveTimeout): return AuthenticateResponse{}, ErrReceiveTimeout } } } // SendReceive sends the request then immediately waits for the response. func (r AuthenticateRequest) SendReceive(c *Client) (AuthenticateResponse, error) { if err := r.Send(c); err != nil { return AuthenticateResponse{}, err } return r.Receive() } // AuthenticateResponse : Response for AuthenticateRequest. // // Since obs-websocket version: 0.3. // // https://github.com/Palakis/obs-websocket/blob/4.3-maintenance/docs/generated/protocol.md#authenticate type AuthenticateResponse struct { _response `json:",squash"` } // SetHeartbeatRequest : Enable/disable sending of the Heartbeat event. // // Since obs-websocket version: 4.3.0. // // https://github.com/Palakis/obs-websocket/blob/4.3-maintenance/docs/generated/protocol.md#setheartbeat type SetHeartbeatRequest struct { // Starts/Stops emitting heartbeat messages. // Required: Yes. Enable bool `json:"enable"` _request `json:",squash"` response chan SetHeartbeatResponse } // NewSetHeartbeatRequest returns a new SetHeartbeatRequest. func NewSetHeartbeatRequest(enable bool) SetHeartbeatRequest { return SetHeartbeatRequest{ enable, _request{ ID_: getMessageID(), Type_: "SetHeartbeat", err: make(chan error, 1), }, make(chan SetHeartbeatResponse, 1), } } // Send sends the request. func (r *SetHeartbeatRequest) 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 SetHeartbeatResponse 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 SetHeartbeatRequest) Receive() (SetHeartbeatResponse, error) { if !r.sent { return SetHeartbeatResponse{}, ErrNotSent } if receiveTimeout == 0 { select { case resp := <-r.response: return resp, nil case err := <-r.err: return SetHeartbeatResponse{}, err } } else { select { case resp := <-r.response: return resp, nil case err := <-r.err: return SetHeartbeatResponse{}, err case <-time.After(receiveTimeout): return SetHeartbeatResponse{}, ErrReceiveTimeout } } } // SendReceive sends the request then immediately waits for the response. func (r SetHeartbeatRequest) SendReceive(c *Client) (SetHeartbeatResponse, error) { if err := r.Send(c); err != nil { return SetHeartbeatResponse{}, err } return r.Receive() } // SetHeartbeatResponse : Response for SetHeartbeatRequest. // // Since obs-websocket version: 4.3.0. // // https://github.com/Palakis/obs-websocket/blob/4.3-maintenance/docs/generated/protocol.md#setheartbeat type SetHeartbeatResponse struct { _response `json:",squash"` } // SetFilenameFormattingRequest : Set the filename formatting string. // // Since obs-websocket version: 4.3.0. // // https://github.com/Palakis/obs-websocket/blob/4.3-maintenance/docs/generated/protocol.md#setfilenameformatting type SetFilenameFormattingRequest struct { // Filename formatting string to set. // Required: Yes. FilenameFormatting string `json:"filename-formatting"` _request `json:",squash"` response chan SetFilenameFormattingResponse } // NewSetFilenameFormattingRequest returns a new SetFilenameFormattingRequest. func NewSetFilenameFormattingRequest(filenameFormatting string) SetFilenameFormattingRequest { return SetFilenameFormattingRequest{ filenameFormatting, _request{ ID_: getMessageID(), Type_: "SetFilenameFormatting", err: make(chan error, 1), }, make(chan SetFilenameFormattingResponse, 1), } } // Send sends the request. func (r *SetFilenameFormattingRequest) 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 SetFilenameFormattingResponse 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 SetFilenameFormattingRequest) Receive() (SetFilenameFormattingResponse, error) { if !r.sent { return SetFilenameFormattingResponse{}, ErrNotSent } if receiveTimeout == 0 { select { case resp := <-r.response: return resp, nil case err := <-r.err: return SetFilenameFormattingResponse{}, err } } else { select { case resp := <-r.response: return resp, nil case err := <-r.err: return SetFilenameFormattingResponse{}, err case <-time.After(receiveTimeout): return SetFilenameFormattingResponse{}, ErrReceiveTimeout } } } // SendReceive sends the request then immediately waits for the response. func (r SetFilenameFormattingRequest) SendReceive(c *Client) (SetFilenameFormattingResponse, error) { if err := r.Send(c); err != nil { return SetFilenameFormattingResponse{}, err } return r.Receive() } // SetFilenameFormattingResponse : Response for SetFilenameFormattingRequest. // // Since obs-websocket version: 4.3.0. // // https://github.com/Palakis/obs-websocket/blob/4.3-maintenance/docs/generated/protocol.md#setfilenameformatting type SetFilenameFormattingResponse struct { _response `json:",squash"` } // GetFilenameFormattingRequest : Get the filename formatting string. // // Since obs-websocket version: 4.3.0. // // https://github.com/Palakis/obs-websocket/blob/4.3-maintenance/docs/generated/protocol.md#getfilenameformatting type GetFilenameFormattingRequest struct { _request `json:",squash"` response chan GetFilenameFormattingResponse } // NewGetFilenameFormattingRequest returns a new GetFilenameFormattingRequest. func NewGetFilenameFormattingRequest() GetFilenameFormattingRequest { return GetFilenameFormattingRequest{ _request{ ID_: getMessageID(), Type_: "GetFilenameFormatting", err: make(chan error, 1), }, make(chan GetFilenameFormattingResponse, 1), } } // Send sends the request. func (r *GetFilenameFormattingRequest) 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 GetFilenameFormattingResponse 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 GetFilenameFormattingRequest) Receive() (GetFilenameFormattingResponse, error) { if !r.sent { return GetFilenameFormattingResponse{}, ErrNotSent } if receiveTimeout == 0 { select { case resp := <-r.response: return resp, nil case err := <-r.err: return GetFilenameFormattingResponse{}, err } } else { select { case resp := <-r.response: return resp, nil case err := <-r.err: return GetFilenameFormattingResponse{}, err case <-time.After(receiveTimeout): return GetFilenameFormattingResponse{}, ErrReceiveTimeout } } } // SendReceive sends the request then immediately waits for the response. func (r GetFilenameFormattingRequest) SendReceive(c *Client) (GetFilenameFormattingResponse, error) { if err := r.Send(c); err != nil { return GetFilenameFormattingResponse{}, err } return r.Receive() } // GetFilenameFormattingResponse : Response for GetFilenameFormattingRequest. // // Since obs-websocket version: 4.3.0. // // https://github.com/Palakis/obs-websocket/blob/4.3-maintenance/docs/generated/protocol.md#getfilenameformatting type GetFilenameFormattingResponse struct { // Current filename formatting string. // Required: Yes. FilenameFormatting string `json:"filename-formatting"` _response `json:",squash"` }