T parsePlugin()

in src/oomd/config/JsonConfigParser.cpp [44:72]


T parsePlugin(const Json::Value& plugin) {
  if (!plugin.isObject()) {
    return {};
  }

  const auto& name = plugin["name"];
  if (!name.isString()) {
    return {};
  }

  T ret;
  ret.name = name.asString();

  const auto& json_args = plugin["args"];
  if (!json_args.isObject()) {
    return ret;
  }

  for (const auto& key : json_args.getMemberNames()) {
    const auto& value = json_args[key];
    // Value has to be a string, number, or bool
    if (!value.isString() && !value.isNumeric() && !value.isBool()) {
      return ret;
    }
    ret.args[key] = value.asString();
  }

  return ret;
}