requests(sources): add GetSourceFilterInfo method

This commit is contained in:
Stéphane Lepin 2019-11-11 12:47:10 +01:00
parent b8fcf0355c
commit 897f115363
3 changed files with 40 additions and 0 deletions

View File

@ -95,6 +95,7 @@ QHash<QString, HandlerResponse(*)(WSRequestHandler*)> WSRequestHandler::messageM
{ "TakeSourceScreenshot", WSRequestHandler::HandleTakeSourceScreenshot },
{ "GetSourceFilters", WSRequestHandler::HandleGetSourceFilters },
{ "GetSourceFilterInfo", WSRequestHandler::HandleGetSourceFilterInfo },
{ "AddFilterToSource", WSRequestHandler::HandleAddFilterToSource },
{ "RemoveFilterFromSource", WSRequestHandler::HandleRemoveFilterFromSource },
{ "ReorderSourceFilter", WSRequestHandler::HandleReorderSourceFilter },

View File

@ -139,6 +139,7 @@ class WSRequestHandler : public QObject {
static HandlerResponse HandleTakeSourceScreenshot(WSRequestHandler* req);
static HandlerResponse HandleGetSourceFilters(WSRequestHandler* req);
static HandlerResponse HandleGetSourceFilterInfo(WSRequestHandler* req);
static HandlerResponse HandleAddFilterToSource(WSRequestHandler* req);
static HandlerResponse HandleRemoveFilterFromSource(WSRequestHandler* req);
static HandlerResponse HandleReorderSourceFilter(WSRequestHandler* req);

View File

@ -1090,6 +1090,44 @@ HandlerResponse WSRequestHandler::HandleGetSourceFilters(WSRequestHandler* req)
return req->SendOKResponse(response);
}
/**
* List filters applied to a source
*
* @param {String} `sourceName` Source name
* @param {String} `filterName` Source filter name
*
* @return {Boolean} `enabled` Filter status (enabled or not)
* @return {String} `type` Filter type
* @return {String} `name` Filter name
* @return {Object} `settings` Filter settings
*
* @api requests
* @name GetSourceFilterInfo
* @category sources
* @since 4.7.0
*/
HandlerResponse WSRequestHandler::HandleGetSourceFilterInfo(WSRequestHandler* req)
{
if (!req->hasField("sourceName") || !req->hasField("filterName")) {
return req->SendErrorResponse("missing request parameters");
}
const char* sourceName = obs_data_get_string(req->data, "sourceName");
OBSSourceAutoRelease source = obs_get_source_by_name(sourceName);
if (!source) {
return req->SendErrorResponse("specified source doesn't exist");
}
const char* filterName = obs_data_get_string(req->data, "filterName");
OBSSourceAutoRelease filter = obs_source_get_filter_by_name(source, "filterName");
if (!filter) {
return req->SendErrorResponse("specified filter doesn't exist on specified source");
}
OBSDataAutoRelease response = Utils::GetSourceFilterInfo(filter, true);
return req->SendOKResponse(response);
}
/**
* Add a new filter to a source. Available source types along with their settings properties are available from `GetSourceTypesList`.
*