mirror of
https://github.com/Palakis/obs-websocket.git
synced 2024-08-30 18:12:16 +00:00
RequestHandler: Some more requests
This commit is contained in:
parent
cc77724229
commit
ae40c61c2b
@ -43,6 +43,11 @@ const std::map<std::string, RequestMethodHandler> RequestHandler::_handlerMap
|
|||||||
{"GetInputDefaultSettings", &RequestHandler::GetInputDefaultSettings},
|
{"GetInputDefaultSettings", &RequestHandler::GetInputDefaultSettings},
|
||||||
{"GetInputSettings", &RequestHandler::GetInputSettings},
|
{"GetInputSettings", &RequestHandler::GetInputSettings},
|
||||||
{"SetInputSettings", &RequestHandler::SetInputSettings},
|
{"SetInputSettings", &RequestHandler::SetInputSettings},
|
||||||
|
{"GetInputMute", &RequestHandler::GetInputMute},
|
||||||
|
{"SetInputMute", &RequestHandler::SetInputMute},
|
||||||
|
{"ToggleInputMute", &RequestHandler::ToggleInputMute},
|
||||||
|
{"GetInputVolume", &RequestHandler::GetInputVolume},
|
||||||
|
{"SetInputVolume", &RequestHandler::SetInputVolume},
|
||||||
};
|
};
|
||||||
|
|
||||||
RequestResult RequestHandler::ProcessRequest(const Request& request)
|
RequestResult RequestHandler::ProcessRequest(const Request& request)
|
||||||
|
@ -57,6 +57,11 @@ class RequestHandler {
|
|||||||
RequestResult GetInputDefaultSettings(const Request&);
|
RequestResult GetInputDefaultSettings(const Request&);
|
||||||
RequestResult GetInputSettings(const Request&);
|
RequestResult GetInputSettings(const Request&);
|
||||||
RequestResult SetInputSettings(const Request&);
|
RequestResult SetInputSettings(const Request&);
|
||||||
|
RequestResult GetInputMute(const Request&);
|
||||||
|
RequestResult SetInputMute(const Request&);
|
||||||
|
RequestResult ToggleInputMute(const Request&);
|
||||||
|
RequestResult GetInputVolume(const Request&);
|
||||||
|
RequestResult SetInputVolume(const Request&);
|
||||||
|
|
||||||
static const std::map<std::string, RequestMethodHandler> _handlerMap;
|
static const std::map<std::string, RequestMethodHandler> _handlerMap;
|
||||||
};
|
};
|
||||||
|
@ -79,10 +79,7 @@ RequestResult RequestHandler::SetInputSettings(const Request& request)
|
|||||||
RequestStatus::RequestStatus statusCode;
|
RequestStatus::RequestStatus statusCode;
|
||||||
std::string comment;
|
std::string comment;
|
||||||
OBSSourceAutoRelease input = request.ValidateInput("inputName", statusCode, comment);
|
OBSSourceAutoRelease input = request.ValidateInput("inputName", statusCode, comment);
|
||||||
if (!input)
|
if (!input || !request.ValidateObject("inputSettings", statusCode, comment, true))
|
||||||
return RequestResult::Error(statusCode, comment);
|
|
||||||
|
|
||||||
if (!request.ValidateObject("inputSettings", statusCode, comment, true))
|
|
||||||
return RequestResult::Error(statusCode, comment);
|
return RequestResult::Error(statusCode, comment);
|
||||||
|
|
||||||
bool overlay = true;
|
bool overlay = true;
|
||||||
@ -112,3 +109,97 @@ RequestResult RequestHandler::SetInputSettings(const Request& request)
|
|||||||
|
|
||||||
return RequestResult::Success();
|
return RequestResult::Success();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
RequestResult RequestHandler::GetInputMute(const Request& request)
|
||||||
|
{
|
||||||
|
RequestStatus::RequestStatus statusCode;
|
||||||
|
std::string comment;
|
||||||
|
OBSSourceAutoRelease input = request.ValidateInput("inputName", statusCode, comment);
|
||||||
|
if (!input)
|
||||||
|
return RequestResult::Error(statusCode, comment);
|
||||||
|
|
||||||
|
json responseData;
|
||||||
|
responseData["inputMuted"] = obs_source_muted(input);
|
||||||
|
return RequestResult::Success(responseData);
|
||||||
|
}
|
||||||
|
|
||||||
|
RequestResult RequestHandler::SetInputMute(const Request& request)
|
||||||
|
{
|
||||||
|
RequestStatus::RequestStatus statusCode;
|
||||||
|
std::string comment;
|
||||||
|
OBSSourceAutoRelease input = request.ValidateInput("inputName", statusCode, comment);
|
||||||
|
if (!input || !request.ValidateBoolean("inputMuted", statusCode, comment))
|
||||||
|
return RequestResult::Error(statusCode, comment);
|
||||||
|
|
||||||
|
obs_source_set_muted(input, request.RequestData["inputMuted"]);
|
||||||
|
|
||||||
|
return RequestResult::Success();
|
||||||
|
}
|
||||||
|
|
||||||
|
RequestResult RequestHandler::ToggleInputMute(const Request& request)
|
||||||
|
{
|
||||||
|
RequestStatus::RequestStatus statusCode;
|
||||||
|
std::string comment;
|
||||||
|
OBSSourceAutoRelease input = request.ValidateInput("inputName", statusCode, comment);
|
||||||
|
if (!input)
|
||||||
|
return RequestResult::Error(statusCode, comment);
|
||||||
|
|
||||||
|
bool inputMuted = !obs_source_muted(input);
|
||||||
|
obs_source_set_muted(input, inputMuted);
|
||||||
|
|
||||||
|
json responseData;
|
||||||
|
responseData["inputMuted"] = inputMuted;
|
||||||
|
return RequestResult::Success(responseData);
|
||||||
|
}
|
||||||
|
|
||||||
|
RequestResult RequestHandler::GetInputVolume(const Request& request)
|
||||||
|
{
|
||||||
|
RequestStatus::RequestStatus statusCode;
|
||||||
|
std::string comment;
|
||||||
|
OBSSourceAutoRelease input = request.ValidateInput("inputName", statusCode, comment);
|
||||||
|
if (!input)
|
||||||
|
return RequestResult::Error(statusCode, comment);
|
||||||
|
|
||||||
|
float inputVolumeMul = obs_source_get_volume(input);
|
||||||
|
float inputVolumeDb = obs_mul_to_db(inputVolumeMul);
|
||||||
|
if (inputVolumeDb == -INFINITY)
|
||||||
|
inputVolumeDb = -100.0;
|
||||||
|
|
||||||
|
json responseData;
|
||||||
|
responseData["inputVolumeMul"] = inputVolumeMul;
|
||||||
|
responseData["inputVolumeDb"] = inputVolumeDb;
|
||||||
|
return RequestResult::Success(responseData);
|
||||||
|
}
|
||||||
|
|
||||||
|
RequestResult RequestHandler::SetInputVolume(const Request& request)
|
||||||
|
{
|
||||||
|
RequestStatus::RequestStatus statusCode;
|
||||||
|
std::string comment;
|
||||||
|
OBSSourceAutoRelease input = request.ValidateInput("inputName", statusCode, comment);
|
||||||
|
if (!input)
|
||||||
|
return RequestResult::Error(statusCode, comment);
|
||||||
|
|
||||||
|
bool hasMul = request.ValidateNumber("inputVolumeMul", statusCode, comment, 0, 20);
|
||||||
|
if (!hasMul && statusCode != RequestStatus::MissingRequestParameter)
|
||||||
|
return RequestResult::Error(statusCode, comment);
|
||||||
|
|
||||||
|
bool hasDb = request.ValidateNumber("inputVolumeDb", statusCode, comment, -100, 26);
|
||||||
|
if (!hasDb && statusCode != RequestStatus::MissingRequestParameter)
|
||||||
|
return RequestResult::Error(statusCode, comment);
|
||||||
|
|
||||||
|
if (hasMul && hasDb)
|
||||||
|
return RequestResult::Error(RequestStatus::TooManyRequestParameters, "You may only specify one volume parameter.");
|
||||||
|
|
||||||
|
if (!hasMul && !hasDb)
|
||||||
|
return RequestResult::Error(RequestStatus::MissingRequestParameter, "You must specify one volume parameter.");
|
||||||
|
|
||||||
|
float inputVolumeMul = 0.0;
|
||||||
|
if (hasMul)
|
||||||
|
inputVolumeMul = request.RequestData["inputVolumeMul"];
|
||||||
|
else
|
||||||
|
inputVolumeMul = obs_db_to_mul(request.RequestData["inputVolumeDb"]);
|
||||||
|
|
||||||
|
obs_source_set_volume(input, inputVolumeMul);
|
||||||
|
|
||||||
|
return RequestResult::Success();
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user