buffet: Add D-Bus API to change GCD service settings

Added function UpdateServiceConfig that can be used to switch servers
for testing. Function modifies client_id, client_secret, api_key,
oauth_url and service_url.

BUG=brillo:1058
TEST='FEATURES=test emerge-gizmo buffet'

Change-Id: Ia8f8ba3ad57372ecedbff2819ce1991ba391a41d
Reviewed-on: https://chromium-review.googlesource.com/271387
Tested-by: Vitaly Buka <vitalybuka@chromium.org>
Reviewed-by: Alex Vakulenko <avakulenko@chromium.org>
Commit-Queue: Vitaly Buka <vitalybuka@chromium.org>
diff --git a/buffet/buffet_config.cc b/buffet/buffet_config.cc
index 4d97098..a8a753f 100644
--- a/buffet/buffet_config.cc
+++ b/buffet/buffet_config.cc
@@ -147,47 +147,61 @@
   if (!value || !value->GetAsDictionary(&dict))
     return;
 
-  std::string name;
-  if (dict->GetString(config_keys::kName, &name))
-    set_name(name);
+  std::string tmp;
+  bool tmp_bool{false};
 
-  std::string description;
-  if (dict->GetString(config_keys::kDescription, &description))
-    set_description(description);
+  if (dict->GetString(config_keys::kClientId, &tmp))
+    set_client_id(tmp);
 
-  std::string location;
-  if (dict->GetString(config_keys::kLocation, &location))
-    set_location(location);
+  if (dict->GetString(config_keys::kClientSecret, &tmp))
+    set_client_secret(tmp);
 
-  std::string access_role;
-  if (dict->GetString(config_keys::kLocalAnonymousAccessRole, &access_role))
-    set_local_anonymous_access_role(access_role);
+  if (dict->GetString(config_keys::kApiKey, &tmp))
+    set_api_key(tmp);
 
-  bool discovery_enabled{false};
-  if (dict->GetBoolean(config_keys::kLocalDiscoveryEnabled, &discovery_enabled))
-    set_local_discovery_enabled(discovery_enabled);
+  if (dict->GetString(config_keys::kOAuthURL, &tmp))
+    set_oauth_url(tmp);
 
-  bool pairing_enabled{false};
-  if (dict->GetBoolean(config_keys::kLocalPairingEnabled, &pairing_enabled))
-    set_local_pairing_enabled(pairing_enabled);
+  if (dict->GetString(config_keys::kServiceURL, &tmp))
+    set_service_url(tmp);
 
-  std::string token;
-  if (dict->GetString(config_keys::kRefreshToken, &token))
-    set_refresh_token(token);
+  if (dict->GetString(config_keys::kName, &tmp))
+    set_name(tmp);
 
-  std::string account;
-  if (dict->GetString(config_keys::kRobotAccount, &account))
-    set_robot_account(account);
+  if (dict->GetString(config_keys::kDescription, &tmp))
+    set_description(tmp);
 
-  std::string device_id;
-  if (dict->GetString(config_keys::kDeviceId, &device_id))
-    set_device_id(device_id);
+  if (dict->GetString(config_keys::kLocation, &tmp))
+    set_location(tmp);
+
+  if (dict->GetString(config_keys::kLocalAnonymousAccessRole, &tmp))
+    set_local_anonymous_access_role(tmp);
+
+  if (dict->GetBoolean(config_keys::kLocalDiscoveryEnabled, &tmp_bool))
+    set_local_discovery_enabled(tmp_bool);
+
+  if (dict->GetBoolean(config_keys::kLocalPairingEnabled, &tmp_bool))
+    set_local_pairing_enabled(tmp_bool);
+
+  if (dict->GetString(config_keys::kRefreshToken, &tmp))
+    set_refresh_token(tmp);
+
+  if (dict->GetString(config_keys::kRobotAccount, &tmp))
+    set_robot_account(tmp);
+
+  if (dict->GetString(config_keys::kDeviceId, &tmp))
+    set_device_id(tmp);
 }
 
 bool BuffetConfig::Save() {
   if (!storage_)
     return false;
   base::DictionaryValue dict;
+  dict.SetString(config_keys::kClientId, client_id_);
+  dict.SetString(config_keys::kClientSecret, client_secret_);
+  dict.SetString(config_keys::kApiKey, api_key_);
+  dict.SetString(config_keys::kOAuthURL, oauth_url_);
+  dict.SetString(config_keys::kServiceURL, service_url_);
   dict.SetString(config_keys::kRefreshToken, refresh_token_);
   dict.SetString(config_keys::kDeviceId, device_id_);
   dict.SetString(config_keys::kRobotAccount, robot_account_);