Index: net/urlmon_request.cc |
diff --git a/net/urlmon_request.cc b/net/urlmon_request.cc |
deleted file mode 100644 |
index 333f02fb04ffc3f0ceb69e53ef346e62c005a16c..0000000000000000000000000000000000000000 |
--- a/net/urlmon_request.cc |
+++ /dev/null |
@@ -1,187 +0,0 @@ |
-// Copyright 2008-2010 Google Inc. |
-// |
-// Licensed under the Apache License, Version 2.0 (the "License"); |
-// you may not use this file except in compliance with the License. |
-// You may obtain a copy of the License at |
-// |
-// http://www.apache.org/licenses/LICENSE-2.0 |
-// |
-// Unless required by applicable law or agreed to in writing, software |
-// distributed under the License is distributed on an "AS IS" BASIS, |
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
-// See the License for the specific language governing permissions and |
-// limitations under the License. |
-// ======================================================================== |
- |
-#include "omaha/net/urlmon_request.h" |
-#include <winhttp.h> |
-#include <atlbase.h> |
-#include <atlcom.h> |
-#include <atlcomcli.h> |
-#include <vector> |
-#include "omaha/base/error.h" |
-#include "omaha/base/file.h" |
-#include "omaha/base/logging.h" |
-#include "omaha/base/string.h" |
-#include "omaha/base/utils.h" |
-#include "omaha/net/http_client.h" |
-#include "omaha/net/network_request.h" |
-#include "omaha/net/network_config.h" |
- |
-namespace omaha { |
- |
-const DWORD response_headers_needed[] = { |
- WINHTTP_QUERY_CONTENT_TYPE, |
- WINHTTP_QUERY_ETAG, |
- WINHTTP_QUERY_SET_COOKIE, |
- WINHTTP_QUERY_FLAG_REQUEST_HEADERS | WINHTTP_QUERY_USER_AGENT, |
- WINHTTP_QUERY_RAW_HEADERS_CRLF, |
-}; |
- |
-UrlmonRequest::UrlmonRequest() |
- : request_buffer_(NULL), |
- request_buffer_length_(0), |
- proxy_auth_config_(NULL, CString()), |
- http_status_code_(0), |
- is_cancelled_(false) { |
- NET_LOG(L3, (_T("[UrlmonRequest::UrlmonRequest]"))); |
- user_agent_.Format(_T("%s;urlmon"), NetworkConfig::GetUserAgent()); |
-} |
- |
-UrlmonRequest::~UrlmonRequest() { |
- Close(); |
-} |
- |
-HRESULT UrlmonRequest::Close() { |
- http_status_code_ = 0; |
- response_body_.clear(); |
- raw_response_headers_.Empty(); |
- response_headers_map_.clear(); |
- return S_OK; |
-} |
- |
-HRESULT UrlmonRequest::ProcessResponseHeaders( |
- const CComVariant& headers, |
- const CComSafeArray<DWORD>& headers_needed) { |
- if (headers.vt != (VT_ARRAY | VT_BSTR)) { |
- return E_FAIL; |
- } |
- |
- CComSafeArray<BSTR> response_headers(headers.parray); |
- DWORD count = response_headers.GetCount(); |
- if (count != headers_needed.GetCount()) { |
- return E_FAIL; |
- } |
- |
- response_headers_map_.clear(); |
- LONG lower_bound = response_headers.GetLowerBound(); |
- LONG upper_bound = response_headers.GetUpperBound(); |
- for (int i = lower_bound; i <= upper_bound; ++i) { |
- response_headers_map_.insert(std::make_pair(headers_needed[i], |
- response_headers[i])); |
- NET_LOG(L3, (_T("[ProcessResponseHeaders][%d][%s]"), |
- i, response_headers[i])); |
- } |
- raw_response_headers_ = response_headers_map_[WINHTTP_QUERY_RAW_HEADERS_CRLF]; |
- return S_OK; |
-} |
- |
-HRESULT UrlmonRequest::ProcessResponseFile(const CComBSTR& cache_filename) { |
- if (!cache_filename.Length()) { |
- // Response with no body. |
- return S_OK; |
- } |
- |
- if (!filename_.IsEmpty()) { |
- // The caller expects the response to be stored in the target file. |
- return File::Copy(cache_filename, filename_, true); |
- } |
- |
- response_body_.clear(); |
- HRESULT hr = ReadEntireFileShareMode(cache_filename, |
- 0, |
- FILE_SHARE_READ, |
- &response_body_); |
- if (FAILED(hr) || response_body_.empty()) { |
- return hr; |
- } |
- return S_OK; |
-} |
- |
-HRESULT UrlmonRequest::SendRequest(BSTR url, |
- BSTR post_data, |
- BSTR request_headers, |
- VARIANT response_headers_needed, |
- CComVariant* response_headers, |
- DWORD* response_code, |
- BSTR* cache_filename) { |
- HRESULT hr = bsc_.Send(url, |
- post_data, |
- request_headers, |
- response_headers_needed, |
- response_headers, |
- response_code, |
- cache_filename); |
- |
- NET_LOG(L3, (_T("[UrlmonRequest::SendRequest][0x%x][%d][%s]"), |
- hr, *response_code, *cache_filename)); |
- if (!*response_code) { |
- return FAILED(hr) ? hr : E_UNEXPECTED; |
- } |
- |
- return S_OK; |
-} |
- |
-HRESULT UrlmonRequest::Send() { |
- NET_LOG(L3, (_T("[UrlmonRequest::Send]"))); |
- if (is_cancelled_) { |
- return GOOPDATE_E_CANCELLED; |
- } |
- |
- ASSERT1(url_.Length() > 0); |
- CComBSTR headers_to_send(additional_headers_); |
- CComBSTR post_data; |
- if (request_buffer_) { |
- post_data.AppendBytes(static_cast<const char*>(request_buffer_), |
- request_buffer_length_); |
- } |
- CComSafeArray<DWORD> headers_needed(arraysize(response_headers_needed)); |
- for (size_t i = 0; i < arraysize(response_headers_needed); ++i) { |
- headers_needed.SetAt(i, response_headers_needed[i]); |
- } |
- CComVariant response_headers; |
- CComBSTR cache_filename; |
- |
- HRESULT hr = SendRequest(url_, |
- post_data, |
- headers_to_send, |
- CComVariant(headers_needed), |
- &response_headers, |
- &http_status_code_, |
- &cache_filename); |
- if (FAILED(hr)) { |
- NET_LOG(LW, (_T("[UrlmonRequest::Send][0x%08x]"), hr)); |
- return hr; |
- } |
- |
- VERIFY1(SUCCEEDED(ProcessResponseHeaders(response_headers, headers_needed))); |
- VERIFY1(SUCCEEDED(ProcessResponseFile(cache_filename))); |
- return S_OK; |
-} |
- |
-HRESULT UrlmonRequest::Cancel() { |
- NET_LOG(L2, (_T("[UrlmonRequest::Cancel]"))); |
- ::InterlockedExchange(&is_cancelled_, true); |
- return bsc_.Cancel(); |
-} |
- |
-HRESULT UrlmonRequest::Pause() { |
- return E_NOTIMPL; |
-} |
- |
-HRESULT UrlmonRequest::Resume() { |
- return E_NOTIMPL; |
-} |
- |
-} // namespace omaha |
- |