changeset 183:03b067abd91d

Explicitly handle the individual error cases.
author Lucas Thompson <dev@lucas.im>
date Fri, 03 Feb 2017 12:41:37 +0000
parents 02c3a8596c2b
children 150cfa0c71e1
files vamp-json/VampJson.h
diffstat 1 files changed, 10 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/vamp-json/VampJson.h	Fri Feb 03 11:18:41 2017 +0000
+++ b/vamp-json/VampJson.h	Fri Feb 03 12:41:37 2017 +0000
@@ -1109,13 +1109,18 @@
 
     static bool
     successful(json11::Json j, std::string &err) {
-        if (j["result"].is_object()) {
-            return true;
-        } else if (j["error"].is_object()) {
+        const bool hasResult = j["result"].is_object();
+        const bool hasError = j["error"].is_object();
+        if (hasResult && hasError) {
+            err = "valid response may contain only one of result and error objects";
+            return false;
+        } else if (hasError) {
+            return false;
+        } else if (!hasResult) {
+            err = "either a result or an error object is required for a valid response";
             return false;
         } else {
-            err = "result or error object required for valid response";
-            return false;
+            return true;
         }
     }