| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/stringprintf.h" | 7 #include "base/stringprintf.h" |
| 8 #include "base/values.h" | 8 #include "base/values.h" |
| 9 #include "chrome/common/cloud_print/cloud_print_constants.h" |
| 9 #include "chrome/common/cloud_print/cloud_print_helpers.h" | 10 #include "chrome/common/cloud_print/cloud_print_helpers.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/cloud_print/cloud_print_token_store.h" | 12 #include "chrome/service/cloud_print/cloud_print_token_store.h" |
| 13 #include "chrome/service/net/service_url_request_context.h" | 13 #include "chrome/service/net/service_url_request_context.h" |
| 14 #include "chrome/service/service_process.h" | 14 #include "chrome/service/service_process.h" |
| 15 #include "googleurl/src/gurl.h" | 15 #include "googleurl/src/gurl.h" |
| 16 #include "net/base/load_flags.h" | 16 #include "net/base/load_flags.h" |
| 17 #include "net/http/http_status_code.h" | 17 #include "net/http/http_status_code.h" |
| 18 #include "net/url_request/url_fetcher.h" | 18 #include "net/url_request/url_fetcher.h" |
| 19 #include "net/url_request/url_request_status.h" | 19 #include "net/url_request/url_request_status.h" |
| 20 | 20 |
| 21 namespace cloud_print { |
| 21 | 22 |
| 22 CloudPrintURLFetcher::ResponseAction | 23 CloudPrintURLFetcher::ResponseAction |
| 23 CloudPrintURLFetcher::Delegate::HandleRawResponse( | 24 CloudPrintURLFetcher::Delegate::HandleRawResponse( |
| 24 const net::URLFetcher* source, | 25 const net::URLFetcher* source, |
| 25 const GURL& url, | 26 const GURL& url, |
| 26 const net::URLRequestStatus& status, | 27 const net::URLRequestStatus& status, |
| 27 int response_code, | 28 int response_code, |
| 28 const net::ResponseCookies& cookies, | 29 const net::ResponseCookies& cookies, |
| 29 const std::string& data) { | 30 const std::string& data) { |
| 30 return CONTINUE_PROCESSING; | 31 return CONTINUE_PROCESSING; |
| (...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 115 else | 116 else |
| 116 action = delegate_->HandleRawData(source, source->GetURL(), data); | 117 action = delegate_->HandleRawData(source, source->GetURL(), data); |
| 117 | 118 |
| 118 if (action == CONTINUE_PROCESSING) { | 119 if (action == CONTINUE_PROCESSING) { |
| 119 // If the delegate is not interested in handling the raw response data, | 120 // If the delegate is not interested in handling the raw response data, |
| 120 // we assume that a JSON response is expected. If we do not get a JSON | 121 // we assume that a JSON response is expected. If we do not get a JSON |
| 121 // response, we will retry (to handle the case where we got redirected | 122 // response, we will retry (to handle the case where we got redirected |
| 122 // to a non-cloudprint-server URL eg. for authentication). | 123 // to a non-cloudprint-server URL eg. for authentication). |
| 123 bool succeeded = false; | 124 bool succeeded = false; |
| 124 DictionaryValue* response_dict = NULL; | 125 DictionaryValue* response_dict = NULL; |
| 125 cloud_print::ParseResponseJSON(data, &succeeded, &response_dict); | 126 ParseResponseJSON(data, &succeeded, &response_dict); |
| 126 if (response_dict) | 127 if (response_dict) |
| 127 action = delegate_->HandleJSONData(source, | 128 action = delegate_->HandleJSONData(source, |
| 128 source->GetURL(), | 129 source->GetURL(), |
| 129 response_dict, | 130 response_dict, |
| 130 succeeded); | 131 succeeded); |
| 131 else | 132 else |
| 132 action = RETRY_REQUEST; | 133 action = RETRY_REQUEST; |
| 133 } | 134 } |
| 134 } | 135 } |
| 135 // Retry the request if needed. | 136 // Retry the request if needed. |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 186 request_->SetUploadData(post_data_mime_type, post_data); | 187 request_->SetUploadData(post_data_mime_type, post_data); |
| 187 } | 188 } |
| 188 | 189 |
| 189 request_->Start(); | 190 request_->Start(); |
| 190 } | 191 } |
| 191 | 192 |
| 192 void CloudPrintURLFetcher::SetupRequestHeaders() { | 193 void CloudPrintURLFetcher::SetupRequestHeaders() { |
| 193 std::string headers = delegate_->GetAuthHeader(); | 194 std::string headers = delegate_->GetAuthHeader(); |
| 194 if (!headers.empty()) | 195 if (!headers.empty()) |
| 195 headers += "\r\n"; | 196 headers += "\r\n"; |
| 196 headers += cloud_print::kChromeCloudPrintProxyHeader; | 197 headers += kChromeCloudPrintProxyHeader; |
| 197 if (!additional_headers_.empty()) { | 198 if (!additional_headers_.empty()) { |
| 198 headers += "\r\n"; | 199 headers += "\r\n"; |
| 199 headers += additional_headers_; | 200 headers += additional_headers_; |
| 200 } | 201 } |
| 201 request_->SetExtraRequestHeaders(headers); | 202 request_->SetExtraRequestHeaders(headers); |
| 202 } | 203 } |
| 203 | 204 |
| 204 CloudPrintURLFetcher::~CloudPrintURLFetcher() {} | 205 CloudPrintURLFetcher::~CloudPrintURLFetcher() {} |
| 205 | 206 |
| 206 net::URLRequestContextGetter* CloudPrintURLFetcher::GetRequestContextGetter() { | 207 net::URLRequestContextGetter* CloudPrintURLFetcher::GetRequestContextGetter() { |
| 207 ServiceURLRequestContextGetter* getter = | 208 ServiceURLRequestContextGetter* getter = |
| 208 g_service_process->GetServiceURLRequestContextGetter(); | 209 g_service_process->GetServiceURLRequestContextGetter(); |
| 209 // Now set up the user agent for cloudprint. | 210 // Now set up the user agent for cloudprint. |
| 210 std::string user_agent = getter->user_agent(); | 211 std::string user_agent = getter->user_agent(); |
| 211 base::StringAppendF(&user_agent, " %s", kCloudPrintUserAgent); | 212 base::StringAppendF(&user_agent, " %s", kCloudPrintUserAgent); |
| 212 getter->set_user_agent(user_agent); | 213 getter->set_user_agent(user_agent); |
| 213 return getter; | 214 return getter; |
| 214 } | 215 } |
| 216 |
| 217 } // namespace cloud_print |
| OLD | NEW |