mirror of
https://github.com/Palakis/obs-websocket.git
synced 2024-08-30 18:12:16 +00:00
Requests: Add more requests
This commit is contained in:
parent
fc08828773
commit
16697fb65e
@ -18,8 +18,11 @@ const std::map<std::string, RequestMethodHandler> RequestHandler::_handlerMap
|
||||
{"SetPersistentData", &RequestHandler::SetPersistentData},
|
||||
{"GetSceneCollectionList", &RequestHandler::GetSceneCollectionList},
|
||||
{"SetCurrentSceneCollection", &RequestHandler::SetCurrentSceneCollection},
|
||||
{"CreateSceneCollection", &RequestHandler::CreateSceneCollection},
|
||||
{"GetProfileList", &RequestHandler::GetProfileList},
|
||||
{"SetCurrentProfile", &RequestHandler::SetCurrentProfile},
|
||||
{"CreateProfile", &RequestHandler::CreateProfile},
|
||||
{"RemoveProfile", &RequestHandler::RemoveProfile},
|
||||
{"GetProfileParameter", &RequestHandler::GetProfileParameter},
|
||||
{"SetProfileParameter", &RequestHandler::SetProfileParameter},
|
||||
{"GetVideoSettings", &RequestHandler::GetVideoSettings},
|
||||
|
@ -33,8 +33,11 @@ class RequestHandler {
|
||||
RequestResult SetPersistentData(const Request&);
|
||||
RequestResult GetSceneCollectionList(const Request&);
|
||||
RequestResult SetCurrentSceneCollection(const Request&);
|
||||
RequestResult CreateSceneCollection(const Request&);
|
||||
RequestResult GetProfileList(const Request&);
|
||||
RequestResult SetCurrentProfile(const Request&);
|
||||
RequestResult CreateProfile(const Request&);
|
||||
RequestResult RemoveProfile(const Request&);
|
||||
RequestResult GetProfileParameter(const Request&);
|
||||
RequestResult SetProfileParameter(const Request&);
|
||||
RequestResult GetVideoSettings(const Request&);
|
||||
|
@ -1,3 +1,4 @@
|
||||
#include <QMainWindow>
|
||||
#include <util/config-file.h>
|
||||
|
||||
#include "RequestHandler.h"
|
||||
@ -91,6 +92,28 @@ RequestResult RequestHandler::SetCurrentSceneCollection(const Request& request)
|
||||
return RequestResult::Success();
|
||||
}
|
||||
|
||||
RequestResult RequestHandler::CreateSceneCollection(const Request& request)
|
||||
{
|
||||
RequestStatus::RequestStatus statusCode;
|
||||
std::string comment;
|
||||
if (!request.ValidateString("sceneCollectionName", statusCode, comment))
|
||||
return RequestResult::Error(statusCode, comment);
|
||||
|
||||
std::string sceneCollectionName = request.RequestData["sceneCollectionName"];
|
||||
|
||||
auto sceneCollections = Utils::Obs::ListHelper::GetSceneCollectionList();
|
||||
if (std::find(sceneCollections.begin(), sceneCollections.end(), sceneCollectionName) != sceneCollections.end())
|
||||
return RequestResult::Error(RequestStatus::SceneCollectionAlreadyExists);
|
||||
|
||||
QMainWindow* mainWindow = reinterpret_cast<QMainWindow*>(obs_frontend_get_main_window());
|
||||
bool success = false;
|
||||
QMetaObject::invokeMethod(mainWindow, "AddSceneCollection", Qt::BlockingQueuedConnection, Q_RETURN_ARG(bool, success), Q_ARG(bool, true), Q_ARG(QString, QString::fromStdString(sceneCollectionName)));
|
||||
if (!success)
|
||||
return RequestResult::Error(RequestStatus::RequestProcessingFailed, "Failed to create the scene collection for an unknown reason");
|
||||
|
||||
return RequestResult::Success();
|
||||
}
|
||||
|
||||
RequestResult RequestHandler::GetProfileList(const Request& request)
|
||||
{
|
||||
json responseData;
|
||||
@ -123,6 +146,47 @@ RequestResult RequestHandler::SetCurrentProfile(const Request& request)
|
||||
return RequestResult::Success();
|
||||
}
|
||||
|
||||
RequestResult RequestHandler::CreateProfile(const Request& request)
|
||||
{
|
||||
RequestStatus::RequestStatus statusCode;
|
||||
std::string comment;
|
||||
if (!request.ValidateString("profileName", statusCode, comment))
|
||||
return RequestResult::Error(statusCode, comment);
|
||||
|
||||
std::string profileName = request.RequestData["profileName"];
|
||||
|
||||
auto profiles = Utils::Obs::ListHelper::GetProfileList();
|
||||
if (std::find(profiles.begin(), profiles.end(), profileName) != profiles.end())
|
||||
return RequestResult::Error(RequestStatus::ProfileAlreadyExists);
|
||||
|
||||
QMainWindow* mainWindow = reinterpret_cast<QMainWindow*>(obs_frontend_get_main_window());
|
||||
QMetaObject::invokeMethod(mainWindow, "NewProfile", Qt::BlockingQueuedConnection, Q_ARG(QString, QString::fromStdString(profileName)));
|
||||
|
||||
return RequestResult::Success();
|
||||
}
|
||||
|
||||
RequestResult RequestHandler::RemoveProfile(const Request& request)
|
||||
{
|
||||
RequestStatus::RequestStatus statusCode;
|
||||
std::string comment;
|
||||
if (!request.ValidateString("profileName", statusCode, comment))
|
||||
return RequestResult::Error(statusCode, comment);
|
||||
|
||||
std::string profileName = request.RequestData["profileName"];
|
||||
|
||||
auto profiles = Utils::Obs::ListHelper::GetProfileList();
|
||||
if (std::find(profiles.begin(), profiles.end(), profileName) == profiles.end())
|
||||
return RequestResult::Error(RequestStatus::ProfileNotFound);
|
||||
|
||||
if (profiles.size() < 2)
|
||||
return RequestResult::Error(RequestStatus::NotEnoughProfiles);
|
||||
|
||||
QMainWindow* mainWindow = reinterpret_cast<QMainWindow*>(obs_frontend_get_main_window());
|
||||
QMetaObject::invokeMethod(mainWindow, "DeleteProfile", Qt::BlockingQueuedConnection, Q_ARG(QString, QString::fromStdString(profileName)));
|
||||
|
||||
return RequestResult::Success();
|
||||
}
|
||||
|
||||
RequestResult RequestHandler::GetProfileParameter(const Request& request)
|
||||
{
|
||||
RequestStatus::RequestStatus statusCode;
|
||||
|
@ -103,6 +103,16 @@ namespace RequestStatus {
|
||||
KeyNotFound = 619,
|
||||
// The specified data realm (OBS_WEBSOCKET_DATA_REALM_*) was not found
|
||||
DataRealmNotFound = 620,
|
||||
// The scene collection already exists
|
||||
SceneCollectionAlreadyExists = 621,
|
||||
// There are not enough scene collections to perform the action
|
||||
NotEnoughSceneCollections = 622,
|
||||
// The profile already exists
|
||||
ProfileAlreadyExists = 623,
|
||||
// There are not enough profiles to perform the action
|
||||
NotEnoughProfiles = 624,
|
||||
// There are not enough scenes to perform the action
|
||||
NotEnoughScenes = 625,
|
||||
|
||||
// Processing the request failed unexpectedly
|
||||
RequestProcessingFailed = 700,
|
||||
|
Loading…
x
Reference in New Issue
Block a user