From fb0d13a171a73b51bdeef8d636f8201ccb15320a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Lepin?= Date: Fri, 2 Aug 2019 21:52:50 +0200 Subject: [PATCH] WSRequestHandler: add int and double type check methods --- src/WSRequestHandler.cpp | 21 ++++++++++++++++++--- src/WSRequestHandler.h | 7 +++++-- 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/src/WSRequestHandler.cpp b/src/WSRequestHandler.cpp index 932b7e4b..1b936528 100644 --- a/src/WSRequestHandler.cpp +++ b/src/WSRequestHandler.cpp @@ -226,7 +226,7 @@ HandlerResponse WSRequestHandler::SendResponse(const char* status, obs_data_t* f return response; } -bool WSRequestHandler::hasField(QString name, obs_data_type expectedFieldType) { +bool WSRequestHandler::hasField(QString name, obs_data_type expectedFieldType, obs_data_number_type expectedNumberType) { if (!data || name.isEmpty() || name.isNull()) { return false; } @@ -241,6 +241,13 @@ bool WSRequestHandler::hasField(QString name, obs_data_type expectedFieldType) { if (fieldType != expectedFieldType) { return false; } + + if (fieldType == OBS_DATA_NUMBER && expectedNumberType != OBS_DATA_NUM_INVALID) { + obs_data_number_type numberType = obs_data_item_numtype(dataItem); + if (numberType != expectedNumberType) { + return false; + } + } } return true; @@ -254,8 +261,16 @@ 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::hasNumber(QString fieldName, obs_data_number_type expectedNumberType) { + return this->hasField(fieldName, OBS_DATA_NUMBER, expectedNumberType); +} + +bool WSRequestHandler::hasInteger(QString fieldName) { + return this->hasNumber(fieldName, OBS_DATA_NUM_INT); +} + +bool WSRequestHandler::hasDouble(QString fieldName) { + return this->hasNumber(fieldName, OBS_DATA_NUM_DOUBLE); } bool WSRequestHandler::hasArray(QString fieldName) { diff --git a/src/WSRequestHandler.h b/src/WSRequestHandler.h index 372f8c36..d9265ebf 100644 --- a/src/WSRequestHandler.h +++ b/src/WSRequestHandler.h @@ -42,10 +42,13 @@ class WSRequestHandler : public QObject { ~WSRequestHandler(); std::string processIncomingMessage(std::string& textMessage); - bool hasField(QString fieldName, obs_data_type expectedFieldType = OBS_DATA_NULL); + bool hasField(QString fieldName, obs_data_type expectedFieldType = OBS_DATA_NULL, + obs_data_number_type expectedNumberType = OBS_DATA_NUM_INVALID); bool hasBool(QString fieldName); bool hasString(QString fieldName); - bool hasNumber(QString fieldName); + bool hasNumber(QString fieldName, obs_data_number_type expectedNumberType = OBS_DATA_NUM_INVALID); + bool hasInteger(QString fieldName); + bool hasDouble(QString fieldName); bool hasArray(QString fieldName); bool hasObject(QString fieldName);