/
RequestClient.cpp
84 lines (65 loc) · 2.02 KB
/
RequestClient.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
#include "main/net/RequestClient.hpp"
#include <iostream>
namespace app
{
namespace net
{
RequestClient::RequestClient(CefRefPtr<CefMessageRouterBrowserSide::Callback> browserCallback, RequestCallback requestCallback)
{
CEF_REQUIRE_UI_THREAD();
this->browserCallback = browserCallback;
this->requestCallback = std::move(requestCallback);
DCHECK(this->browserCallback);
DCHECK(!this->requestCallback.is_null());
}
RequestClient::~RequestClient()
{
detach();
}
void RequestClient::detach()
{
CEF_REQUIRE_UI_THREAD();
browserCallback = nullptr;
if (!this->requestCallback.is_null())
{
this->requestCallback.Reset();
}
}
void RequestClient::OnRequestComplete(CefRefPtr<CefURLRequest> request)
{
/*
CefURLRequest::Status status = request->GetRequestStatus();
CefURLRequest::ErrorCode errorCode = request->GetRequestError();
CefRefPtr<CefResponse> response = request->GetResponse();
*/
CefURLRequest::ErrorCode errorCode = request->GetRequestError();
CEF_REQUIRE_UI_THREAD();
if (!requestCallback.is_null())
{
std::move(requestCallback).Run(browserCallback, errorCode, downloadData);
std::move(requestCallback).Reset();
}
}
void RequestClient::OnUploadProgress(CefRefPtr<CefURLRequest> request, int64_t current, int64_t total)
{
uploadTotal = total;
}
void RequestClient::OnDownloadProgress(CefRefPtr<CefURLRequest> request, int64_t current, int64_t total)
{
downloadTotal = total;
}
void RequestClient::OnDownloadData(CefRefPtr<CefURLRequest> request, const void *data, size_t dataLength)
{
CEF_REQUIRE_UI_THREAD();
downloadData += std::string(static_cast<const char *>(data), dataLength);
}
bool RequestClient::GetAuthCredentials(bool isProxy, const CefString &host, int port, const CefString &realm, const CefString &scheme, CefRefPtr<CefAuthCallback> callback)
{
return false; // not handled
}
const std::string &app::net::RequestClient::getDownloadData()
{
return downloadData;
}
} // namespace net
} // namespace app