mirror of
https://github.com/Palakis/obs-websocket.git
synced 2024-08-30 18:12:16 +00:00
Requests: Reorder some requests
This commit is contained in:
parent
bd289ae751
commit
251e3a28c1
@ -38,13 +38,15 @@ const std::map<std::string, RequestMethodHandler> RequestHandler::_handlerMap
|
|||||||
{"SetCurrentProgramScene", &RequestHandler::SetCurrentProgramScene},
|
{"SetCurrentProgramScene", &RequestHandler::SetCurrentProgramScene},
|
||||||
{"GetCurrentPreviewScene", &RequestHandler::GetCurrentPreviewScene},
|
{"GetCurrentPreviewScene", &RequestHandler::GetCurrentPreviewScene},
|
||||||
{"SetCurrentPreviewScene", &RequestHandler::SetCurrentPreviewScene},
|
{"SetCurrentPreviewScene", &RequestHandler::SetCurrentPreviewScene},
|
||||||
{"SetSceneName", &RequestHandler::SetSceneName},
|
|
||||||
{"CreateScene", &RequestHandler::CreateScene},
|
{"CreateScene", &RequestHandler::CreateScene},
|
||||||
{"RemoveScene", &RequestHandler::RemoveScene},
|
{"RemoveScene", &RequestHandler::RemoveScene},
|
||||||
|
{"SetSceneName", &RequestHandler::SetSceneName},
|
||||||
|
|
||||||
// Inputs
|
// Inputs
|
||||||
{"GetInputList", &RequestHandler::GetInputList},
|
{"GetInputList", &RequestHandler::GetInputList},
|
||||||
{"GetInputKindList", &RequestHandler::GetInputKindList},
|
{"GetInputKindList", &RequestHandler::GetInputKindList},
|
||||||
|
{"CreateInput", &RequestHandler::CreateInput},
|
||||||
|
{"SetInputName", &RequestHandler::SetInputName},
|
||||||
{"GetInputDefaultSettings", &RequestHandler::GetInputDefaultSettings},
|
{"GetInputDefaultSettings", &RequestHandler::GetInputDefaultSettings},
|
||||||
{"GetInputSettings", &RequestHandler::GetInputSettings},
|
{"GetInputSettings", &RequestHandler::GetInputSettings},
|
||||||
{"SetInputSettings", &RequestHandler::SetInputSettings},
|
{"SetInputSettings", &RequestHandler::SetInputSettings},
|
||||||
@ -53,8 +55,6 @@ const std::map<std::string, RequestMethodHandler> RequestHandler::_handlerMap
|
|||||||
{"ToggleInputMute", &RequestHandler::ToggleInputMute},
|
{"ToggleInputMute", &RequestHandler::ToggleInputMute},
|
||||||
{"GetInputVolume", &RequestHandler::GetInputVolume},
|
{"GetInputVolume", &RequestHandler::GetInputVolume},
|
||||||
{"SetInputVolume", &RequestHandler::SetInputVolume},
|
{"SetInputVolume", &RequestHandler::SetInputVolume},
|
||||||
{"SetInputName", &RequestHandler::SetInputName},
|
|
||||||
{"CreateInput", &RequestHandler::CreateInput},
|
|
||||||
|
|
||||||
// Stream
|
// Stream
|
||||||
{"GetStreamStatus", &RequestHandler::GetStreamStatus},
|
{"GetStreamStatus", &RequestHandler::GetStreamStatus},
|
||||||
|
@ -53,13 +53,15 @@ class RequestHandler {
|
|||||||
RequestResult SetCurrentProgramScene(const Request&);
|
RequestResult SetCurrentProgramScene(const Request&);
|
||||||
RequestResult GetCurrentPreviewScene(const Request&);
|
RequestResult GetCurrentPreviewScene(const Request&);
|
||||||
RequestResult SetCurrentPreviewScene(const Request&);
|
RequestResult SetCurrentPreviewScene(const Request&);
|
||||||
RequestResult SetSceneName(const Request&);
|
|
||||||
RequestResult CreateScene(const Request&);
|
RequestResult CreateScene(const Request&);
|
||||||
RequestResult RemoveScene(const Request&);
|
RequestResult RemoveScene(const Request&);
|
||||||
|
RequestResult SetSceneName(const Request&);
|
||||||
|
|
||||||
// Inputs
|
// Inputs
|
||||||
RequestResult GetInputList(const Request&);
|
RequestResult GetInputList(const Request&);
|
||||||
RequestResult GetInputKindList(const Request&);
|
RequestResult GetInputKindList(const Request&);
|
||||||
|
RequestResult CreateInput(const Request&);
|
||||||
|
RequestResult SetInputName(const Request&);
|
||||||
RequestResult GetInputDefaultSettings(const Request&);
|
RequestResult GetInputDefaultSettings(const Request&);
|
||||||
RequestResult GetInputSettings(const Request&);
|
RequestResult GetInputSettings(const Request&);
|
||||||
RequestResult SetInputSettings(const Request&);
|
RequestResult SetInputSettings(const Request&);
|
||||||
@ -68,8 +70,6 @@ class RequestHandler {
|
|||||||
RequestResult ToggleInputMute(const Request&);
|
RequestResult ToggleInputMute(const Request&);
|
||||||
RequestResult GetInputVolume(const Request&);
|
RequestResult GetInputVolume(const Request&);
|
||||||
RequestResult SetInputVolume(const Request&);
|
RequestResult SetInputVolume(const Request&);
|
||||||
RequestResult SetInputName(const Request&);
|
|
||||||
RequestResult CreateInput(const Request&);
|
|
||||||
|
|
||||||
// Stream
|
// Stream
|
||||||
RequestResult GetStreamStatus(const Request&);
|
RequestResult GetStreamStatus(const Request&);
|
||||||
|
@ -37,6 +37,75 @@ RequestResult RequestHandler::GetInputKindList(const Request& request)
|
|||||||
return RequestResult::Success(responseData);
|
return RequestResult::Success(responseData);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
RequestResult RequestHandler::CreateInput(const Request& request)
|
||||||
|
{
|
||||||
|
RequestStatus::RequestStatus statusCode;
|
||||||
|
std::string comment;
|
||||||
|
OBSSourceAutoRelease sceneSource = request.ValidateScene("sceneName", statusCode, comment);
|
||||||
|
if (!(request.ValidateString("inputName", statusCode, comment) &&
|
||||||
|
request.ValidateString("inputKind", statusCode, comment) &&
|
||||||
|
sceneSource))
|
||||||
|
return RequestResult::Error(statusCode, comment);
|
||||||
|
|
||||||
|
std::string inputName = request.RequestData["inputName"];
|
||||||
|
OBSSourceAutoRelease existingInput = obs_get_source_by_name(inputName.c_str());
|
||||||
|
if (existingInput)
|
||||||
|
return RequestResult::Error(RequestStatus::SourceAlreadyExists, "A source already exists by that input name.");
|
||||||
|
|
||||||
|
std::string inputKind = request.RequestData["inputKind"];
|
||||||
|
|
||||||
|
auto kinds = Utils::Obs::ListHelper::GetInputKindList();
|
||||||
|
if (std::find(kinds.begin(), kinds.end(), inputKind) == kinds.end())
|
||||||
|
return RequestResult::Error(RequestStatus::InvalidInputKind, "Your specified input kind is not supported by OBS. Check that your specified kind is properly versioned and that any necessary plugins are loaded.");
|
||||||
|
|
||||||
|
OBSDataAutoRelease inputSettings = nullptr;
|
||||||
|
if (request.RequestData.contains("inputSettings") && !request.RequestData["inputSettings"].is_null()) {
|
||||||
|
if (!request.ValidateObject("inputSettings", statusCode, comment, true))
|
||||||
|
return RequestResult::Error(statusCode, comment);
|
||||||
|
|
||||||
|
inputSettings = Utils::Json::JsonToObsData(request.RequestData["inputSettings"]);
|
||||||
|
}
|
||||||
|
|
||||||
|
OBSScene scene = obs_scene_from_source(sceneSource);
|
||||||
|
|
||||||
|
bool sceneItemEnabled = true;
|
||||||
|
if (request.RequestData.contains("sceneItemEnabled") && !request.RequestData["sceneItemEnabled"].is_null()) {
|
||||||
|
if (!request.ValidateBoolean("sceneItemEnabled", statusCode, comment))
|
||||||
|
return RequestResult::Error(statusCode, comment);
|
||||||
|
|
||||||
|
sceneItemEnabled = request.RequestData["sceneItemEnabled"];
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create the input and add it as a scene item to the destination scene
|
||||||
|
obs_sceneitem_t *sceneItem = Utils::Obs::ActionHelper::CreateInput(inputName, inputKind, inputSettings, scene, sceneItemEnabled);
|
||||||
|
|
||||||
|
if (!sceneItem)
|
||||||
|
return RequestResult::Error(RequestStatus::RequestProcessingFailed, "Creation of the input or scene item failed.");
|
||||||
|
|
||||||
|
json responseData;
|
||||||
|
responseData["sceneItemId"] = obs_sceneitem_get_id(sceneItem);
|
||||||
|
return RequestResult::Success(responseData);
|
||||||
|
}
|
||||||
|
|
||||||
|
RequestResult RequestHandler::SetInputName(const Request& request)
|
||||||
|
{
|
||||||
|
RequestStatus::RequestStatus statusCode;
|
||||||
|
std::string comment;
|
||||||
|
OBSSourceAutoRelease input = request.ValidateInput("inputName", statusCode, comment);
|
||||||
|
if (!(input && request.ValidateString("newInputName", statusCode, comment)))
|
||||||
|
return RequestResult::Error(statusCode, comment);
|
||||||
|
|
||||||
|
std::string newInputName = request.RequestData["newInputName"];
|
||||||
|
|
||||||
|
OBSSourceAutoRelease existingSource = obs_get_source_by_name(newInputName.c_str());
|
||||||
|
if (existingSource)
|
||||||
|
return RequestResult::Error(RequestStatus::SourceAlreadyExists, "A source already exists by that new input name.");
|
||||||
|
|
||||||
|
obs_source_set_name(input, newInputName.c_str());
|
||||||
|
|
||||||
|
return RequestResult::Success();
|
||||||
|
}
|
||||||
|
|
||||||
RequestResult RequestHandler::GetInputDefaultSettings(const Request& request)
|
RequestResult RequestHandler::GetInputDefaultSettings(const Request& request)
|
||||||
{
|
{
|
||||||
RequestStatus::RequestStatus statusCode;
|
RequestStatus::RequestStatus statusCode;
|
||||||
@ -199,72 +268,3 @@ RequestResult RequestHandler::SetInputVolume(const Request& request)
|
|||||||
|
|
||||||
return RequestResult::Success();
|
return RequestResult::Success();
|
||||||
}
|
}
|
||||||
|
|
||||||
RequestResult RequestHandler::SetInputName(const Request& request)
|
|
||||||
{
|
|
||||||
RequestStatus::RequestStatus statusCode;
|
|
||||||
std::string comment;
|
|
||||||
OBSSourceAutoRelease input = request.ValidateInput("inputName", statusCode, comment);
|
|
||||||
if (!(input && request.ValidateString("newInputName", statusCode, comment)))
|
|
||||||
return RequestResult::Error(statusCode, comment);
|
|
||||||
|
|
||||||
std::string newInputName = request.RequestData["newInputName"];
|
|
||||||
|
|
||||||
OBSSourceAutoRelease existingSource = obs_get_source_by_name(newInputName.c_str());
|
|
||||||
if (existingSource)
|
|
||||||
return RequestResult::Error(RequestStatus::SourceAlreadyExists, "A source already exists by that new input name.");
|
|
||||||
|
|
||||||
obs_source_set_name(input, newInputName.c_str());
|
|
||||||
|
|
||||||
return RequestResult::Success();
|
|
||||||
}
|
|
||||||
|
|
||||||
RequestResult RequestHandler::CreateInput(const Request& request)
|
|
||||||
{
|
|
||||||
RequestStatus::RequestStatus statusCode;
|
|
||||||
std::string comment;
|
|
||||||
OBSSourceAutoRelease sceneSource = request.ValidateScene("sceneName", statusCode, comment);
|
|
||||||
if (!(request.ValidateString("inputName", statusCode, comment) &&
|
|
||||||
request.ValidateString("inputKind", statusCode, comment) &&
|
|
||||||
sceneSource))
|
|
||||||
return RequestResult::Error(statusCode, comment);
|
|
||||||
|
|
||||||
std::string inputName = request.RequestData["inputName"];
|
|
||||||
OBSSourceAutoRelease existingInput = obs_get_source_by_name(inputName.c_str());
|
|
||||||
if (existingInput)
|
|
||||||
return RequestResult::Error(RequestStatus::SourceAlreadyExists, "A source already exists by that input name.");
|
|
||||||
|
|
||||||
std::string inputKind = request.RequestData["inputKind"];
|
|
||||||
|
|
||||||
auto kinds = Utils::Obs::ListHelper::GetInputKindList();
|
|
||||||
if (std::find(kinds.begin(), kinds.end(), inputKind) == kinds.end())
|
|
||||||
return RequestResult::Error(RequestStatus::InvalidInputKind, "Your specified input kind is not supported by OBS. Check that your specified kind is properly versioned and that any necessary plugins are loaded.");
|
|
||||||
|
|
||||||
OBSDataAutoRelease inputSettings = nullptr;
|
|
||||||
if (request.RequestData.contains("inputSettings") && !request.RequestData["inputSettings"].is_null()) {
|
|
||||||
if (!request.ValidateObject("inputSettings", statusCode, comment, true))
|
|
||||||
return RequestResult::Error(statusCode, comment);
|
|
||||||
|
|
||||||
inputSettings = Utils::Json::JsonToObsData(request.RequestData["inputSettings"]);
|
|
||||||
}
|
|
||||||
|
|
||||||
OBSScene scene = obs_scene_from_source(sceneSource);
|
|
||||||
|
|
||||||
bool sceneItemEnabled = true;
|
|
||||||
if (request.RequestData.contains("sceneItemEnabled") && !request.RequestData["sceneItemEnabled"].is_null()) {
|
|
||||||
if (!request.ValidateBoolean("sceneItemEnabled", statusCode, comment))
|
|
||||||
return RequestResult::Error(statusCode, comment);
|
|
||||||
|
|
||||||
sceneItemEnabled = request.RequestData["sceneItemEnabled"];
|
|
||||||
}
|
|
||||||
|
|
||||||
// Create the input and add it as a scene item to the destination scene
|
|
||||||
obs_sceneitem_t *sceneItem = Utils::Obs::ActionHelper::CreateInput(inputName, inputKind, inputSettings, scene, sceneItemEnabled);
|
|
||||||
|
|
||||||
if (!sceneItem)
|
|
||||||
return RequestResult::Error(RequestStatus::RequestProcessingFailed, "Creation of the input or scene item failed.");
|
|
||||||
|
|
||||||
json responseData;
|
|
||||||
responseData["sceneItemId"] = obs_sceneitem_get_id(sceneItem);
|
|
||||||
return RequestResult::Success(responseData);
|
|
||||||
}
|
|
||||||
|
@ -68,25 +68,6 @@ RequestResult RequestHandler::SetCurrentPreviewScene(const Request& request)
|
|||||||
return RequestResult::Success();
|
return RequestResult::Success();
|
||||||
}
|
}
|
||||||
|
|
||||||
RequestResult RequestHandler::SetSceneName(const Request& request)
|
|
||||||
{
|
|
||||||
RequestStatus::RequestStatus statusCode;
|
|
||||||
std::string comment;
|
|
||||||
OBSSourceAutoRelease scene = request.ValidateScene("sceneName", statusCode, comment);
|
|
||||||
if (!(scene && request.ValidateString("newSceneName", statusCode, comment)))
|
|
||||||
return RequestResult::Error(statusCode, comment);
|
|
||||||
|
|
||||||
std::string newSceneName = request.RequestData["newSceneName"];
|
|
||||||
|
|
||||||
OBSSourceAutoRelease existingSource = obs_get_source_by_name(newSceneName.c_str());
|
|
||||||
if (existingSource)
|
|
||||||
return RequestResult::Error(RequestStatus::SourceAlreadyExists, "A source already exists by that new scene name.");
|
|
||||||
|
|
||||||
obs_source_set_name(scene, newSceneName.c_str());
|
|
||||||
|
|
||||||
return RequestResult::Success();
|
|
||||||
}
|
|
||||||
|
|
||||||
RequestResult RequestHandler::CreateScene(const Request& request)
|
RequestResult RequestHandler::CreateScene(const Request& request)
|
||||||
{
|
{
|
||||||
RequestStatus::RequestStatus statusCode;
|
RequestStatus::RequestStatus statusCode;
|
||||||
@ -118,3 +99,22 @@ RequestResult RequestHandler::RemoveScene(const Request& request)
|
|||||||
|
|
||||||
return RequestResult::Success();
|
return RequestResult::Success();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
RequestResult RequestHandler::SetSceneName(const Request& request)
|
||||||
|
{
|
||||||
|
RequestStatus::RequestStatus statusCode;
|
||||||
|
std::string comment;
|
||||||
|
OBSSourceAutoRelease scene = request.ValidateScene("sceneName", statusCode, comment);
|
||||||
|
if (!(scene && request.ValidateString("newSceneName", statusCode, comment)))
|
||||||
|
return RequestResult::Error(statusCode, comment);
|
||||||
|
|
||||||
|
std::string newSceneName = request.RequestData["newSceneName"];
|
||||||
|
|
||||||
|
OBSSourceAutoRelease existingSource = obs_get_source_by_name(newSceneName.c_str());
|
||||||
|
if (existingSource)
|
||||||
|
return RequestResult::Error(RequestStatus::SourceAlreadyExists, "A source already exists by that new scene name.");
|
||||||
|
|
||||||
|
obs_source_set_name(scene, newSceneName.c_str());
|
||||||
|
|
||||||
|
return RequestResult::Success();
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user