| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/service/cloud_print/cloud_print_url_fetcher.h" | 5 #include "chrome/service/cloud_print/cloud_print_url_fetcher.h" |
| 6 | 6 |
| 7 #include "base/string_util.h" | 7 #include "base/string_util.h" |
| 8 #include "base/values.h" | 8 #include "base/values.h" |
| 9 #include "chrome/common/net/http_return.h" | 9 #include "chrome/common/net/http_return.h" |
| 10 #include "chrome/service/cloud_print/cloud_print_consts.h" | 10 #include "chrome/service/cloud_print/cloud_print_consts.h" |
| 11 #include "chrome/service/cloud_print/cloud_print_helpers.h" | 11 #include "chrome/service/cloud_print/cloud_print_helpers.h" |
| 12 #include "chrome/service/net/service_url_request_context.h" | 12 #include "chrome/service/net/service_url_request_context.h" |
| 13 #include "googleurl/src/gurl.h" | 13 #include "googleurl/src/gurl.h" |
| 14 #include "net/url_request/url_request_status.h" | 14 #include "net/url_request/url_request_status.h" |
| 15 | 15 |
| 16 CloudPrintURLFetcher::CloudPrintURLFetcher() | 16 CloudPrintURLFetcher::CloudPrintURLFetcher() |
| 17 : delegate_(NULL), | 17 : delegate_(NULL), |
| 18 num_retries_(0) { | 18 num_retries_(0) { |
| 19 } | 19 } |
| 20 | 20 |
| 21 void CloudPrintURLFetcher::StartGetRequest(const GURL& url, | 21 void CloudPrintURLFetcher::StartGetRequest( |
| 22 Delegate* delegate, | 22 const GURL& url, |
| 23 const std::string& auth_token, | 23 Delegate* delegate, |
| 24 int max_retries) { | 24 const std::string& auth_token, |
| 25 int max_retries, |
| 26 const std::string& additional_headers) { |
| 25 StartRequestHelper(url, URLFetcher::GET, delegate, auth_token, max_retries, | 27 StartRequestHelper(url, URLFetcher::GET, delegate, auth_token, max_retries, |
| 26 std::string(), std::string()); | 28 std::string(), std::string(), additional_headers); |
| 27 } | 29 } |
| 28 | 30 |
| 29 void CloudPrintURLFetcher::StartPostRequest( | 31 void CloudPrintURLFetcher::StartPostRequest( |
| 30 const GURL& url, | 32 const GURL& url, |
| 31 Delegate* delegate, | 33 Delegate* delegate, |
| 32 const std::string& auth_token, | 34 const std::string& auth_token, |
| 33 int max_retries, | 35 int max_retries, |
| 34 const std::string& post_data_mime_type, | 36 const std::string& post_data_mime_type, |
| 35 const std::string& post_data) { | 37 const std::string& post_data, |
| 38 const std::string& additional_headers) { |
| 36 StartRequestHelper(url, URLFetcher::POST, delegate, auth_token, max_retries, | 39 StartRequestHelper(url, URLFetcher::POST, delegate, auth_token, max_retries, |
| 37 post_data_mime_type, post_data); | 40 post_data_mime_type, post_data, additional_headers); |
| 38 } | 41 } |
| 39 | 42 |
| 40 // URLFetcher::Delegate implementation. | 43 // URLFetcher::Delegate implementation. |
| 41 void CloudPrintURLFetcher::OnURLFetchComplete( | 44 void CloudPrintURLFetcher::OnURLFetchComplete( |
| 42 const URLFetcher* source, | 45 const URLFetcher* source, |
| 43 const GURL& url, | 46 const GURL& url, |
| 44 const net::URLRequestStatus& status, | 47 const net::URLRequestStatus& status, |
| 45 int response_code, | 48 int response_code, |
| 46 const ResponseCookies& cookies, | 49 const ResponseCookies& cookies, |
| 47 const std::string& data) { | 50 const std::string& data) { |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 106 } | 109 } |
| 107 } | 110 } |
| 108 | 111 |
| 109 void CloudPrintURLFetcher::StartRequestHelper( | 112 void CloudPrintURLFetcher::StartRequestHelper( |
| 110 const GURL& url, | 113 const GURL& url, |
| 111 URLFetcher::RequestType request_type, | 114 URLFetcher::RequestType request_type, |
| 112 Delegate* delegate, | 115 Delegate* delegate, |
| 113 const std::string& auth_token, | 116 const std::string& auth_token, |
| 114 int max_retries, | 117 int max_retries, |
| 115 const std::string& post_data_mime_type, | 118 const std::string& post_data_mime_type, |
| 116 const std::string& post_data) { | 119 const std::string& post_data, |
| 120 const std::string& additional_headers) { |
| 117 DCHECK(delegate); | 121 DCHECK(delegate); |
| 118 request_.reset(new URLFetcher(url, request_type, this)); | 122 request_.reset(new URLFetcher(url, request_type, this)); |
| 119 request_->set_request_context(GetRequestContextGetter()); | 123 request_->set_request_context(GetRequestContextGetter()); |
| 120 // Since we implement our own retry logic, disable the retry in URLFetcher. | 124 // Since we implement our own retry logic, disable the retry in URLFetcher. |
| 121 request_->set_automatically_retry_on_5xx(false); | 125 request_->set_automatically_retry_on_5xx(false); |
| 122 request_->set_max_retries(max_retries); | 126 request_->set_max_retries(max_retries); |
| 123 delegate_ = delegate; | 127 delegate_ = delegate; |
| 124 std::string headers = "Authorization: GoogleLogin auth="; | 128 std::string headers = "Authorization: GoogleLogin auth="; |
| 125 headers += auth_token; | 129 headers += auth_token; |
| 126 headers += "\r\n"; | 130 headers += "\r\n"; |
| 127 headers += kChromeCloudPrintProxyHeader; | 131 headers += kChromeCloudPrintProxyHeader; |
| 132 if (!additional_headers.empty()) { |
| 133 headers += "\r\n"; |
| 134 headers += additional_headers; |
| 135 } |
| 128 request_->set_extra_request_headers(headers); | 136 request_->set_extra_request_headers(headers); |
| 129 if (request_type == URLFetcher::POST) { | 137 if (request_type == URLFetcher::POST) { |
| 130 request_->set_upload_data(post_data_mime_type, post_data); | 138 request_->set_upload_data(post_data_mime_type, post_data); |
| 131 } | 139 } |
| 132 | 140 |
| 133 request_->Start(); | 141 request_->Start(); |
| 134 } | 142 } |
| 135 | 143 |
| 136 CloudPrintURLFetcher::~CloudPrintURLFetcher() {} | 144 CloudPrintURLFetcher::~CloudPrintURLFetcher() {} |
| 137 | 145 |
| 138 URLRequestContextGetter* CloudPrintURLFetcher::GetRequestContextGetter() { | 146 URLRequestContextGetter* CloudPrintURLFetcher::GetRequestContextGetter() { |
| 139 ServiceURLRequestContextGetter* getter = | 147 ServiceURLRequestContextGetter* getter = |
| 140 new ServiceURLRequestContextGetter(); | 148 new ServiceURLRequestContextGetter(); |
| 141 // Now set up the user agent for cloudprint. | 149 // Now set up the user agent for cloudprint. |
| 142 std::string user_agent = getter->user_agent(); | 150 std::string user_agent = getter->user_agent(); |
| 143 base::StringAppendF(&user_agent, " %s", kCloudPrintUserAgent); | 151 base::StringAppendF(&user_agent, " %s", kCloudPrintUserAgent); |
| 144 getter->set_user_agent(user_agent); | 152 getter->set_user_agent(user_agent); |
| 145 return getter; | 153 return getter; |
| 146 } | 154 } |
| 147 | 155 |
| OLD | NEW |