mirror of
https://github.com/Palakis/obs-websocket.git
synced 2024-08-30 18:12:16 +00:00
Fixed a potential bug + WIP on scene collection/profile change
This commit is contained in:
parent
2b8b5001e0
commit
4141983ccd
@ -52,8 +52,16 @@ WSRequestHandler::WSRequestHandler(QWebSocket *client) :
|
|||||||
|
|
||||||
messageMap["SetVolume"] = WSRequestHandler::HandleSetVolume;
|
messageMap["SetVolume"] = WSRequestHandler::HandleSetVolume;
|
||||||
messageMap["GetVolume"] = WSRequestHandler::HandleGetVolume;
|
messageMap["GetVolume"] = WSRequestHandler::HandleGetVolume;
|
||||||
messageMap["ToggleMute"] = WSRequestHandler::ToggleMute;
|
messageMap["ToggleMute"] = WSRequestHandler::HandleToggleMute;
|
||||||
messageMap["SetMute"] = WSRequestHandler::SetMute;
|
messageMap["SetMute"] = WSRequestHandler::HandleSetMute;
|
||||||
|
|
||||||
|
messageMap["SetCurrentSceneCollection"] = WSRequestHandler::HandleSetCurrentSceneCollection;
|
||||||
|
messageMap["GetCurrentSceneCollection"] = WSRequestHandler::HandleGetCurrentSceneCollection;
|
||||||
|
messageMap["ListSceneCollections"] = WSRequestHandler::HandleListSceneCollections;
|
||||||
|
|
||||||
|
messageMap["SetCurrentProfile"] = WSRequestHandler::HandleSetCurrentProfile;
|
||||||
|
messageMap["GetCurrentProfile"] = WSRequestHandler::HandleGetCurrentProfile;
|
||||||
|
messageMap["ListProfiles"] = WSRequestHandler::HandleListProfiles;
|
||||||
|
|
||||||
authNotRequired.insert("GetVersion");
|
authNotRequired.insert("GetVersion");
|
||||||
authNotRequired.insert("GetAuthRequired");
|
authNotRequired.insert("GetAuthRequired");
|
||||||
@ -398,26 +406,28 @@ void WSRequestHandler::HandleSetVolume(WSRequestHandler *owner)
|
|||||||
void WSRequestHandler::HandleGetVolume(WSRequestHandler *owner)
|
void WSRequestHandler::HandleGetVolume(WSRequestHandler *owner)
|
||||||
{
|
{
|
||||||
const char *item_name = obs_data_get_string(owner->_requestData, "source");
|
const char *item_name = obs_data_get_string(owner->_requestData, "source");
|
||||||
if (item_name == NULL)
|
|
||||||
|
if (item_name)
|
||||||
|
{
|
||||||
|
obs_source_t* item = obs_get_source_by_name(item_name);
|
||||||
|
|
||||||
|
obs_data_t* response = obs_data_create();
|
||||||
|
obs_data_set_string(response, "name", item_name);
|
||||||
|
obs_data_set_double(response, "volume", obs_source_get_volume(item));
|
||||||
|
obs_data_set_bool(response, "muted", obs_source_muted(item));
|
||||||
|
|
||||||
|
owner->SendOKResponse(response);
|
||||||
|
|
||||||
|
obs_data_release(response);
|
||||||
|
obs_source_release(item);
|
||||||
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
owner->SendErrorResponse("invalid request parameters");
|
owner->SendErrorResponse("invalid request parameters");
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
obs_source_t* item = obs_get_source_by_name(item_name);
|
|
||||||
|
|
||||||
obs_data_t* response = obs_data_create();
|
|
||||||
obs_data_set_string(response, "name", item_name);
|
|
||||||
obs_data_set_double(response, "volume", obs_source_get_volume(item));
|
|
||||||
obs_data_set_bool(response, "muted", obs_source_muted(item));
|
|
||||||
|
|
||||||
owner->SendOKResponse(response);
|
|
||||||
|
|
||||||
obs_data_release(response);
|
|
||||||
obs_source_release(item);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void WSRequestHandler::ToggleMute(WSRequestHandler *owner) {
|
void WSRequestHandler::HandleToggleMute(WSRequestHandler *owner) {
|
||||||
const char *item_name = obs_data_get_string(owner->_requestData, "source");
|
const char *item_name = obs_data_get_string(owner->_requestData, "source");
|
||||||
if (item_name == NULL)
|
if (item_name == NULL)
|
||||||
{
|
{
|
||||||
@ -438,7 +448,7 @@ void WSRequestHandler::ToggleMute(WSRequestHandler *owner) {
|
|||||||
obs_source_release(item);
|
obs_source_release(item);
|
||||||
}
|
}
|
||||||
|
|
||||||
void WSRequestHandler::SetMute(WSRequestHandler *owner)
|
void WSRequestHandler::HandleSetMute(WSRequestHandler *owner)
|
||||||
{
|
{
|
||||||
const char *item_name = obs_data_get_string(owner->_requestData, "source");
|
const char *item_name = obs_data_get_string(owner->_requestData, "source");
|
||||||
bool mute = obs_data_get_bool(owner->_requestData, "mute");
|
bool mute = obs_data_get_bool(owner->_requestData, "mute");
|
||||||
@ -467,6 +477,7 @@ void WSRequestHandler::HandleSetSceneItemPosition(WSRequestHandler *owner)
|
|||||||
if (!item_name)
|
if (!item_name)
|
||||||
{
|
{
|
||||||
owner->SendErrorResponse("invalid request parameters");
|
owner->SendErrorResponse("invalid request parameters");
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
vec2 item_position = {0};
|
vec2 item_position = {0};
|
||||||
@ -497,6 +508,7 @@ void WSRequestHandler::HandleSetSceneItemTransform(WSRequestHandler *owner)
|
|||||||
if (!item_name)
|
if (!item_name)
|
||||||
{
|
{
|
||||||
owner->SendErrorResponse("invalid request parameters");
|
owner->SendErrorResponse("invalid request parameters");
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
vec2 scale;
|
vec2 scale;
|
||||||
@ -524,6 +536,68 @@ void WSRequestHandler::HandleSetSceneItemTransform(WSRequestHandler *owner)
|
|||||||
obs_source_release(current_scene);
|
obs_source_release(current_scene);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void WSRequestHandler::HandleSetCurrentSceneCollection(WSRequestHandler *owner)
|
||||||
|
{
|
||||||
|
const char* scene_collection = obs_data_get_string(owner->_requestData, "sc-name");
|
||||||
|
|
||||||
|
if (scene_collection)
|
||||||
|
{
|
||||||
|
// TODO : Check if profile exists
|
||||||
|
obs_frontend_set_current_scene_collection(scene_collection);
|
||||||
|
owner->SendOKResponse();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
owner->SendErrorResponse("invalid request parameters");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void WSRequestHandler::HandleGetCurrentSceneCollection(WSRequestHandler *owner)
|
||||||
|
{
|
||||||
|
obs_data_t *response = obs_data_create();
|
||||||
|
obs_data_set_string(response, "sc-name", obs_frontend_get_current_scene_collection());
|
||||||
|
|
||||||
|
owner->SendOKResponse(response);
|
||||||
|
|
||||||
|
obs_data_release(response);
|
||||||
|
}
|
||||||
|
|
||||||
|
void WSRequestHandler::HandleListSceneCollections(WSRequestHandler *owner)
|
||||||
|
{
|
||||||
|
// TODO
|
||||||
|
}
|
||||||
|
|
||||||
|
void WSRequestHandler::HandleSetCurrentProfile(WSRequestHandler *owner)
|
||||||
|
{
|
||||||
|
const char* profile_name = obs_data_get_string(owner->_requestData, "profile-name");
|
||||||
|
|
||||||
|
if (profile_name)
|
||||||
|
{
|
||||||
|
// TODO : check if profile exists
|
||||||
|
obs_frontend_set_current_profile(profile_name);
|
||||||
|
owner->SendOKResponse();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
owner->SendErrorResponse("invalid request parameters");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void WSRequestHandler::HandleGetCurrentProfile(WSRequestHandler *owner)
|
||||||
|
{
|
||||||
|
obs_data_t *response = obs_data_create();
|
||||||
|
obs_data_set_string(response, "profile-name", obs_frontend_get_current_profile());
|
||||||
|
|
||||||
|
owner->SendOKResponse(response);
|
||||||
|
|
||||||
|
obs_data_release(response);
|
||||||
|
}
|
||||||
|
|
||||||
|
void WSRequestHandler::HandleListProfiles(WSRequestHandler *owner)
|
||||||
|
{
|
||||||
|
// TODO
|
||||||
|
}
|
||||||
|
|
||||||
void WSRequestHandler::ErrNotImplemented(WSRequestHandler *owner)
|
void WSRequestHandler::ErrNotImplemented(WSRequestHandler *owner)
|
||||||
{
|
{
|
||||||
owner->SendErrorResponse("not implemented");
|
owner->SendErrorResponse("not implemented");
|
||||||
|
@ -68,8 +68,16 @@ class WSRequestHandler : public QObject
|
|||||||
|
|
||||||
static void HandleSetVolume(WSRequestHandler *owner);
|
static void HandleSetVolume(WSRequestHandler *owner);
|
||||||
static void HandleGetVolume(WSRequestHandler *owner);
|
static void HandleGetVolume(WSRequestHandler *owner);
|
||||||
static void ToggleMute(WSRequestHandler *owner);
|
static void HandleToggleMute(WSRequestHandler *owner);
|
||||||
static void SetMute(WSRequestHandler *owner);
|
static void HandleSetMute(WSRequestHandler *owner);
|
||||||
|
|
||||||
|
static void HandleSetCurrentSceneCollection(WSRequestHandler *owner);
|
||||||
|
static void HandleGetCurrentSceneCollection(WSRequestHandler *owner);
|
||||||
|
static void HandleListSceneCollections(WSRequestHandler *owner);
|
||||||
|
|
||||||
|
static void HandleSetCurrentProfile(WSRequestHandler *owner);
|
||||||
|
static void HandleGetCurrentProfile(WSRequestHandler *owner);
|
||||||
|
static void HandleListProfiles(WSRequestHandler *owner);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // WSPROTOCOL_H
|
#endif // WSPROTOCOL_H
|
||||||
|
Loading…
x
Reference in New Issue
Block a user