diff --git a/src/requesthandler/RequestHandler.cpp b/src/requesthandler/RequestHandler.cpp index e99981ae..9de89965 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 92a4d947..0b814cc2 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 0c5024a0..c8598dc4 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. *