Merge pull request #37 from mikhailswift/add_mute_source_command

Add mute source commands
This commit is contained in:
Stéphane L 2017-02-13 21:17:16 +01:00 committed by GitHub
commit bb232f1b3e
3 changed files with 68 additions and 11 deletions

View File

@ -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)
- **"muted"** (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 :

View File

@ -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,45 @@ 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");
return;
}
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");
return;
}
obs_source_set_muted(item, mute);
owner->SendOKResponse();
obs_source_release(item);
}
void WSRequestHandler::ErrNotImplemented(WSRequestHandler *owner) {
owner->SendErrorResponse("not implemented");
}

View File

@ -72,6 +72,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