From af16c7014368fbef5944e6fae584548874e9b15f Mon Sep 17 00:00:00 2001 From: Mikhail Swift Date: Sun, 12 Feb 2017 18:46:02 +0000 Subject: [PATCH 1/7] Added ToggleMute and SetMute handlers, updated PROTOCOL.md --- PROTOCOL.md | 14 ++++++++++++++ WSRequestHandler.cpp | 41 ++++++++++++++++++++++++++++++++++++++++- WSRequestHandler.h | 2 ++ 3 files changed, 56 insertions(+), 1 deletion(-) diff --git a/PROTOCOL.md b/PROTOCOL.md index d80e36c0..ec3e0c54 100644 --- a/PROTOCOL.md +++ b/PROTOCOL.md @@ -236,6 +236,20 @@ __Request fields__ : __Response__ : OK if source exists, with these additional fields : - **"name"** (string) : name of the requested source - **"volume"** (double) : volume of the requested source, on a linear scale (0.0 to 1.0) +- **"mute"** (bool) : mute status of the requested source + +### "SetMute" +Mutes or unmutes a specific source. + +__Request fields__ : +- **"source"** (string) : the name of the source +- **"mute"** (bool) : the desired mute status + +### "ToggleMute" +Inverts the mute status of a specific source. + +__Request fields__ : +- **"source"** (string) : the name of the source ### Authentication A call to `GetAuthRequired` gives the client two elements : diff --git a/WSRequestHandler.cpp b/WSRequestHandler.cpp index ba535a9d..7808fff4 100644 --- a/WSRequestHandler.cpp +++ b/WSRequestHandler.cpp @@ -49,7 +49,8 @@ WSRequestHandler::WSRequestHandler(QWebSocket *client) : messageMap["SetVolume"] = WSRequestHandler::HandleSetVolume; messageMap["GetVolume"] = WSRequestHandler::HandleGetVolume; - messageMap["ToggleMute"] = WSRequestHandler::ErrNotImplemented; + messageMap["ToggleMute"] = WSRequestHandler::ToggleMute; + messageMap["SetMute"] = WSRequestHandler::SetMute; messageMap["GetVolumes"] = WSRequestHandler::ErrNotImplemented; authNotRequired.insert("GetVersion"); @@ -382,6 +383,7 @@ void WSRequestHandler::HandleGetVolume(WSRequestHandler *owner) { 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); @@ -389,6 +391,43 @@ void WSRequestHandler::HandleGetVolume(WSRequestHandler *owner) { obs_source_release(item); } +void WSRequestHandler::ToggleMute(WSRequestHandler *owner) { + const char *item_name = obs_data_get_string(owner->_requestData, "source"); + if (item_name == NULL) { + owner->SendErrorResponse("invalid request parameters"); + return; + } + + obs_source_t* item = obs_get_source_by_name(item_name); + if (!item) { + owner->SendErrorResponse("invalid request parameters"); + } + + obs_source_set_muted(item, obs_source_muted(item)); + owner->SendOKResponse(); + + obs_source_release(item); +} + +void WSRequestHandler::SetMute(WSRequestHandler *owner) { + const char *item_name = obs_data_get_string(owner->_requestData, "source"); + bool mute = obs_data_get_bool(owner->_requestData, "mute"); + if (item_name == NULL) { + owner->SendErrorResponse("invalid request parameters"); + return; + } + + obs_source_t* item = obs_get_source_by_name(item_name); + if (!item) { + owner->SendErrorResponse("specified source doesn't exist"); + } + + obs_source_set_muted(item, mute); + owner->SendOKResponse(); + + obs_source_release(item); +} + void WSRequestHandler::ErrNotImplemented(WSRequestHandler *owner) { owner->SendErrorResponse("not implemented"); } diff --git a/WSRequestHandler.h b/WSRequestHandler.h index 720cadcd..aa7557a9 100644 --- a/WSRequestHandler.h +++ b/WSRequestHandler.h @@ -74,6 +74,8 @@ class WSRequestHandler : public QObject static void HandleSetVolume(WSRequestHandler *owner); static void HandleGetVolume(WSRequestHandler *owner); + static void ToggleMute(WSRequestHandler *owner); + static void SetMute(WSRequestHandler *owner); }; #endif // WSPROTOCOL_H From 0816d222c60ae2cb583a0dd796d226fa7a56f72a Mon Sep 17 00:00:00 2001 From: Mikhail Swift Date: Sun, 12 Feb 2017 17:55:06 -0500 Subject: [PATCH 2/7] Fixed mistake in ToggleMute --- WSRequestHandler.cpp | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/WSRequestHandler.cpp b/WSRequestHandler.cpp index 7808fff4..e9a59b41 100644 --- a/WSRequestHandler.cpp +++ b/WSRequestHandler.cpp @@ -52,7 +52,7 @@ WSRequestHandler::WSRequestHandler(QWebSocket *client) : messageMap["ToggleMute"] = WSRequestHandler::ToggleMute; messageMap["SetMute"] = WSRequestHandler::SetMute; messageMap["GetVolumes"] = WSRequestHandler::ErrNotImplemented; - + authNotRequired.insert("GetVersion"); authNotRequired.insert("GetAuthRequired"); authNotRequired.insert("Authenticate"); @@ -82,9 +82,9 @@ void WSRequestHandler::processTextMessage(QString textMessage) { _requestType = obs_data_get_string(_requestData, "request-type"); _messageId = obs_data_get_string(_requestData, "message-id"); - if (Config::Current()->AuthRequired - && !_authenticated - && authNotRequired.find(_requestType) == authNotRequired.end()) + if (Config::Current()->AuthRequired + && !_authenticated + && authNotRequired.find(_requestType) == authNotRequired.end()) { SendErrorResponse("Not Authenticated"); return; @@ -98,7 +98,7 @@ void WSRequestHandler::processTextMessage(QString textMessage) { else { SendErrorResponse("invalid request type"); } - + obs_data_release(_requestData); } @@ -249,7 +249,7 @@ void WSRequestHandler::HandleSetSourceRender(WSRequestHandler *owner) { } obs_source_t* currentScene = obs_frontend_get_current_scene(); - + obs_sceneitem_t *sceneItem = Utils::GetSceneItemFromName(currentScene, itemName); if (sceneItem != NULL) { obs_sceneitem_set_visible(sceneItem, isVisible); @@ -296,17 +296,17 @@ void WSRequestHandler::HandleStartStopRecording(WSRequestHandler *owner) { } void WSRequestHandler::HandleGetTransitionList(WSRequestHandler *owner) { - obs_source_t *current_transition = obs_frontend_get_current_transition(); + obs_source_t *current_transition = obs_frontend_get_current_transition(); obs_frontend_source_list transitionList = {}; obs_frontend_get_transitions(&transitionList); obs_data_array_t* transitions = obs_data_array_create(); for (size_t i = 0; i < transitionList.sources.num; i++) { obs_source_t* transition = transitionList.sources.array[i]; - + obs_data_t *obj = obs_data_create(); obs_data_set_string(obj, "name", obs_source_get_name(transition)); - + obs_data_array_push_back(transitions, obj); obs_data_release(obj); } @@ -379,7 +379,7 @@ void WSRequestHandler::HandleGetVolume(WSRequestHandler *owner) { } 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)); @@ -403,7 +403,7 @@ void WSRequestHandler::ToggleMute(WSRequestHandler *owner) { owner->SendErrorResponse("invalid request parameters"); } - obs_source_set_muted(item, obs_source_muted(item)); + obs_source_set_muted(item, !obs_source_muted(item)); owner->SendOKResponse(); obs_source_release(item); From c783c51915f45dc6680cbfdcfd53bf19190a2021 Mon Sep 17 00:00:00 2001 From: Mikhail Swift Date: Sun, 12 Feb 2017 22:52:20 -0500 Subject: [PATCH 3/7] update spaces to tabs in wsrequesthandler for set and toggle mute --- WSRequestHandler.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/WSRequestHandler.h b/WSRequestHandler.h index aa7557a9..57389108 100644 --- a/WSRequestHandler.h +++ b/WSRequestHandler.h @@ -74,8 +74,8 @@ class WSRequestHandler : public QObject static void HandleSetVolume(WSRequestHandler *owner); static void HandleGetVolume(WSRequestHandler *owner); - static void ToggleMute(WSRequestHandler *owner); - static void SetMute(WSRequestHandler *owner); + static void ToggleMute(WSRequestHandler *owner); + static void SetMute(WSRequestHandler *owner); }; #endif // WSPROTOCOL_H From 7f3eb9f11bef8abc511f12e21bacebcd0d7002c5 Mon Sep 17 00:00:00 2001 From: Mikhail Swift Date: Sun, 12 Feb 2017 22:54:29 -0500 Subject: [PATCH 4/7] update spaces to tabs in wsrequesthandler for toggle and set mute --- WSRequestHandler.cpp | 52 ++++++++++++++++++++++---------------------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/WSRequestHandler.cpp b/WSRequestHandler.cpp index e9a59b41..9673f740 100644 --- a/WSRequestHandler.cpp +++ b/WSRequestHandler.cpp @@ -50,7 +50,7 @@ WSRequestHandler::WSRequestHandler(QWebSocket *client) : messageMap["SetVolume"] = WSRequestHandler::HandleSetVolume; messageMap["GetVolume"] = WSRequestHandler::HandleGetVolume; messageMap["ToggleMute"] = WSRequestHandler::ToggleMute; - messageMap["SetMute"] = WSRequestHandler::SetMute; + messageMap["SetMute"] = WSRequestHandler::SetMute; messageMap["GetVolumes"] = WSRequestHandler::ErrNotImplemented; authNotRequired.insert("GetVersion"); @@ -392,40 +392,40 @@ void WSRequestHandler::HandleGetVolume(WSRequestHandler *owner) { } void WSRequestHandler::ToggleMute(WSRequestHandler *owner) { - const char *item_name = obs_data_get_string(owner->_requestData, "source"); - if (item_name == NULL) { - owner->SendErrorResponse("invalid request parameters"); - return; - } + const char *item_name = obs_data_get_string(owner->_requestData, "source"); + if (item_name == NULL) { + owner->SendErrorResponse("invalid request parameters"); + return; + } - obs_source_t* item = obs_get_source_by_name(item_name); - if (!item) { - owner->SendErrorResponse("invalid request parameters"); - } + obs_source_t* item = obs_get_source_by_name(item_name); + if (!item) { + owner->SendErrorResponse("invalid request parameters"); + } - obs_source_set_muted(item, !obs_source_muted(item)); - owner->SendOKResponse(); + obs_source_set_muted(item, !obs_source_muted(item)); + owner->SendOKResponse(); - obs_source_release(item); + obs_source_release(item); } void WSRequestHandler::SetMute(WSRequestHandler *owner) { - const char *item_name = obs_data_get_string(owner->_requestData, "source"); - bool mute = obs_data_get_bool(owner->_requestData, "mute"); - if (item_name == NULL) { - owner->SendErrorResponse("invalid request parameters"); - return; - } + const char *item_name = obs_data_get_string(owner->_requestData, "source"); + bool mute = obs_data_get_bool(owner->_requestData, "mute"); + if (item_name == NULL) { + owner->SendErrorResponse("invalid request parameters"); + return; + } - obs_source_t* item = obs_get_source_by_name(item_name); - if (!item) { - owner->SendErrorResponse("specified source doesn't exist"); - } + obs_source_t* item = obs_get_source_by_name(item_name); + if (!item) { + owner->SendErrorResponse("specified source doesn't exist"); + } - obs_source_set_muted(item, mute); - owner->SendOKResponse(); + obs_source_set_muted(item, mute); + owner->SendOKResponse(); - obs_source_release(item); + obs_source_release(item); } void WSRequestHandler::ErrNotImplemented(WSRequestHandler *owner) { From bbf3b0f86fab058da3be8cd5198ddc607b35f8b3 Mon Sep 17 00:00:00 2001 From: Mikhail Swift Date: Sun, 12 Feb 2017 23:06:00 -0500 Subject: [PATCH 5/7] updated mistake in protocol.md --- PROTOCOL.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PROTOCOL.md b/PROTOCOL.md index ec3e0c54..caffc708 100644 --- a/PROTOCOL.md +++ b/PROTOCOL.md @@ -236,7 +236,7 @@ __Request fields__ : __Response__ : OK if source exists, with these additional fields : - **"name"** (string) : name of the requested source - **"volume"** (double) : volume of the requested source, on a linear scale (0.0 to 1.0) -- **"mute"** (bool) : mute status of the requested source +- **"muted"** (bool) : mute status of the requested source ### "SetMute" Mutes or unmutes a specific source. From 3e9001721e6267518f28f4ba6ec331691c19456b Mon Sep 17 00:00:00 2001 From: Mikhail Swift Date: Mon, 13 Feb 2017 12:08:36 -0500 Subject: [PATCH 6/7] Fixed incorrect header level for SetMute and ToggleMute --- PROTOCOL.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/PROTOCOL.md b/PROTOCOL.md index caffc708..cfc079d8 100644 --- a/PROTOCOL.md +++ b/PROTOCOL.md @@ -238,14 +238,14 @@ __Response__ : OK if source exists, with these additional fields : - **"volume"** (double) : volume of the requested source, on a linear scale (0.0 to 1.0) - **"muted"** (bool) : mute status of the requested source -### "SetMute" +#### "SetMute" Mutes or unmutes a specific source. __Request fields__ : - **"source"** (string) : the name of the source - **"mute"** (bool) : the desired mute status -### "ToggleMute" +#### "ToggleMute" Inverts the mute status of a specific source. __Request fields__ : From e0db0e394d3df19b1ae94024d0453c1e2a090513 Mon Sep 17 00:00:00 2001 From: Mikhail Swift Date: Mon, 13 Feb 2017 12:09:44 -0500 Subject: [PATCH 7/7] Added missing return statements to ToggleMute and SetMute handlers --- WSRequestHandler.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/WSRequestHandler.cpp b/WSRequestHandler.cpp index 9673f740..293ccc76 100644 --- a/WSRequestHandler.cpp +++ b/WSRequestHandler.cpp @@ -401,6 +401,7 @@ void WSRequestHandler::ToggleMute(WSRequestHandler *owner) { obs_source_t* item = obs_get_source_by_name(item_name); if (!item) { owner->SendErrorResponse("invalid request parameters"); + return; } obs_source_set_muted(item, !obs_source_muted(item)); @@ -420,6 +421,7 @@ void WSRequestHandler::SetMute(WSRequestHandler *owner) { obs_source_t* item = obs_get_source_by_name(item_name); if (!item) { owner->SendErrorResponse("specified source doesn't exist"); + return; } obs_source_set_muted(item, mute);