mirror of
https://git.suyu.dev/suyu/breakpad.git
synced 2026-02-17 16:21:04 +00:00
- First step, this is just enough to get it generating a msbuild project with GYP, which in turn can build the executable. - Tests need to be redesigned because there isn't an available server. Change-Id: I45440fd32b3ede29666c127703bcd441f0e4288e Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/1661134 Reviewed-by: Ivan Penkov <ivanpe@chromium.org>
97 lines
4.1 KiB
C++
97 lines
4.1 KiB
C++
// Copyright 2019 Google Inc. All rights reserved.
|
|
//
|
|
// Redistribution and use in source and binary forms, with or without
|
|
// modification, are permitted provided that the following conditions are
|
|
// met:
|
|
//
|
|
// * Redistributions of source code must retain the above copyright
|
|
// notice, this list of conditions and the following disclaimer.
|
|
// * Redistributions in binary form must reproduce the above
|
|
// copyright notice, this list of conditions and the following disclaimer
|
|
// in the documentation and/or other materials provided with the
|
|
// distribution.
|
|
// * Neither the name of Google Inc. nor the names of its
|
|
// contributors may be used to endorse or promote products derived from
|
|
// this software without specific prior written permission.
|
|
//
|
|
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
|
#ifndef TOOLS_CRASH_CONVERTER_WINDOWS_HTTP_CLIENT_H_
|
|
#define TOOLS_CRASH_CONVERTER_WINDOWS_HTTP_CLIENT_H_
|
|
|
|
#include <tchar.h>
|
|
#include <windows.h>
|
|
#include <vector>
|
|
|
|
typedef void* HttpHandle;
|
|
|
|
namespace crash {
|
|
|
|
// HttpClient provides an abstract layer for HTTP APIs. The actual
|
|
// implementation can be based on either WinHttp or WinInet.
|
|
class HttpClient {
|
|
public:
|
|
enum AccessType {
|
|
ACCESS_TYPE_PRECONFIG,
|
|
ACCESS_TYPE_DIRECT,
|
|
ACCESS_TYPE_PROXY,
|
|
};
|
|
|
|
virtual ~HttpClient() {}
|
|
|
|
virtual bool CrackUrl(const TCHAR* url,
|
|
DWORD flags,
|
|
TCHAR* scheme,
|
|
size_t scheme_buffer_length,
|
|
TCHAR* host,
|
|
size_t host_buffer_length,
|
|
TCHAR* uri,
|
|
size_t uri_buffer_length,
|
|
int* port) const = 0;
|
|
virtual bool Open(const TCHAR* user_agent,
|
|
DWORD access_type,
|
|
const TCHAR* proxy_name,
|
|
const TCHAR* proxy_bypass,
|
|
HttpHandle* session_handle) const = 0;
|
|
virtual bool Connect(HttpHandle session_handle,
|
|
const TCHAR* server,
|
|
int port,
|
|
HttpHandle* connection_handle) const = 0;
|
|
virtual bool OpenRequest(HttpHandle connection_handle,
|
|
const TCHAR* verb,
|
|
const TCHAR* uri,
|
|
const TCHAR* version,
|
|
const TCHAR* referrer,
|
|
bool is_secure,
|
|
HttpHandle* request_handle) const = 0;
|
|
virtual bool SendRequest(HttpHandle request_handle,
|
|
const TCHAR* headers,
|
|
DWORD headers_length) const = 0;
|
|
virtual bool ReceiveResponse(HttpHandle request_handle) const = 0;
|
|
virtual bool GetHttpStatusCode(HttpHandle request_handle,
|
|
int* status_code) const = 0;
|
|
virtual bool GetContentLength(HttpHandle request_handle,
|
|
DWORD* content_length) const = 0;
|
|
virtual bool ReadData(HttpHandle request_handle,
|
|
void* buffer,
|
|
DWORD buffer_length,
|
|
DWORD* bytes_read) const = 0;
|
|
virtual bool Close(HttpHandle handle) const = 0;
|
|
|
|
static const DWORD kUnknownContentLength = (DWORD)-1;
|
|
};
|
|
|
|
} // namespace crash
|
|
|
|
#endif // TOOLS_CRASH_CONVERTER_WINDOWS_HTTP_CLIENT_H_
|