buffet: Switch to new registration workflow, user-initiated.
BUG=None
TEST=None
Change-Id: I181065640b8f887dcd3b530942b1d7531f49aedd
Reviewed-on: https://chromium-review.googlesource.com/219720
Reviewed-by: Alex Vakulenko <avakulenko@chromium.org>
Commit-Queue: Anton Muhin <antonm@chromium.org>
Tested-by: Anton Muhin <antonm@chromium.org>
diff --git a/buffet/device_registration_info.cc b/buffet/device_registration_info.cc
index d4b22a2..3e35cec 100644
--- a/buffet/device_registration_info.cc
+++ b/buffet/device_registration_info.cc
@@ -343,31 +343,16 @@
std::string DeviceRegistrationInfo::StartRegistration(
const std::map<std::string, std::string>& params,
chromeos::ErrorPtr* error) {
+ GetParamValue(params, "ticket_id", &ticket_id_);
GetParamValue(params, storage_keys::kClientId, &client_id_);
GetParamValue(params, storage_keys::kClientSecret, &client_secret_);
GetParamValue(params, storage_keys::kApiKey, &api_key_);
- GetParamValue(params, storage_keys::kDeviceId, &device_id_);
GetParamValue(params, storage_keys::kDeviceKind, &device_kind_);
GetParamValue(params, storage_keys::kSystemName, &system_name_);
GetParamValue(params, storage_keys::kDisplayName, &display_name_);
GetParamValue(params, storage_keys::kOAuthURL, &oauth_url_);
GetParamValue(params, storage_keys::kServiceURL, &service_url_);
- if (!CheckParam(storage_keys::kClientId, client_id_, error))
- return std::string();
- if (!CheckParam(storage_keys::kClientSecret, client_secret_, error))
- return std::string();
- if (!CheckParam(storage_keys::kApiKey, api_key_, error))
- return std::string();
- if (!CheckParam(storage_keys::kDeviceKind, device_kind_, error))
- return std::string();
- if (!CheckParam(storage_keys::kSystemName, system_name_, error))
- return std::string();
- if (!CheckParam(storage_keys::kOAuthURL, oauth_url_, error))
- return std::string();
- if (!CheckParam(storage_keys::kServiceURL, service_url_, error))
- return std::string();
-
std::unique_ptr<base::DictionaryValue> commands =
command_manager_->GetCommandDictionary().GetCommandsAsJson(true, error);
if (!commands)
@@ -379,26 +364,27 @@
return std::string();
base::DictionaryValue req_json;
+ req_json.SetString("id", ticket_id_);
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_);
+ if (!display_name_.empty())
+ req_json.SetString("deviceDraft.displayName", display_name_);
req_json.SetString("deviceDraft.channel.supportedType", "xmpp");
req_json.Set("deviceDraft.commandDefs", commands.release());
req_json.Set("deviceDraft.state", state.release());
- std::string url = GetServiceURL("registrationTickets", {{"key", api_key_}});
+ int status_code{0};
+ auto url = GetServiceURL("registrationTickets/" + ticket_id_,
+ {{"key", api_key_}});
auto resp_json = chromeos::http::ParseJsonResponse(
- chromeos::http::PostJson(url, &req_json, transport_, error).get(),
- nullptr, error);
+ chromeos::http::PatchJson(url, &req_json, transport_, error).get(),
+ &status_code, error);
if (!resp_json)
return std::string();
- if (!resp_json->GetString("id", &ticket_id_)) {
- chromeos::Error::AddTo(error, kErrorDomainGCD, "unexpected_response",
- "Device ID missing");
+ if (status_code >= chromeos::http::status_code::BadRequest)
return std::string();
- }
std::string auth_url = GetOAuthURL("auth", {
{"scope", "https://www.googleapis.com/auth/clouddevices"},