// Copyright 2014 The Chromium 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 "chrome/browser/local_discovery/gcd_registration_ticket_request.h" #include "chrome/browser/local_discovery/gcd_constants.h" #include "chrome/common/cloud_print/cloud_print_constants.h" #include "components/cloud_devices/common/cloud_devices_urls.h" namespace local_discovery { namespace { const char kUploadData[] = "{ \"userEmail\": \"me\" }"; const char kKindRegistrationTicket[] = "clouddevices#registrationTicket"; const char kGCDKeyId[] = "id"; } GCDRegistrationTicketRequest::GCDRegistrationTicketRequest( const ResponseCallback& callback) : callback_(callback) { } GCDRegistrationTicketRequest::~GCDRegistrationTicketRequest() { } void GCDRegistrationTicketRequest::GetUploadData(std::string* upload_type, std::string* upload_data) { *upload_data = kUploadData; // TODO(noamsml): Move this constant to cloud_devices component. *upload_type = cloud_print::kContentTypeJSON; } net::URLFetcher::RequestType GCDRegistrationTicketRequest::GetRequestType() { return net::URLFetcher::POST; } void GCDRegistrationTicketRequest::OnGCDAPIFlowError( GCDApiFlow::Status status) { callback_.Run(std::string(), std::string()); } void GCDRegistrationTicketRequest::OnGCDAPIFlowComplete( const base::DictionaryValue& value) { std::string kind; std::string id; std::string device_id; value.GetString(kGCDKeyKind, &kind); if (kind == kKindRegistrationTicket) { value.GetString(kGCDKeyId, &id); value.GetString(kGCDKeyDeviceId, &device_id); } callback_.Run(id, device_id); } GURL GCDRegistrationTicketRequest::GetURL() { return cloud_devices::GetCloudDevicesRelativeURL("registrationTickets"); } } // namespace local_discovery