mirror of
https://github.com/Palakis/obs-websocket.git
synced 2024-08-30 18:12:16 +00:00
RequestHandler: Add SetInputSettings
This commit is contained in:
parent
ce8f393eb8
commit
d6aeeeea0c
@ -42,6 +42,7 @@ const std::map<std::string, RequestMethodHandler> RequestHandler::_handlerMap
|
|||||||
{"GetInputKindList", &RequestHandler::GetInputKindList},
|
{"GetInputKindList", &RequestHandler::GetInputKindList},
|
||||||
{"GetInputDefaultSettings", &RequestHandler::GetInputDefaultSettings},
|
{"GetInputDefaultSettings", &RequestHandler::GetInputDefaultSettings},
|
||||||
{"GetInputSettings", &RequestHandler::GetInputSettings},
|
{"GetInputSettings", &RequestHandler::GetInputSettings},
|
||||||
|
{"SetInputSettings", &RequestHandler::SetInputSettings},
|
||||||
};
|
};
|
||||||
|
|
||||||
RequestResult RequestHandler::ProcessRequest(const Request& request)
|
RequestResult RequestHandler::ProcessRequest(const Request& request)
|
||||||
|
@ -56,6 +56,7 @@ class RequestHandler {
|
|||||||
RequestResult GetInputKindList(const Request&);
|
RequestResult GetInputKindList(const Request&);
|
||||||
RequestResult GetInputDefaultSettings(const Request&);
|
RequestResult GetInputDefaultSettings(const Request&);
|
||||||
RequestResult GetInputSettings(const Request&);
|
RequestResult GetInputSettings(const Request&);
|
||||||
|
RequestResult SetInputSettings(const Request&);
|
||||||
|
|
||||||
static const std::map<std::string, RequestMethodHandler> _handlerMap;
|
static const std::map<std::string, RequestMethodHandler> _handlerMap;
|
||||||
};
|
};
|
||||||
|
@ -44,9 +44,8 @@ RequestResult RequestHandler::GetInputDefaultSettings(const Request& request)
|
|||||||
{
|
{
|
||||||
RequestStatus::RequestStatus statusCode;
|
RequestStatus::RequestStatus statusCode;
|
||||||
std::string comment;
|
std::string comment;
|
||||||
if (!request.ValidateString("inputKind", statusCode, comment)) {
|
if (!request.ValidateString("inputKind", statusCode, comment))
|
||||||
return RequestResult::Error(statusCode, comment);
|
return RequestResult::Error(statusCode, comment);
|
||||||
}
|
|
||||||
|
|
||||||
std::string inputKind = request.RequestData["inputKind"];
|
std::string inputKind = request.RequestData["inputKind"];
|
||||||
|
|
||||||
@ -74,3 +73,42 @@ RequestResult RequestHandler::GetInputSettings(const Request& request)
|
|||||||
responseData["inputKind"] = obs_source_get_id(input);
|
responseData["inputKind"] = obs_source_get_id(input);
|
||||||
return RequestResult::Success(responseData);
|
return RequestResult::Success(responseData);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
RequestResult RequestHandler::SetInputSettings(const Request& request)
|
||||||
|
{
|
||||||
|
RequestStatus::RequestStatus statusCode;
|
||||||
|
std::string comment;
|
||||||
|
OBSSourceAutoRelease input = request.ValidateInput("inputName", statusCode, comment);
|
||||||
|
if (!input)
|
||||||
|
return RequestResult::Error(statusCode, comment);
|
||||||
|
|
||||||
|
if (!request.ValidateObject("inputSettings", statusCode, comment, true))
|
||||||
|
return RequestResult::Error(statusCode, comment);
|
||||||
|
|
||||||
|
bool overlay = true;
|
||||||
|
if (request.RequestData.contains("overlay") && !request.RequestData["overlay"].is_null()) {
|
||||||
|
if (!request.ValidateBoolean("overlay", statusCode, comment)) {
|
||||||
|
return RequestResult::Error(statusCode, comment);
|
||||||
|
}
|
||||||
|
|
||||||
|
overlay = request.RequestData["overlay"];
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get the new settings and convert it to obs_data_t*
|
||||||
|
OBSDataAutoRelease newSettings = Utils::Json::JsonToObsData(request.RequestData["inputSettings"]);
|
||||||
|
if (!newSettings)
|
||||||
|
// This should never happen
|
||||||
|
return RequestResult::Error(RequestStatus::RequestProcessingFailed, "An internal data conversion operation failed. Please report this!");
|
||||||
|
|
||||||
|
if (overlay)
|
||||||
|
// Applies the new settings on top of the existing user settings
|
||||||
|
obs_source_update(input, newSettings);
|
||||||
|
else
|
||||||
|
// Clears all user settings (leaving defaults) then applies the new settings
|
||||||
|
obs_source_reset_settings(input, newSettings);
|
||||||
|
|
||||||
|
// Tells any open source properties windows to perform a UI refresh
|
||||||
|
obs_source_update_properties(input);
|
||||||
|
|
||||||
|
return RequestResult::Success();
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user