blob: d8e03247cee2bcb9de1f0e44bba9490019a41183 [file] [log] [blame]
// Copyright 2015 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "buffet/buffet_config.h"
#include <base/logging.h>
#include <base/strings/string_number_conversions.h>
namespace {
// TODO(vitalybuka): Remove this when deviceKind is gone from server.
std::string GetDeviceKind(const std::string& manifest_id) {
CHECK_EQ(5u, manifest_id.size());
std::string kind = manifest_id.substr(0, 2);
if (kind == "AC")
return "accessPoint";
if (kind == "AK")
return "aggregator";
if (kind == "AM")
return "camera";
if (kind == "AB")
return "developmentBoard";
if (kind == "AE")
return "printer";
if (kind == "AF")
return "scanner";
if (kind == "AD")
return "speaker";
if (kind == "AL")
return "storage";
if (kind == "AJ")
return "toy";
if (kind == "AA")
return "vendor";
if (kind == "AN")
return "video";
LOG(FATAL) << "Invalid model id: " << manifest_id;
return std::string();
}
} // namespace
namespace buffet {
namespace config_keys {
const char kClientId[] = "client_id";
const char kClientSecret[] = "client_secret";
const char kApiKey[] = "api_key";
const char kOAuthURL[] = "oauth_url";
const char kServiceURL[] = "service_url";
const char kName[] = "name";
const char kDescription[] = "description";
const char kLocation[] = "location";
const char kOemName[] = "oem_name";
const char kModelName[] = "model_name";
const char kModelId[] = "model_id";
const char kPollingPeriodMs[] = "polling_period_ms";
} // namespace config_keys
void BuffetConfig::Load(const base::FilePath& config_path) {
chromeos::KeyValueStore store;
if (store.Load(config_path)) {
Load(store);
}
}
void BuffetConfig::Load(const chromeos::KeyValueStore& store) {
store.GetString(config_keys::kClientId, &client_id_);
CHECK(!client_id_.empty());
store.GetString(config_keys::kClientSecret, &client_secret_);
CHECK(!client_secret_.empty());
store.GetString(config_keys::kApiKey, &api_key_);
CHECK(!api_key_.empty());
store.GetString(config_keys::kOAuthURL, &oauth_url_);
CHECK(!oauth_url_.empty());
store.GetString(config_keys::kServiceURL, &service_url_);
CHECK(!service_url_.empty());
store.GetString(config_keys::kOemName, &oem_name_);
CHECK(!oem_name_.empty());
store.GetString(config_keys::kModelName, &model_name_);
CHECK(!model_name_.empty());
store.GetString(config_keys::kModelId, &model_id_);
device_kind_ = GetDeviceKind(model_id_);
std::string polling_period_str;
if (store.GetString(config_keys::kPollingPeriodMs, &polling_period_str))
CHECK(base::StringToUint64(polling_period_str, &polling_period_ms_));
store.GetString(config_keys::kName, &name_);
CHECK(!name_.empty());
store.GetString(config_keys::kDescription, &description_);
store.GetString(config_keys::kLocation, &location_);
}
void BuffetConfig::set_name(const std::string& name) {
CHECK(!name.empty());
name_ = name;
}
} // namespace buffet