buffet: Add GCD device draft record to device registration
Use the command definitions provided by Command Manager in
device registration record sent to GCD server.
BUG=chromium:396716
TEST=USE=buffet P2_TEST_FILTER="buffet::*" FEATURES=test emerge-link platform2
Change-Id: If9109bfee8862d9252cdb03301a4362492064809
Reviewed-on: https://chromium-review.googlesource.com/210146
Reviewed-by: Christopher Wiley <wiley@chromium.org>
Tested-by: Alex Vakulenko <avakulenko@chromium.org>
Commit-Queue: Alex Vakulenko <avakulenko@chromium.org>
diff --git a/buffet/device_registration_info.cc b/buffet/device_registration_info.cc
index 0ec3de7..6c21429 100644
--- a/buffet/device_registration_info.cc
+++ b/buffet/device_registration_info.cc
@@ -11,6 +11,8 @@
#include <base/json/json_writer.h>
#include <base/values.h>
+#include "buffet/commands/command_definition.h"
+#include "buffet/commands/command_manager.h"
#include "buffet/data_encoding.h"
#include "buffet/device_registration_storage_keys.h"
#include "buffet/http_transport_curl.h"
@@ -356,36 +358,18 @@
if (!CheckParam(storage_keys::kServiceURL, service_url_, error))
return std::string();
- std::vector<std::pair<std::string, std::vector<std::string>>> commands = {
- {"SetDeviceConfiguration", {"data"}}
- };
+ std::unique_ptr<base::DictionaryValue> commands =
+ command_manager_->GetCommandDictionary().GetCommandsAsJson(true, error);
+ if (!commands)
+ return std::string();
base::DictionaryValue req_json;
- base::ListValue* set_device_configuration_params = new base::ListValue;
- base::DictionaryValue* param1 = new base::DictionaryValue;
- param1->SetString("name", "data");
- set_device_configuration_params->Append(param1);
-
- base::ListValue* vendor_commands = new base::ListValue;
- for (const auto& pair : commands) {
- base::ListValue* params = new base::ListValue;
- for (const auto& param_name : pair.second) {
- base::DictionaryValue* param = new base::DictionaryValue;
- param->SetString("name", param_name);
- params->Append(param);
- }
- base::DictionaryValue* command = new base::DictionaryValue;
- command->SetString("name", pair.first);
- command->Set("parameter", params);
- vendor_commands->Append(command);
- }
-
req_json.SetString("oauthClientId", client_id_);
req_json.SetString("deviceDraft.deviceKind", device_kind_);
req_json.SetString("deviceDraft.systemName", system_name_);
req_json.SetString("deviceDraft.displayName", display_name_);
req_json.SetString("deviceDraft.channel.supportedType", "xmpp");
- req_json.Set("deviceDraft.commands.base.vendorCommands", vendor_commands);
+ req_json.Set("deviceDraft.commandDefs", commands.release());
std::string url = GetServiceURL("registrationTickets", {{"key", api_key_}});
auto resp_json = http::ParseJsonResponse(