json_helper: move get here (from app)
[staging/windowmanager.git] / src / json_helper.hpp
index 7d5d26f..840a8c3 100644 (file)
@@ -1,7 +1,9 @@
 #ifndef TMCAGLWM_JSON_HELPER_HPP
 #define TMCAGLWM_JSON_HELPER_HPP
 
+#include <json.hpp>
 #include "wayland.hpp"
+#include "result.hpp"
 
 struct json_object;
 
@@ -9,4 +11,14 @@ json_object *to_json(genivi::screen const *s);
 json_object *to_json(genivi::controller::props_map const &s);
 json_object *to_json(std::vector<uint32_t> const &v);
 
+// We ned to manually unwrap numbers
+template <typename T>
+wm::result<T> get(nlohmann::json const &j) {
+   DB(j);
+   T r;
+   std::istringstream s(j.get<std::string>());
+   s >> r;
+   return !s.eof() || s.fail() ? wm::Err<T>("Could not read int") : wm::Ok(r);
+}
+
 #endif  // TMCAGLWM_JSON_HELPER_HPP