mirror of
https://github.com/Palakis/obs-websocket.git
synced 2024-08-30 18:12:16 +00:00
requests: add GetSourcesList
This commit is contained in:
@ -89,6 +89,7 @@ WSRequestHandler::WSRequestHandler(QWebSocket* client) :
|
|||||||
messageMap["SetSyncOffset"] = WSRequestHandler::HandleSetSyncOffset;
|
messageMap["SetSyncOffset"] = WSRequestHandler::HandleSetSyncOffset;
|
||||||
messageMap["GetSyncOffset"] = WSRequestHandler::HandleGetSyncOffset;
|
messageMap["GetSyncOffset"] = WSRequestHandler::HandleGetSyncOffset;
|
||||||
messageMap["GetSpecialSources"] = WSRequestHandler::HandleGetSpecialSources;
|
messageMap["GetSpecialSources"] = WSRequestHandler::HandleGetSpecialSources;
|
||||||
|
messageMap["GetSourcesList"] = WSRequestHandler::HandleGetSourcesList;
|
||||||
messageMap["GetSourceSettings"] = WSRequestHandler::HandleGetSourceSettings;
|
messageMap["GetSourceSettings"] = WSRequestHandler::HandleGetSourceSettings;
|
||||||
messageMap["SetSourceSettings"] = WSRequestHandler::HandleSetSourceSettings;
|
messageMap["SetSourceSettings"] = WSRequestHandler::HandleSetSourceSettings;
|
||||||
|
|
||||||
@ -2699,6 +2700,50 @@ void WSRequestHandler::HandleResetSceneItem(WSRequestHandler* req) {
|
|||||||
|
|
||||||
obs_source_release(scene);
|
obs_source_release(scene);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* List all sources available in the running OBS instance
|
||||||
|
*
|
||||||
|
* @return {Array of Objects} `sources` Array of sources as objects
|
||||||
|
* @return {String} `sources.*.name` Source name
|
||||||
|
* @return {String} `sources.*.type` Source type
|
||||||
|
*
|
||||||
|
* @api requests
|
||||||
|
* @name GetSourcesList
|
||||||
|
* @category sources
|
||||||
|
* @since unreleased
|
||||||
|
*/
|
||||||
|
void WSRequestHandler::HandleGetSourcesList(WSRequestHandler* req) {
|
||||||
|
obs_data_array_t* sourcesArray = obs_data_array_create();
|
||||||
|
|
||||||
|
auto source_enum = [](void* privateData, obs_source_t* source) -> bool {
|
||||||
|
obs_data_array_t* sourcesArray = (obs_data_array_t*)privateData;
|
||||||
|
|
||||||
|
obs_data_t* sourceSettings = obs_source_get_settings(source);
|
||||||
|
|
||||||
|
obs_data_t* sourceData = obs_data_create();
|
||||||
|
obs_data_set_string(sourceData, "name", obs_source_get_name(source));
|
||||||
|
obs_data_set_string(sourceData, "type", obs_source_get_id(source));
|
||||||
|
|
||||||
|
obs_data_array_push_back(sourcesArray, sourceData);
|
||||||
|
|
||||||
|
obs_data_release(sourceSettings);
|
||||||
|
obs_data_release(sourceData);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
};
|
||||||
|
obs_enum_sources(source_enum, sourcesArray);
|
||||||
|
|
||||||
|
|
||||||
|
obs_data_t* response = obs_data_create();
|
||||||
|
obs_data_set_array(response, "sources", sourcesArray);
|
||||||
|
req->SendOKResponse(response);
|
||||||
|
|
||||||
|
obs_data_release(response);
|
||||||
|
obs_data_array_release(sourcesArray);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
* Get settings of the specified source
|
* Get settings of the specified source
|
||||||
*
|
*
|
||||||
* @param {String} `sourceName` Name of the source item.
|
* @param {String} `sourceName` Name of the source item.
|
||||||
|
@ -95,6 +95,7 @@ class WSRequestHandler : public QObject {
|
|||||||
static void HandleSetSyncOffset(WSRequestHandler* req);
|
static void HandleSetSyncOffset(WSRequestHandler* req);
|
||||||
static void HandleGetSyncOffset(WSRequestHandler* req);
|
static void HandleGetSyncOffset(WSRequestHandler* req);
|
||||||
static void HandleGetSpecialSources(WSRequestHandler* req);
|
static void HandleGetSpecialSources(WSRequestHandler* req);
|
||||||
|
static void HandleGetSourcesList(WSRequestHandler* req);
|
||||||
static void HandleGetSourceSettings(WSRequestHandler* req);
|
static void HandleGetSourceSettings(WSRequestHandler* req);
|
||||||
static void HandleSetSourceSettings(WSRequestHandler* req);
|
static void HandleSetSourceSettings(WSRequestHandler* req);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user