mirror of
https://github.com/Palakis/obs-websocket.git
synced 2024-08-30 18:12:16 +00:00
requests: add GetTransitionSettings and SetTransitionSettings
This commit is contained in:
parent
d9f35a855d
commit
7a31e88ed6
@ -28,7 +28,7 @@
|
||||
|
||||
using namespace std::placeholders;
|
||||
|
||||
const QHash<QString, RpcMethodHandler> WSRequestHandler::messageMap {
|
||||
const QHash<QString, RpcMethodHandler> WSRequestHandler::messageMap{
|
||||
{ "GetVersion", &WSRequestHandler::GetVersion },
|
||||
{ "GetAuthRequired", &WSRequestHandler::GetAuthRequired },
|
||||
{ "Authenticate", &WSRequestHandler::Authenticate },
|
||||
@ -96,6 +96,8 @@ const QHash<QString, RpcMethodHandler> WSRequestHandler::messageMap {
|
||||
{ "SetTransitionDuration", &WSRequestHandler::SetTransitionDuration },
|
||||
{ "GetTransitionDuration", &WSRequestHandler::GetTransitionDuration },
|
||||
{ "GetTransitionPosition", &WSRequestHandler::GetTransitionPosition },
|
||||
{ "GetTransitionSettings", &WSRequestHandler::GetTransitionSettings },
|
||||
{ "SetTransitionSettings", &WSRequestHandler::SetTransitionSettings },
|
||||
|
||||
{ "SetVolume", &WSRequestHandler::SetVolume },
|
||||
{ "GetVolume", &WSRequestHandler::GetVolume },
|
||||
|
@ -113,6 +113,8 @@ class WSRequestHandler {
|
||||
RpcResponse SetTransitionDuration(const RpcRequest&);
|
||||
RpcResponse GetTransitionDuration(const RpcRequest&);
|
||||
RpcResponse GetTransitionPosition(const RpcRequest&);
|
||||
RpcResponse GetTransitionSettings(const RpcRequest&);
|
||||
RpcResponse SetTransitionSettings(const RpcRequest&);
|
||||
|
||||
RpcResponse SetVolume(const RpcRequest&);
|
||||
RpcResponse GetVolume(const RpcRequest&);
|
||||
|
@ -139,3 +139,68 @@ RpcResponse WSRequestHandler::GetTransitionPosition(const RpcRequest& request) {
|
||||
|
||||
return request.success(response);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the current settings of a transition
|
||||
*
|
||||
* @param {String} `transitionName` Transition name
|
||||
*
|
||||
* @return {Object} `transitionSettings` Current transition settings
|
||||
*
|
||||
* @api requests
|
||||
* @name GetTransitionSettings
|
||||
* @category transitions
|
||||
* @since unreleased
|
||||
*/
|
||||
RpcResponse WSRequestHandler::GetTransitionSettings(const RpcRequest& request) {
|
||||
if (!request.hasField("transitionName")) {
|
||||
return request.failed("missing request parameters");
|
||||
}
|
||||
|
||||
const char* transitionName = obs_data_get_string(request.parameters(), "transitionName");
|
||||
OBSSourceAutoRelease transition = Utils::GetTransitionFromName(transitionName);
|
||||
if (!transition) {
|
||||
return request.failed("specified transition doesn't exist");
|
||||
}
|
||||
|
||||
OBSDataAutoRelease transitionSettings = obs_source_get_settings(transition);
|
||||
|
||||
OBSDataAutoRelease response = obs_data_create();
|
||||
obs_data_set_obj(response, "transitionSettings", transitionSettings);
|
||||
return request.success(response);
|
||||
}
|
||||
|
||||
/**
|
||||
* Change the current settings of a transition
|
||||
*
|
||||
* @param {String} `transitionName` Transition name
|
||||
* @param {Object} `transitionSettings` Transition settings (they can be partial)
|
||||
*
|
||||
* @return {Object} `transitionSettings` Updated transition settings
|
||||
*
|
||||
* @api requests
|
||||
* @name SetTransitionSettings
|
||||
* @category transitions
|
||||
* @since unreleased
|
||||
*/
|
||||
RpcResponse WSRequestHandler::SetTransitionSettings(const RpcRequest& request) {
|
||||
if (!request.hasField("transitionName") || !request.hasField("transitionSettings")) {
|
||||
return request.failed("missing request parameters");
|
||||
}
|
||||
|
||||
const char* transitionName = obs_data_get_string(request.parameters(), "transitionName");
|
||||
OBSSourceAutoRelease transition = Utils::GetTransitionFromName(transitionName);
|
||||
if (!transition) {
|
||||
return request.failed("specified transition doesn't exist");
|
||||
}
|
||||
|
||||
OBSDataAutoRelease newSettings = obs_data_get_obj(request.parameters(), "transitionSettings");
|
||||
obs_source_update(transition, newSettings);
|
||||
obs_source_update_properties(transition);
|
||||
|
||||
OBSDataAutoRelease updatedSettings = obs_source_get_settings(transition);
|
||||
|
||||
OBSDataAutoRelease response = obs_data_create();
|
||||
obs_data_set_obj(response, "transitionSettings", updatedSettings); // TODO
|
||||
return request.success(response);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user