package obsws import ( "errors" "time" ) // This file is automatically generated. // https://github.com/christopher-dG/go-obs-websocket/blob/master/codegen/protocol.py // GetSceneItemPropertiesRequest : Gets the scene specific properties of the specified source item. // // Since obs-websocket version: 4.3.0. // // https://github.com/Palakis/obs-websocket/blob/4.3-maintenance/docs/generated/protocol.md#getsceneitemproperties type GetSceneItemPropertiesRequest struct { // the name of the scene that the source item belongs to. // Defaults to the current scene. // Required: No. SceneName string `json:"scene-name"` // The name of the source. // Required: Yes. Item string `json:"item"` _request `json:",squash"` response chan GetSceneItemPropertiesResponse } // NewGetSceneItemPropertiesRequest returns a new GetSceneItemPropertiesRequest. func NewGetSceneItemPropertiesRequest( sceneName string, item string, ) GetSceneItemPropertiesRequest { return GetSceneItemPropertiesRequest{ sceneName, item, _request{ ID_: getMessageID(), Type_: "GetSceneItemProperties", err: make(chan error, 1), }, make(chan GetSceneItemPropertiesResponse, 1), } } // Send sends the request. func (r *GetSceneItemPropertiesRequest) 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 GetSceneItemPropertiesResponse 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 GetSceneItemPropertiesRequest) Receive() (GetSceneItemPropertiesResponse, error) { if !r.sent { return GetSceneItemPropertiesResponse{}, ErrNotSent } if receiveTimeout == 0 { select { case resp := <-r.response: return resp, nil case err := <-r.err: return GetSceneItemPropertiesResponse{}, err } } else { select { case resp := <-r.response: return resp, nil case err := <-r.err: return GetSceneItemPropertiesResponse{}, err case <-time.After(receiveTimeout): return GetSceneItemPropertiesResponse{}, ErrReceiveTimeout } } } // SendReceive sends the request then immediately waits for the response. func (r GetSceneItemPropertiesRequest) SendReceive(c *Client) (GetSceneItemPropertiesResponse, error) { if err := r.Send(c); err != nil { return GetSceneItemPropertiesResponse{}, err } return r.Receive() } // GetSceneItemPropertiesResponse : Response for GetSceneItemPropertiesRequest. // // Since obs-websocket version: 4.3.0. // // https://github.com/Palakis/obs-websocket/blob/4.3-maintenance/docs/generated/protocol.md#getsceneitemproperties type GetSceneItemPropertiesResponse struct { // The name of the source. // Required: Yes. Name string `json:"name"` // The x position of the source from the left. // Required: Yes. PositionX int `json:"position.x"` // The y position of the source from the top. // Required: Yes. PositionY int `json:"position.y"` // The point on the source that the item is manipulated from. // Required: Yes. PositionAlignment int `json:"position.alignment"` // The clockwise rotation of the item in degrees around the point of alignment. // Required: Yes. Rotation float64 `json:"rotation"` // The x-scale factor of the source. // Required: Yes. ScaleX float64 `json:"scale.x"` // The y-scale factor of the source. // Required: Yes. ScaleY float64 `json:"scale.y"` // The number of pixels cropped off the top of the source before scaling. // Required: Yes. CropTop int `json:"crop.top"` // The number of pixels cropped off the right of the source before scaling. // Required: Yes. CropRight int `json:"crop.right"` // The number of pixels cropped off the bottom of the source before scaling. // Required: Yes. CropBottom int `json:"crop.bottom"` // The number of pixels cropped off the left of the source before scaling. // Required: Yes. CropLeft int `json:"crop.left"` // If the source is visible. // Required: Yes. Visible bool `json:"visible"` // Type of bounding box. // Required: Yes. BoundsType string `json:"bounds.type"` // Alignment of the bounding box. // Required: Yes. BoundsAlignment int `json:"bounds.alignment"` // Width of the bounding box. // Required: Yes. BoundsX float64 `json:"bounds.x"` // Height of the bounding box. // Required: Yes. BoundsY float64 `json:"bounds.y"` _response `json:",squash"` } // SetSceneItemPropertiesRequest : Sets the scene specific properties of a source // Unspecified properties will remain unchanged. // // Since obs-websocket version: 4.3.0. // // https://github.com/Palakis/obs-websocket/blob/4.3-maintenance/docs/generated/protocol.md#setsceneitemproperties type SetSceneItemPropertiesRequest struct { // the name of the scene that the source item belongs to. // Defaults to the current scene. // Required: No. SceneName string `json:"scene-name"` // The name of the source. // Required: Yes. Item string `json:"item"` // The new x position of the source. // Required: Yes. PositionX int `json:"position.x"` // The new y position of the source. // Required: Yes. PositionY int `json:"position.y"` // The new alignment of the source. // Required: Yes. PositionAlignment int `json:"position.alignment"` // The new clockwise rotation of the item in degrees. // Required: Yes. Rotation float64 `json:"rotation"` // The new x scale of the item. // Required: Yes. ScaleX float64 `json:"scale.x"` // The new y scale of the item. // Required: Yes. ScaleY float64 `json:"scale.y"` // The new amount of pixels cropped off the top of the source before scaling. // Required: Yes. CropTop int `json:"crop.top"` // The new amount of pixels cropped off the bottom of the source before scaling. // Required: Yes. CropBottom int `json:"crop.bottom"` // The new amount of pixels cropped off the left of the source before scaling. // Required: Yes. CropLeft int `json:"crop.left"` // The new amount of pixels cropped off the right of the source before scaling. // Required: Yes. CropRight int `json:"crop.right"` // The new visibility of the source. // 'true' shows source, 'false' hides source. // Required: Yes. Visible bool `json:"visible"` // The new bounds type of the source. // Required: Yes. BoundsType string `json:"bounds.type"` // The new alignment of the bounding box. // (0-2, 4-6, 8-10). // Required: Yes. BoundsAlignment int `json:"bounds.alignment"` // The new width of the bounding box. // Required: Yes. BoundsX float64 `json:"bounds.x"` // The new height of the bounding box. // Required: Yes. BoundsY float64 `json:"bounds.y"` _request `json:",squash"` response chan SetSceneItemPropertiesResponse } // NewSetSceneItemPropertiesRequest returns a new SetSceneItemPropertiesRequest. func NewSetSceneItemPropertiesRequest( sceneName string, item string, positionX int, positionY int, positionAlignment int, rotation float64, scaleX float64, scaleY float64, cropTop int, cropBottom int, cropLeft int, cropRight int, visible bool, boundsType string, boundsAlignment int, boundsX float64, boundsY float64, ) SetSceneItemPropertiesRequest { return SetSceneItemPropertiesRequest{ sceneName, item, positionX, positionY, positionAlignment, rotation, scaleX, scaleY, cropTop, cropBottom, cropLeft, cropRight, visible, boundsType, boundsAlignment, boundsX, boundsY, _request{ ID_: getMessageID(), Type_: "SetSceneItemProperties", err: make(chan error, 1), }, make(chan SetSceneItemPropertiesResponse, 1), } } // Send sends the request. func (r *SetSceneItemPropertiesRequest) 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 SetSceneItemPropertiesResponse 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 SetSceneItemPropertiesRequest) Receive() (SetSceneItemPropertiesResponse, error) { if !r.sent { return SetSceneItemPropertiesResponse{}, ErrNotSent } if receiveTimeout == 0 { select { case resp := <-r.response: return resp, nil case err := <-r.err: return SetSceneItemPropertiesResponse{}, err } } else { select { case resp := <-r.response: return resp, nil case err := <-r.err: return SetSceneItemPropertiesResponse{}, err case <-time.After(receiveTimeout): return SetSceneItemPropertiesResponse{}, ErrReceiveTimeout } } } // SendReceive sends the request then immediately waits for the response. func (r SetSceneItemPropertiesRequest) SendReceive(c *Client) (SetSceneItemPropertiesResponse, error) { if err := r.Send(c); err != nil { return SetSceneItemPropertiesResponse{}, err } return r.Receive() } // SetSceneItemPropertiesResponse : Response for SetSceneItemPropertiesRequest. // // Since obs-websocket version: 4.3.0. // // https://github.com/Palakis/obs-websocket/blob/4.3-maintenance/docs/generated/protocol.md#setsceneitemproperties type SetSceneItemPropertiesResponse struct { _response `json:",squash"` } // ResetSceneItemRequest : Reset a scene item. // // Since obs-websocket version: 4.2.0. // // https://github.com/Palakis/obs-websocket/blob/4.3-maintenance/docs/generated/protocol.md#resetsceneitem type ResetSceneItemRequest struct { // Name of the scene the source belongs to. // Defaults to the current scene. // Required: No. SceneName string `json:"scene-name"` // Name of the source item. // Required: Yes. Item string `json:"item"` _request `json:",squash"` response chan ResetSceneItemResponse } // NewResetSceneItemRequest returns a new ResetSceneItemRequest. func NewResetSceneItemRequest( sceneName string, item string, ) ResetSceneItemRequest { return ResetSceneItemRequest{ sceneName, item, _request{ ID_: getMessageID(), Type_: "ResetSceneItem", err: make(chan error, 1), }, make(chan ResetSceneItemResponse, 1), } } // Send sends the request. func (r *ResetSceneItemRequest) 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 ResetSceneItemResponse 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 ResetSceneItemRequest) Receive() (ResetSceneItemResponse, error) { if !r.sent { return ResetSceneItemResponse{}, ErrNotSent } if receiveTimeout == 0 { select { case resp := <-r.response: return resp, nil case err := <-r.err: return ResetSceneItemResponse{}, err } } else { select { case resp := <-r.response: return resp, nil case err := <-r.err: return ResetSceneItemResponse{}, err case <-time.After(receiveTimeout): return ResetSceneItemResponse{}, ErrReceiveTimeout } } } // SendReceive sends the request then immediately waits for the response. func (r ResetSceneItemRequest) SendReceive(c *Client) (ResetSceneItemResponse, error) { if err := r.Send(c); err != nil { return ResetSceneItemResponse{}, err } return r.Receive() } // ResetSceneItemResponse : Response for ResetSceneItemRequest. // // Since obs-websocket version: 4.2.0. // // https://github.com/Palakis/obs-websocket/blob/4.3-maintenance/docs/generated/protocol.md#resetsceneitem type ResetSceneItemResponse struct { _response `json:",squash"` } // SetSceneItemRenderRequest : Show or hide a specified source item in a specified scene. // // Since obs-websocket version: 0.3. // // https://github.com/Palakis/obs-websocket/blob/4.3-maintenance/docs/generated/protocol.md#setsceneitemrender type SetSceneItemRenderRequest struct { // Scene item name in the specified scene. // Required: Yes. Source string `json:"source"` // true = shown ; false = hidden. // Required: Yes. Render bool `json:"render"` // Name of the scene where the source resides. // Defaults to the currently active scene. // Required: No. SceneName string `json:"scene-name"` _request `json:",squash"` response chan SetSceneItemRenderResponse } // NewSetSceneItemRenderRequest returns a new SetSceneItemRenderRequest. func NewSetSceneItemRenderRequest( source string, render bool, sceneName string, ) SetSceneItemRenderRequest { return SetSceneItemRenderRequest{ source, render, sceneName, _request{ ID_: getMessageID(), Type_: "SetSceneItemRender", err: make(chan error, 1), }, make(chan SetSceneItemRenderResponse, 1), } } // Send sends the request. func (r *SetSceneItemRenderRequest) 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 SetSceneItemRenderResponse 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 SetSceneItemRenderRequest) Receive() (SetSceneItemRenderResponse, error) { if !r.sent { return SetSceneItemRenderResponse{}, ErrNotSent } if receiveTimeout == 0 { select { case resp := <-r.response: return resp, nil case err := <-r.err: return SetSceneItemRenderResponse{}, err } } else { select { case resp := <-r.response: return resp, nil case err := <-r.err: return SetSceneItemRenderResponse{}, err case <-time.After(receiveTimeout): return SetSceneItemRenderResponse{}, ErrReceiveTimeout } } } // SendReceive sends the request then immediately waits for the response. func (r SetSceneItemRenderRequest) SendReceive(c *Client) (SetSceneItemRenderResponse, error) { if err := r.Send(c); err != nil { return SetSceneItemRenderResponse{}, err } return r.Receive() } // SetSceneItemRenderResponse : Response for SetSceneItemRenderRequest. // // Since obs-websocket version: 0.3. // // https://github.com/Palakis/obs-websocket/blob/4.3-maintenance/docs/generated/protocol.md#setsceneitemrender type SetSceneItemRenderResponse struct { _response `json:",squash"` } // SetSceneItemPositionRequest : Sets the coordinates of a specified source item. // // Since obs-websocket version: 4.0.0. // // https://github.com/Palakis/obs-websocket/blob/4.3-maintenance/docs/generated/protocol.md#setsceneitemposition type SetSceneItemPositionRequest struct { // The name of the scene that the source item belongs to. // Defaults to the current scene. // Required: No. SceneName string `json:"scene-name"` // The name of the source item. // Required: Yes. Item string `json:"item"` // X coordinate. // Required: Yes. X float64 `json:"x"` // Y coordinate. // Required: Yes. Y float64 `json:"y"` _request `json:",squash"` response chan SetSceneItemPositionResponse } // NewSetSceneItemPositionRequest returns a new SetSceneItemPositionRequest. func NewSetSceneItemPositionRequest( sceneName string, item string, x float64, y float64, ) SetSceneItemPositionRequest { return SetSceneItemPositionRequest{ sceneName, item, x, y, _request{ ID_: getMessageID(), Type_: "SetSceneItemPosition", err: make(chan error, 1), }, make(chan SetSceneItemPositionResponse, 1), } } // Send sends the request. func (r *SetSceneItemPositionRequest) 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 SetSceneItemPositionResponse 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 SetSceneItemPositionRequest) Receive() (SetSceneItemPositionResponse, error) { if !r.sent { return SetSceneItemPositionResponse{}, ErrNotSent } if receiveTimeout == 0 { select { case resp := <-r.response: return resp, nil case err := <-r.err: return SetSceneItemPositionResponse{}, err } } else { select { case resp := <-r.response: return resp, nil case err := <-r.err: return SetSceneItemPositionResponse{}, err case <-time.After(receiveTimeout): return SetSceneItemPositionResponse{}, ErrReceiveTimeout } } } // SendReceive sends the request then immediately waits for the response. func (r SetSceneItemPositionRequest) SendReceive(c *Client) (SetSceneItemPositionResponse, error) { if err := r.Send(c); err != nil { return SetSceneItemPositionResponse{}, err } return r.Receive() } // SetSceneItemPositionResponse : Response for SetSceneItemPositionRequest. // // Since obs-websocket version: 4.0.0. // // https://github.com/Palakis/obs-websocket/blob/4.3-maintenance/docs/generated/protocol.md#setsceneitemposition type SetSceneItemPositionResponse struct { _response `json:",squash"` } // SetSceneItemTransformRequest : Set the transform of the specified source item. // // Since obs-websocket version: 4.0.0. // // https://github.com/Palakis/obs-websocket/blob/4.3-maintenance/docs/generated/protocol.md#setsceneitemtransform type SetSceneItemTransformRequest struct { // The name of the scene that the source item belongs to. // Defaults to the current scene. // Required: No. SceneName string `json:"scene-name"` // The name of the source item. // Required: Yes. Item string `json:"item"` // Width scale factor. // Required: Yes. XScale float64 `json:"x-scale"` // Height scale factor. // Required: Yes. YScale float64 `json:"y-scale"` // Source item rotation (in degrees). // Required: Yes. Rotation float64 `json:"rotation"` _request `json:",squash"` response chan SetSceneItemTransformResponse } // NewSetSceneItemTransformRequest returns a new SetSceneItemTransformRequest. func NewSetSceneItemTransformRequest( sceneName string, item string, xScale float64, yScale float64, rotation float64, ) SetSceneItemTransformRequest { return SetSceneItemTransformRequest{ sceneName, item, xScale, yScale, rotation, _request{ ID_: getMessageID(), Type_: "SetSceneItemTransform", err: make(chan error, 1), }, make(chan SetSceneItemTransformResponse, 1), } } // Send sends the request. func (r *SetSceneItemTransformRequest) 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 SetSceneItemTransformResponse 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 SetSceneItemTransformRequest) Receive() (SetSceneItemTransformResponse, error) { if !r.sent { return SetSceneItemTransformResponse{}, ErrNotSent } if receiveTimeout == 0 { select { case resp := <-r.response: return resp, nil case err := <-r.err: return SetSceneItemTransformResponse{}, err } } else { select { case resp := <-r.response: return resp, nil case err := <-r.err: return SetSceneItemTransformResponse{}, err case <-time.After(receiveTimeout): return SetSceneItemTransformResponse{}, ErrReceiveTimeout } } } // SendReceive sends the request then immediately waits for the response. func (r SetSceneItemTransformRequest) SendReceive(c *Client) (SetSceneItemTransformResponse, error) { if err := r.Send(c); err != nil { return SetSceneItemTransformResponse{}, err } return r.Receive() } // SetSceneItemTransformResponse : Response for SetSceneItemTransformRequest. // // Since obs-websocket version: 4.0.0. // // https://github.com/Palakis/obs-websocket/blob/4.3-maintenance/docs/generated/protocol.md#setsceneitemtransform type SetSceneItemTransformResponse struct { _response `json:",squash"` } // SetSceneItemCropRequest : Sets the crop coordinates of the specified source item. // // Since obs-websocket version: 4.1.0. // // https://github.com/Palakis/obs-websocket/blob/4.3-maintenance/docs/generated/protocol.md#setsceneitemcrop type SetSceneItemCropRequest struct { // the name of the scene that the source item belongs to. // Defaults to the current scene. // Required: No. SceneName string `json:"scene-name"` // The name of the source. // Required: Yes. Item string `json:"item"` // Pixel position of the top of the source item. // Required: Yes. Top int `json:"top"` // Pixel position of the bottom of the source item. // Required: Yes. Bottom int `json:"bottom"` // Pixel position of the left of the source item. // Required: Yes. Left int `json:"left"` // Pixel position of the right of the source item. // Required: Yes. Right int `json:"right"` _request `json:",squash"` response chan SetSceneItemCropResponse } // NewSetSceneItemCropRequest returns a new SetSceneItemCropRequest. func NewSetSceneItemCropRequest( sceneName string, item string, top int, bottom int, left int, right int, ) SetSceneItemCropRequest { return SetSceneItemCropRequest{ sceneName, item, top, bottom, left, right, _request{ ID_: getMessageID(), Type_: "SetSceneItemCrop", err: make(chan error, 1), }, make(chan SetSceneItemCropResponse, 1), } } // Send sends the request. func (r *SetSceneItemCropRequest) 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 SetSceneItemCropResponse 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 SetSceneItemCropRequest) Receive() (SetSceneItemCropResponse, error) { if !r.sent { return SetSceneItemCropResponse{}, ErrNotSent } if receiveTimeout == 0 { select { case resp := <-r.response: return resp, nil case err := <-r.err: return SetSceneItemCropResponse{}, err } } else { select { case resp := <-r.response: return resp, nil case err := <-r.err: return SetSceneItemCropResponse{}, err case <-time.After(receiveTimeout): return SetSceneItemCropResponse{}, ErrReceiveTimeout } } } // SendReceive sends the request then immediately waits for the response. func (r SetSceneItemCropRequest) SendReceive(c *Client) (SetSceneItemCropResponse, error) { if err := r.Send(c); err != nil { return SetSceneItemCropResponse{}, err } return r.Receive() } // SetSceneItemCropResponse : Response for SetSceneItemCropRequest. // // Since obs-websocket version: 4.1.0. // // https://github.com/Palakis/obs-websocket/blob/4.3-maintenance/docs/generated/protocol.md#setsceneitemcrop type SetSceneItemCropResponse struct { _response `json:",squash"` }