gcd_registration_ticket_request.cc revision 5f1c94371a64b3196d4be9466099bb892df9b88e
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 11namespace local_discovery { 12 13namespace { 14 15const char kUploadData[] = "{ \"userEmail\": \"me\" }"; 16const char kKindRegistrationTicket[] = "clouddevices#registrationTicket"; 17const char kGCDKeyId[] = "id"; 18} 19 20GCDRegistrationTicketRequest::GCDRegistrationTicketRequest( 21 const ResponseCallback& callback) 22 : callback_(callback) { 23} 24 25GCDRegistrationTicketRequest::~GCDRegistrationTicketRequest() { 26} 27 28void 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 36net::URLFetcher::RequestType GCDRegistrationTicketRequest::GetRequestType() { 37 return net::URLFetcher::POST; 38} 39 40void GCDRegistrationTicketRequest::OnGCDAPIFlowError( 41 GCDApiFlow::Status status) { 42 callback_.Run(std::string(), std::string()); 43} 44 45void GCDRegistrationTicketRequest::OnGCDAPIFlowComplete( 46 const base::DictionaryValue& value) { 47 std::string kind; 48 std::string id; 49 std::string device_id; 50 value.GetString(kGCDKeyKind, &kind); 51 if (kind == kKindRegistrationTicket) { 52 value.GetString(kGCDKeyId, &id); 53 value.GetString(kGCDKeyDeviceId, &device_id); 54 } 55 callback_.Run(id, device_id); 56} 57 58GURL GCDRegistrationTicketRequest::GetURL() { 59 return cloud_devices::GetCloudDevicesRelativeURL("registrationTickets"); 60} 61 62} // namespace local_discovery 63