mirror of
https://github.com/Palakis/obs-websocket.git
synced 2024-08-30 18:12:16 +00:00
RequestHandler: Move GetInputList logic to Utils
This commit is contained in:
parent
4d77927ceb
commit
8ad009ba51
@ -39,6 +39,7 @@ const std::map<std::string, RequestMethodHandler> RequestHandler::_handlerMap
|
|||||||
|
|
||||||
// Inputs
|
// Inputs
|
||||||
{"GetInputList", &RequestHandler::GetInputList},
|
{"GetInputList", &RequestHandler::GetInputList},
|
||||||
|
{"GetInputKindList", &RequestHandler::GetInputKindList},
|
||||||
};
|
};
|
||||||
|
|
||||||
RequestResult RequestHandler::ProcessRequest(const Request& request)
|
RequestResult RequestHandler::ProcessRequest(const Request& request)
|
||||||
|
@ -53,6 +53,7 @@ class RequestHandler {
|
|||||||
|
|
||||||
// Inputs
|
// Inputs
|
||||||
RequestResult GetInputList(const Request&);
|
RequestResult GetInputList(const Request&);
|
||||||
|
RequestResult GetInputKindList(const Request&);
|
||||||
|
|
||||||
static const std::map<std::string, RequestMethodHandler> _handlerMap;
|
static const std::map<std::string, RequestMethodHandler> _handlerMap;
|
||||||
};
|
};
|
||||||
|
@ -2,14 +2,9 @@
|
|||||||
|
|
||||||
#include "../plugin-macros.generated.h"
|
#include "../plugin-macros.generated.h"
|
||||||
|
|
||||||
struct EnumInputInfo {
|
|
||||||
std::string inputKind;
|
|
||||||
std::vector<json> inputs;
|
|
||||||
};
|
|
||||||
|
|
||||||
RequestResult RequestHandler::GetInputList(const Request& request)
|
RequestResult RequestHandler::GetInputList(const Request& request)
|
||||||
{
|
{
|
||||||
EnumInputInfo inputInfo;
|
std::string inputKind;
|
||||||
|
|
||||||
if (request.RequestData.contains("inputKind") && !request.RequestData["inputKind"].is_null()) {
|
if (request.RequestData.contains("inputKind") && !request.RequestData["inputKind"].is_null()) {
|
||||||
RequestStatus::RequestStatus statusCode;
|
RequestStatus::RequestStatus statusCode;
|
||||||
@ -18,33 +13,29 @@ RequestResult RequestHandler::GetInputList(const Request& request)
|
|||||||
return RequestResult::Error(statusCode, comment);
|
return RequestResult::Error(statusCode, comment);
|
||||||
}
|
}
|
||||||
|
|
||||||
inputInfo.inputKind = request.RequestData["inputKind"];
|
inputKind = request.RequestData["inputKind"];
|
||||||
}
|
}
|
||||||
|
|
||||||
auto inputEnumProc = [](void *param, obs_source_t *input) {
|
|
||||||
// Sanity check in case the API changes
|
|
||||||
if (obs_source_get_type(input) != OBS_SOURCE_TYPE_INPUT)
|
|
||||||
return true;
|
|
||||||
|
|
||||||
auto inputInfo = reinterpret_cast<EnumInputInfo*>(param);
|
|
||||||
|
|
||||||
std::string inputKind = obs_source_get_id(input);
|
|
||||||
|
|
||||||
if (!inputInfo->inputKind.empty() && inputInfo->inputKind != inputKind)
|
|
||||||
return true;
|
|
||||||
|
|
||||||
json inputJson;
|
|
||||||
inputJson["inputName"] = obs_source_get_name(input);
|
|
||||||
inputJson["inputKind"] = inputKind;
|
|
||||||
inputJson["unversionedInputKind"] = obs_source_get_unversioned_id(input);
|
|
||||||
|
|
||||||
inputInfo->inputs.push_back(inputJson);
|
|
||||||
return true;
|
|
||||||
};
|
|
||||||
// Actually enumerates only public inputs, despite the name
|
|
||||||
obs_enum_sources(inputEnumProc, &inputInfo);
|
|
||||||
|
|
||||||
json responseData;
|
json responseData;
|
||||||
responseData["inputs"] = inputInfo.inputs;
|
responseData["inputs"] = Utils::Obs::ListHelper::GetInputList(inputKind);
|
||||||
|
return RequestResult::Success(responseData);
|
||||||
|
}
|
||||||
|
|
||||||
|
RequestResult RequestHandler::GetInputKindList(const Request& request)
|
||||||
|
{
|
||||||
|
bool unversioned = false;
|
||||||
|
|
||||||
|
if (request.RequestData.contains("unversioned") && !request.RequestData["unversioned"].is_null()) {
|
||||||
|
RequestStatus::RequestStatus statusCode;
|
||||||
|
std::string comment;
|
||||||
|
if (!request.ValidateBoolean("unversioned", statusCode, comment)) {
|
||||||
|
return RequestResult::Error(statusCode, comment);
|
||||||
|
}
|
||||||
|
|
||||||
|
unversioned = request.RequestData["unversioned"];
|
||||||
|
}
|
||||||
|
|
||||||
|
json responseData;
|
||||||
|
responseData["inputKinds"] = Utils::Obs::ListHelper::GetInputKindList(unversioned);
|
||||||
return RequestResult::Success(responseData);
|
return RequestResult::Success(responseData);
|
||||||
}
|
}
|
||||||
|
@ -231,6 +231,42 @@ std::vector<json> Utils::Obs::ListHelper::GetTransitionList()
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct EnumInputInfo {
|
||||||
|
std::string inputKind;
|
||||||
|
std::vector<json> inputs;
|
||||||
|
};
|
||||||
|
|
||||||
|
std::vector<json> Utils::Obs::ListHelper::GetInputList(std::string inputKind)
|
||||||
|
{
|
||||||
|
EnumInputInfo inputInfo;
|
||||||
|
inputInfo.inputKind = inputKind;
|
||||||
|
|
||||||
|
auto inputEnumProc = [](void *param, obs_source_t *input) {
|
||||||
|
// Sanity check in case the API changes
|
||||||
|
if (obs_source_get_type(input) != OBS_SOURCE_TYPE_INPUT)
|
||||||
|
return true;
|
||||||
|
|
||||||
|
auto inputInfo = reinterpret_cast<EnumInputInfo*>(param);
|
||||||
|
|
||||||
|
std::string inputKind = obs_source_get_id(input);
|
||||||
|
|
||||||
|
if (!inputInfo->inputKind.empty() && inputInfo->inputKind != inputKind)
|
||||||
|
return true;
|
||||||
|
|
||||||
|
json inputJson;
|
||||||
|
inputJson["inputName"] = obs_source_get_name(input);
|
||||||
|
inputJson["inputKind"] = inputKind;
|
||||||
|
inputJson["unversionedInputKind"] = obs_source_get_unversioned_id(input);
|
||||||
|
|
||||||
|
inputInfo->inputs.push_back(inputJson);
|
||||||
|
return true;
|
||||||
|
};
|
||||||
|
// Actually enumerates only public inputs, despite the name
|
||||||
|
obs_enum_sources(inputEnumProc, &inputInfo);
|
||||||
|
|
||||||
|
return inputInfo.inputs;
|
||||||
|
}
|
||||||
|
|
||||||
std::vector<std::string> Utils::Obs::ListHelper::GetInputKindList(bool unversioned)
|
std::vector<std::string> Utils::Obs::ListHelper::GetInputKindList(bool unversioned)
|
||||||
{
|
{
|
||||||
std::vector<std::string> ret;
|
std::vector<std::string> ret;
|
||||||
|
@ -48,6 +48,7 @@ namespace Utils {
|
|||||||
std::vector<json> GetSceneList();
|
std::vector<json> GetSceneList();
|
||||||
std::vector<json> GetSceneItemList(obs_scene_t *scene, bool basic = false);
|
std::vector<json> GetSceneItemList(obs_scene_t *scene, bool basic = false);
|
||||||
std::vector<json> GetTransitionList();
|
std::vector<json> GetTransitionList();
|
||||||
|
std::vector<json> GetInputList(std::string inputKind = "");
|
||||||
std::vector<std::string> GetInputKindList(bool unversioned = false);
|
std::vector<std::string> GetInputKindList(bool unversioned = false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user