WSRequestHandler: add type checks for field test methods

This commit is contained in:
Stéphane Lepin 2019-08-02 21:40:42 +02:00
parent 57ce3cf80b
commit f097b36c2e
2 changed files with 43 additions and 4 deletions

View File

@ -226,9 +226,42 @@ HandlerResponse WSRequestHandler::SendResponse(const char* status, obs_data_t* f
return response;
}
bool WSRequestHandler::hasField(QString name) {
if (!data || name.isEmpty() || name.isNull())
bool WSRequestHandler::hasField(QString name, obs_data_type expectedFieldType) {
if (!data || name.isEmpty() || name.isNull()) {
return false;
}
return obs_data_has_user_value(data, name.toUtf8());
obs_data_item_t* dataItem = obs_data_item_byname(data, name.toUtf8());
if (!dataItem) {
return false;
}
if (expectedFieldType != OBS_DATA_NULL) {
obs_data_type fieldType = obs_data_item_gettype(dataItem);
if (fieldType != expectedFieldType) {
return false;
}
}
return true;
}
bool WSRequestHandler::hasBool(QString fieldName) {
return this->hasField(fieldName, OBS_DATA_BOOLEAN);
}
bool WSRequestHandler::hasString(QString fieldName) {
return this->hasField(fieldName, OBS_DATA_STRING);
}
bool WSRequestHandler::hasNumber(QString fieldName) {
return this->hasField(fieldName, OBS_DATA_NUMBER);
}
bool WSRequestHandler::hasArray(QString fieldName) {
return this->hasField(fieldName, OBS_DATA_ARRAY);
}
bool WSRequestHandler::hasObject(QString fieldName) {
return this->hasField(fieldName, OBS_DATA_OBJECT);
}

View File

@ -41,7 +41,13 @@ class WSRequestHandler : public QObject {
explicit WSRequestHandler(ConnectionProperties& connProperties);
~WSRequestHandler();
std::string processIncomingMessage(std::string& textMessage);
bool hasField(QString name);
bool hasField(QString fieldName, obs_data_type expectedFieldType = OBS_DATA_NULL);
bool hasBool(QString fieldName);
bool hasString(QString fieldName);
bool hasNumber(QString fieldName);
bool hasArray(QString fieldName);
bool hasObject(QString fieldName);
HandlerResponse SendOKResponse(obs_data_t* additionalFields = nullptr);
HandlerResponse SendErrorResponse(QString errorMessage);