mirror of
https://github.com/Palakis/obs-websocket.git
synced 2024-08-30 18:12:16 +00:00
77 lines
2.2 KiB
C++
77 lines
2.2 KiB
C++
#include <QString>
|
|
#include "Utils.h"
|
|
|
|
#include "WSRequestHandler.h"
|
|
|
|
/**
|
|
* Switch to the specified scene.
|
|
*
|
|
* @param {String} `scene-name` Name of the scene to switch to.
|
|
*
|
|
* @api requests
|
|
* @name SetCurrentScene
|
|
* @category scenes
|
|
* @since 0.3
|
|
*/
|
|
void WSRequestHandler::HandleSetCurrentScene(WSRequestHandler* req) {
|
|
if (!req->hasField("scene-name")) {
|
|
req->SendErrorResponse("missing request parameters");
|
|
return;
|
|
}
|
|
|
|
const char* sceneName = obs_data_get_string(req->data, "scene-name");
|
|
OBSSourceAutoRelease source = obs_get_source_by_name(sceneName);
|
|
|
|
if (source) {
|
|
obs_frontend_set_current_scene(source);
|
|
req->SendOKResponse();
|
|
} else {
|
|
req->SendErrorResponse("requested scene does not exist");
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Get the current scene's name and source items.
|
|
*
|
|
* @return {String} `name` Name of the currently active scene.
|
|
* @return {Source|Array} `sources` Ordered list of the current scene's source items.
|
|
*
|
|
* @api requests
|
|
* @name GetCurrentScene
|
|
* @category scenes
|
|
* @since 0.3
|
|
*/
|
|
void WSRequestHandler::HandleGetCurrentScene(WSRequestHandler* req) {
|
|
OBSSourceAutoRelease currentScene = obs_frontend_get_current_scene();
|
|
OBSDataArrayAutoRelease sceneItems = Utils::GetSceneItems(currentScene);
|
|
|
|
OBSDataAutoRelease data = obs_data_create();
|
|
obs_data_set_string(data, "name", obs_source_get_name(currentScene));
|
|
obs_data_set_array(data, "sources", sceneItems);
|
|
|
|
req->SendOKResponse(data);
|
|
}
|
|
|
|
/**
|
|
* Get a list of scenes in the currently active profile.
|
|
*
|
|
* @return {String} `current-scene` Name of the currently active scene.
|
|
* @return {Scene|Array} `scenes` Ordered list of the current profile's scenes (See `[GetCurrentScene](#getcurrentscene)` for more information).
|
|
*
|
|
* @api requests
|
|
* @name GetSceneList
|
|
* @category scenes
|
|
* @since 0.3
|
|
*/
|
|
void WSRequestHandler::HandleGetSceneList(WSRequestHandler* req) {
|
|
OBSSourceAutoRelease currentScene = obs_frontend_get_current_scene();
|
|
OBSDataArrayAutoRelease scenes = Utils::GetScenes();
|
|
|
|
OBSDataAutoRelease data = obs_data_create();
|
|
obs_data_set_string(data, "current-scene",
|
|
obs_source_get_name(currentScene));
|
|
obs_data_set_array(data, "scenes", scenes);
|
|
|
|
req->SendOKResponse(data);
|
|
}
|