From 1d0db34bb2b65c0910334a648b02426994fe1e8e Mon Sep 17 00:00:00 2001 From: tt2468 Date: Thu, 18 Jan 2024 16:01:41 -0800 Subject: [PATCH] requesthandler: Add `GetSceneItemSourceName` request Closes #1122 --- src/requesthandler/RequestHandler.cpp | 1 + src/requesthandler/RequestHandler.h | 1 + .../RequestHandler_SceneItems.cpp | 31 +++++++++++++++++++ 3 files changed, 33 insertions(+) diff --git a/src/requesthandler/RequestHandler.cpp b/src/requesthandler/RequestHandler.cpp index e99981aeb..9de89965b 100644 --- a/src/requesthandler/RequestHandler.cpp +++ b/src/requesthandler/RequestHandler.cpp @@ -126,6 +126,7 @@ const std::unordered_map RequestHandler::_han {"GetSceneItemList", &RequestHandler::GetSceneItemList}, {"GetGroupSceneItemList", &RequestHandler::GetGroupSceneItemList}, {"GetSceneItemId", &RequestHandler::GetSceneItemId}, + {"GetSceneItemSourceName", &RequestHandler::GetSceneItemSourceName}, {"CreateSceneItem", &RequestHandler::CreateSceneItem}, {"RemoveSceneItem", &RequestHandler::RemoveSceneItem}, {"DuplicateSceneItem", &RequestHandler::DuplicateSceneItem}, diff --git a/src/requesthandler/RequestHandler.h b/src/requesthandler/RequestHandler.h index 92a4d947d..0b814cc2a 100644 --- a/src/requesthandler/RequestHandler.h +++ b/src/requesthandler/RequestHandler.h @@ -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 &); diff --git a/src/requesthandler/RequestHandler_SceneItems.cpp b/src/requesthandler/RequestHandler_SceneItems.cpp index 0c5024a04..c8598dc44 100644 --- a/src/requesthandler/RequestHandler_SceneItems.cpp +++ b/src/requesthandler/RequestHandler_SceneItems.cpp @@ -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. *