mirror of
https://github.com/Palakis/obs-websocket.git
synced 2024-08-30 18:12:16 +00:00
Added ToggleMute and SetMute handlers, updated PROTOCOL.md
This commit is contained in:
parent
3bd600ed52
commit
af16c70143
14
PROTOCOL.md
14
PROTOCOL.md
@ -236,6 +236,20 @@ __Request fields__ :
|
|||||||
__Response__ : OK if source exists, with these additional fields :
|
__Response__ : OK if source exists, with these additional fields :
|
||||||
- **"name"** (string) : name of the requested source
|
- **"name"** (string) : name of the requested source
|
||||||
- **"volume"** (double) : volume of the requested source, on a linear scale (0.0 to 1.0)
|
- **"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
|
### Authentication
|
||||||
A call to `GetAuthRequired` gives the client two elements :
|
A call to `GetAuthRequired` gives the client two elements :
|
||||||
|
@ -49,7 +49,8 @@ WSRequestHandler::WSRequestHandler(QWebSocket *client) :
|
|||||||
|
|
||||||
messageMap["SetVolume"] = WSRequestHandler::HandleSetVolume;
|
messageMap["SetVolume"] = WSRequestHandler::HandleSetVolume;
|
||||||
messageMap["GetVolume"] = WSRequestHandler::HandleGetVolume;
|
messageMap["GetVolume"] = WSRequestHandler::HandleGetVolume;
|
||||||
messageMap["ToggleMute"] = WSRequestHandler::ErrNotImplemented;
|
messageMap["ToggleMute"] = WSRequestHandler::ToggleMute;
|
||||||
|
messageMap["SetMute"] = WSRequestHandler::SetMute;
|
||||||
messageMap["GetVolumes"] = WSRequestHandler::ErrNotImplemented;
|
messageMap["GetVolumes"] = WSRequestHandler::ErrNotImplemented;
|
||||||
|
|
||||||
authNotRequired.insert("GetVersion");
|
authNotRequired.insert("GetVersion");
|
||||||
@ -382,6 +383,7 @@ void WSRequestHandler::HandleGetVolume(WSRequestHandler *owner) {
|
|||||||
obs_data_t* response = obs_data_create();
|
obs_data_t* response = obs_data_create();
|
||||||
obs_data_set_string(response, "name", item_name);
|
obs_data_set_string(response, "name", item_name);
|
||||||
obs_data_set_double(response, "volume", obs_source_get_volume(item));
|
obs_data_set_double(response, "volume", obs_source_get_volume(item));
|
||||||
|
obs_data_set_bool(response, "muted", obs_source_muted(item));
|
||||||
|
|
||||||
owner->SendOKResponse(response);
|
owner->SendOKResponse(response);
|
||||||
|
|
||||||
@ -389,6 +391,43 @@ void WSRequestHandler::HandleGetVolume(WSRequestHandler *owner) {
|
|||||||
obs_source_release(item);
|
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) {
|
void WSRequestHandler::ErrNotImplemented(WSRequestHandler *owner) {
|
||||||
owner->SendErrorResponse("not implemented");
|
owner->SendErrorResponse("not implemented");
|
||||||
}
|
}
|
||||||
|
@ -74,6 +74,8 @@ 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 SetMute(WSRequestHandler *owner);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // WSPROTOCOL_H
|
#endif // WSPROTOCOL_H
|
||||||
|
Loading…
x
Reference in New Issue
Block a user