Skip to content

Commit

Permalink
requesthandler: Add GetSceneItemSourceName request
Browse files Browse the repository at this point in the history
Closes #1122
  • Loading branch information
tt2468 committed Jan 19, 2024
1 parent 690726d commit 1d0db34
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 0 deletions.
1 change: 1 addition & 0 deletions src/requesthandler/RequestHandler.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,7 @@ const std::unordered_map<std::string, RequestMethodHandler> RequestHandler::_han
{"GetSceneItemList", &RequestHandler::GetSceneItemList},
{"GetGroupSceneItemList", &RequestHandler::GetGroupSceneItemList},
{"GetSceneItemId", &RequestHandler::GetSceneItemId},
{"GetSceneItemSourceName", &RequestHandler::GetSceneItemSourceName},
{"CreateSceneItem", &RequestHandler::CreateSceneItem},
{"RemoveSceneItem", &RequestHandler::RemoveSceneItem},
{"DuplicateSceneItem", &RequestHandler::DuplicateSceneItem},
Expand Down
1 change: 1 addition & 0 deletions src/requesthandler/RequestHandler.h
Original file line number Diff line number Diff line change
Expand Up @@ -145,6 +145,7 @@ class RequestHandler {
RequestResult GetSceneItemList(const Request &);
RequestResult GetGroupSceneItemList(const Request &);
RequestResult GetSceneItemId(const Request &);
RequestResult GetSceneItemSourceName(const Request &);
RequestResult CreateSceneItem(const Request &);
RequestResult RemoveSceneItem(const Request &);
RequestResult DuplicateSceneItem(const Request &);
Expand Down
31 changes: 31 additions & 0 deletions src/requesthandler/RequestHandler_SceneItems.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,37 @@ RequestResult RequestHandler::GetSceneItemId(const Request &request)
return RequestResult::Success(responseData);
}

/**
* Gets the source name of a scene item.
*
* @requestField sceneName | String | Name of the scene the item is in
* @requestField sceneItemId | Number | Numeric ID of the scene item | >= 0
*
* @responseField sourceName | String | Name of the source associated with the scene item
*
* @requestType GetSceneItemSourceName
* @complexity 3
* @rpcVersion -1
* @initialVersion 5.4.0
* @api requests
* @category scene items
*/
RequestResult RequestHandler::GetSceneItemSourceName(const Request &request)
{
RequestStatus::RequestStatus statusCode;
std::string comment;
OBSSceneItemAutoRelease sceneItem = request.ValidateSceneItem("sceneName", "sceneItemId", statusCode, comment);
if (!sceneItem)
return RequestResult::Error(statusCode, comment);

OBSSource source = obs_sceneitem_get_source(sceneItem);

json responseData;
responseData["sourceName"] = obs_source_get_name(source);

return RequestResult::Success(responseData);
}

/**
* Creates a new scene item using a source.
*
Expand Down

0 comments on commit 1d0db34

Please sign in to comment.