mirror of
https://github.com/Palakis/obs-websocket.git
synced 2024-08-30 18:12:16 +00:00
Merge pull request #605 from Palakis/feature/get-set-transition-settings
Get/Set Transition Settings
This commit is contained in:
commit
3d7511ca75
@ -28,7 +28,7 @@
|
|||||||
|
|
||||||
using namespace std::placeholders;
|
using namespace std::placeholders;
|
||||||
|
|
||||||
const QHash<QString, RpcMethodHandler> WSRequestHandler::messageMap {
|
const QHash<QString, RpcMethodHandler> WSRequestHandler::messageMap{
|
||||||
{ "GetVersion", &WSRequestHandler::GetVersion },
|
{ "GetVersion", &WSRequestHandler::GetVersion },
|
||||||
{ "GetAuthRequired", &WSRequestHandler::GetAuthRequired },
|
{ "GetAuthRequired", &WSRequestHandler::GetAuthRequired },
|
||||||
{ "Authenticate", &WSRequestHandler::Authenticate },
|
{ "Authenticate", &WSRequestHandler::Authenticate },
|
||||||
@ -96,6 +96,8 @@ const QHash<QString, RpcMethodHandler> WSRequestHandler::messageMap {
|
|||||||
{ "SetTransitionDuration", &WSRequestHandler::SetTransitionDuration },
|
{ "SetTransitionDuration", &WSRequestHandler::SetTransitionDuration },
|
||||||
{ "GetTransitionDuration", &WSRequestHandler::GetTransitionDuration },
|
{ "GetTransitionDuration", &WSRequestHandler::GetTransitionDuration },
|
||||||
{ "GetTransitionPosition", &WSRequestHandler::GetTransitionPosition },
|
{ "GetTransitionPosition", &WSRequestHandler::GetTransitionPosition },
|
||||||
|
{ "GetTransitionSettings", &WSRequestHandler::GetTransitionSettings },
|
||||||
|
{ "SetTransitionSettings", &WSRequestHandler::SetTransitionSettings },
|
||||||
|
|
||||||
{ "SetVolume", &WSRequestHandler::SetVolume },
|
{ "SetVolume", &WSRequestHandler::SetVolume },
|
||||||
{ "GetVolume", &WSRequestHandler::GetVolume },
|
{ "GetVolume", &WSRequestHandler::GetVolume },
|
||||||
|
@ -113,6 +113,8 @@ class WSRequestHandler {
|
|||||||
RpcResponse SetTransitionDuration(const RpcRequest&);
|
RpcResponse SetTransitionDuration(const RpcRequest&);
|
||||||
RpcResponse GetTransitionDuration(const RpcRequest&);
|
RpcResponse GetTransitionDuration(const RpcRequest&);
|
||||||
RpcResponse GetTransitionPosition(const RpcRequest&);
|
RpcResponse GetTransitionPosition(const RpcRequest&);
|
||||||
|
RpcResponse GetTransitionSettings(const RpcRequest&);
|
||||||
|
RpcResponse SetTransitionSettings(const RpcRequest&);
|
||||||
|
|
||||||
RpcResponse SetVolume(const RpcRequest&);
|
RpcResponse SetVolume(const RpcRequest&);
|
||||||
RpcResponse GetVolume(const RpcRequest&);
|
RpcResponse GetVolume(const RpcRequest&);
|
||||||
|
@ -511,6 +511,7 @@ RpcResponse WSRequestHandler::GetSourceSettings(const RpcRequest& request)
|
|||||||
|
|
||||||
const char* sourceName = obs_data_get_string(request.parameters(), "sourceName");
|
const char* sourceName = obs_data_get_string(request.parameters(), "sourceName");
|
||||||
OBSSourceAutoRelease source = obs_get_source_by_name(sourceName);
|
OBSSourceAutoRelease source = obs_get_source_by_name(sourceName);
|
||||||
|
|
||||||
if (!source) {
|
if (!source) {
|
||||||
return request.failed("specified source doesn't exist");
|
return request.failed("specified source doesn't exist");
|
||||||
}
|
}
|
||||||
@ -571,21 +572,17 @@ RpcResponse WSRequestHandler::SetSourceSettings(const RpcRequest& request)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
OBSDataAutoRelease currentSettings = obs_source_get_settings(source);
|
|
||||||
OBSDataAutoRelease newSettings = obs_data_get_obj(request.parameters(), "sourceSettings");
|
OBSDataAutoRelease newSettings = obs_data_get_obj(request.parameters(), "sourceSettings");
|
||||||
|
|
||||||
OBSDataAutoRelease sourceSettings = obs_data_create();
|
obs_source_update(source, newSettings);
|
||||||
obs_data_apply(sourceSettings, currentSettings);
|
|
||||||
obs_data_apply(sourceSettings, newSettings);
|
|
||||||
|
|
||||||
obs_source_update(source, sourceSettings);
|
|
||||||
obs_source_update_properties(source);
|
obs_source_update_properties(source);
|
||||||
|
|
||||||
|
OBSDataAutoRelease updatedSettings = obs_source_get_settings(source);
|
||||||
|
|
||||||
OBSDataAutoRelease response = obs_data_create();
|
OBSDataAutoRelease response = obs_data_create();
|
||||||
obs_data_set_string(response, "sourceName", obs_source_get_name(source));
|
obs_data_set_string(response, "sourceName", obs_source_get_name(source));
|
||||||
obs_data_set_string(response, "sourceType", obs_source_get_id(source));
|
obs_data_set_string(response, "sourceType", obs_source_get_id(source));
|
||||||
obs_data_set_obj(response, "sourceSettings", sourceSettings);
|
obs_data_set_obj(response, "sourceSettings", updatedSettings);
|
||||||
|
|
||||||
return request.success(response);
|
return request.success(response);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -139,3 +139,68 @@ RpcResponse WSRequestHandler::GetTransitionPosition(const RpcRequest& request) {
|
|||||||
|
|
||||||
return request.success(response);
|
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);
|
||||||
|
return request.success(response);
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user