-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathrequestresponse.h
86 lines (62 loc) · 2.97 KB
/
requestresponse.h
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
85
86
#pragma once
#include <string>
#include "cef_includes.h"
#include "logger.h"
class RequestClient;
class RequestResponse : public CefResourceRequestHandler,
public CefResourceHandler {
public:
RequestResponse(CefRefPtr<CefBrowser> browser,
CefRefPtr<CefFrame> frame,
CefRefPtr<CefRequest> request,
bool is_navigation,
bool is_download,
const CefString &request_initiator,
bool &disable_default_handling,
std::string browserIp,
int browserPort,
bool blockThis,
std::string sp);
// CefResourceRequestHandler
CefRefPtr<CefResourceHandler> GetResourceHandler(CefRefPtr<CefBrowser> browser, CefRefPtr<CefFrame> frame,
CefRefPtr<CefRequest> request) override {
return this;
}
CefResourceRequestHandler::ReturnValue
OnBeforeResourceLoad(CefRefPtr<CefBrowser> browser, CefRefPtr<CefFrame> frame, CefRefPtr<CefRequest> request,
CefRefPtr<CefCallback> callback) override;
void OnResourceLoadComplete(CefRefPtr<CefBrowser> browser, CefRefPtr<CefFrame> frame, CefRefPtr<CefRequest> request,
CefRefPtr<CefResponse> response, URLRequestStatus status,
int64_t received_content_length) override;
// CefResourceHandler
bool Open(CefRefPtr<CefRequest> request, bool &handle_request, CefRefPtr<CefCallback> callback) override;
bool Read(void *data_out, int bytes_to_read, int &bytes_read, CefRefPtr<CefResourceReadCallback> callback) override;
void GetResponseHeaders(CefRefPtr<CefResponse> response, int64_t &response_length, CefString &redirectUrl) override;
void Cancel() override;
private:
CefRefPtr<RequestClient> client;
CefRefPtr<CefURLRequest> url_request;
bool blockThis;
private:
IMPLEMENT_REFCOUNTING(RequestResponse);
};
class RequestClient : public CefURLRequestClient {
friend RequestResponse;
public:
explicit RequestClient(CefRefPtr<CefCallback>&);
void OnRequestComplete(CefRefPtr<CefURLRequest> request) override;
void OnUploadProgress(CefRefPtr<CefURLRequest> request, int64_t current, int64_t total) override;
void OnDownloadProgress(CefRefPtr<CefURLRequest> request, int64_t current, int64_t total) override;
void OnDownloadData(CefRefPtr<CefURLRequest> request, const void *data, size_t data_length) override;
bool GetAuthCredentials(bool isProxy, const CefString &host, int port, const CefString &realm,
const CefString &scheme, CefRefPtr<CefAuthCallback> callback) override;
private:
size_t upload_total;
size_t download_total;
size_t offset;
std::string download_data;
CefResponse::HeaderMap headerMap;
CefRefPtr<CefCallback> callback;
private:
IMPLEMENT_REFCOUNTING(RequestClient);
};