1 // Copyright 2014 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "chrome/browser/local_discovery/gcd_registration_ticket_request.h" 6 7 #include "chrome/browser/local_discovery/gcd_constants.h" 8 #include "chrome/common/cloud_print/cloud_print_constants.h" 9 #include "components/cloud_devices/common/cloud_devices_urls.h" 10 11 namespace local_discovery { 12 13 namespace { 14 15 const char kUploadData[] = "{ \"userEmail\": \"me\" }"; 16 const char kKindRegistrationTicket[] = "clouddevices#registrationTicket"; 17 const char kGCDKeyId[] = "id"; 18 } 19 20 GCDRegistrationTicketRequest::GCDRegistrationTicketRequest( 21 const ResponseCallback& callback) 22 : callback_(callback) { 23 } 24 25 GCDRegistrationTicketRequest::~GCDRegistrationTicketRequest() { 26 } 27 28 void GCDRegistrationTicketRequest::GetUploadData(std::string* upload_type, 29 std::string* upload_data) { 30 *upload_data = kUploadData; 31 32 // TODO(noamsml): Move this constant to cloud_devices component. 33 *upload_type = cloud_print::kContentTypeJSON; 34 } 35 36 net::URLFetcher::RequestType GCDRegistrationTicketRequest::GetRequestType() { 37 return net::URLFetcher::POST; 38 } 39 40 void GCDRegistrationTicketRequest::OnGCDAPIFlowError( 41 GCDApiFlow::Status status) { 42 callback_.Run(std::string()); 43 } 44 45 void GCDRegistrationTicketRequest::OnGCDAPIFlowComplete( 46 const base::DictionaryValue& value) { 47 std::string kind; 48 std::string id; 49 value.GetString(kGCDKeyKind, &kind); 50 if (kind == kKindRegistrationTicket) 51 value.GetString(kGCDKeyId, &id); 52 callback_.Run(id); 53 } 54 55 GURL GCDRegistrationTicketRequest::GetURL() { 56 return cloud_devices::GetCloudDevicesRelativeURL("registrationTickets"); 57 } 58 59 } // namespace local_discovery 60