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},
|
{"SetPersistentData", &RequestHandler::SetPersistentData},
|
||||||
{"GetSceneCollectionList", &RequestHandler::GetSceneCollectionList},
|
{"GetSceneCollectionList", &RequestHandler::GetSceneCollectionList},
|
||||||
{"SetCurrentSceneCollection", &RequestHandler::SetCurrentSceneCollection},
|
{"SetCurrentSceneCollection", &RequestHandler::SetCurrentSceneCollection},
|
||||||
|
{"CreateSceneCollection", &RequestHandler::CreateSceneCollection},
|
||||||
{"GetProfileList", &RequestHandler::GetProfileList},
|
{"GetProfileList", &RequestHandler::GetProfileList},
|
||||||
{"SetCurrentProfile", &RequestHandler::SetCurrentProfile},
|
{"SetCurrentProfile", &RequestHandler::SetCurrentProfile},
|
||||||
|
{"CreateProfile", &RequestHandler::CreateProfile},
|
||||||
|
{"RemoveProfile", &RequestHandler::RemoveProfile},
|
||||||
{"GetProfileParameter", &RequestHandler::GetProfileParameter},
|
{"GetProfileParameter", &RequestHandler::GetProfileParameter},
|
||||||
{"SetProfileParameter", &RequestHandler::SetProfileParameter},
|
{"SetProfileParameter", &RequestHandler::SetProfileParameter},
|
||||||
{"GetVideoSettings", &RequestHandler::GetVideoSettings},
|
{"GetVideoSettings", &RequestHandler::GetVideoSettings},
|
||||||
|
@ -33,8 +33,11 @@ class RequestHandler {
|
|||||||
RequestResult SetPersistentData(const Request&);
|
RequestResult SetPersistentData(const Request&);
|
||||||
RequestResult GetSceneCollectionList(const Request&);
|
RequestResult GetSceneCollectionList(const Request&);
|
||||||
RequestResult SetCurrentSceneCollection(const Request&);
|
RequestResult SetCurrentSceneCollection(const Request&);
|
||||||
|
RequestResult CreateSceneCollection(const Request&);
|
||||||
RequestResult GetProfileList(const Request&);
|
RequestResult GetProfileList(const Request&);
|
||||||
RequestResult SetCurrentProfile(const Request&);
|
RequestResult SetCurrentProfile(const Request&);
|
||||||
|
RequestResult CreateProfile(const Request&);
|
||||||
|
RequestResult RemoveProfile(const Request&);
|
||||||
RequestResult GetProfileParameter(const Request&);
|
RequestResult GetProfileParameter(const Request&);
|
||||||
RequestResult SetProfileParameter(const Request&);
|
RequestResult SetProfileParameter(const Request&);
|
||||||
RequestResult GetVideoSettings(const Request&);
|
RequestResult GetVideoSettings(const Request&);
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
#include <QMainWindow>
|
||||||
#include <util/config-file.h>
|
#include <util/config-file.h>
|
||||||
|
|
||||||
#include "RequestHandler.h"
|
#include "RequestHandler.h"
|
||||||
@ -91,6 +92,28 @@ RequestResult RequestHandler::SetCurrentSceneCollection(const Request& request)
|
|||||||
return RequestResult::Success();
|
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)
|
RequestResult RequestHandler::GetProfileList(const Request& request)
|
||||||
{
|
{
|
||||||
json responseData;
|
json responseData;
|
||||||
@ -123,6 +146,47 @@ RequestResult RequestHandler::SetCurrentProfile(const Request& request)
|
|||||||
return RequestResult::Success();
|
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)
|
RequestResult RequestHandler::GetProfileParameter(const Request& request)
|
||||||
{
|
{
|
||||||
RequestStatus::RequestStatus statusCode;
|
RequestStatus::RequestStatus statusCode;
|
||||||
|
@ -103,6 +103,16 @@ namespace RequestStatus {
|
|||||||
KeyNotFound = 619,
|
KeyNotFound = 619,
|
||||||
// The specified data realm (OBS_WEBSOCKET_DATA_REALM_*) was not found
|
// The specified data realm (OBS_WEBSOCKET_DATA_REALM_*) was not found
|
||||||
DataRealmNotFound = 620,
|
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
|
// Processing the request failed unexpectedly
|
||||||
RequestProcessingFailed = 700,
|
RequestProcessingFailed = 700,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user