MCPcopy Create free account
hub / github.com/PenguLoader/PenguLoader / RiotClientResourceHandler

Class RiotClientResourceHandler

core/src/browser/riotclient.cc:57–147  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

55};
56
57struct RiotClientResourceHandler : CefRefCount<cef_resource_handler_t>
58{
59 RiotClientResourceHandler(cef_frame_t *frame)
60 : CefRefCount(this), frame_(frame), bytes_read_(0), client_(nullptr), data_{}
61 {
62 cef_bind_method(RiotClientResourceHandler, open);
63 cef_bind_method(RiotClientResourceHandler, process_request);
64 cef_bind_method(RiotClientResourceHandler, get_response_headers);
65 cef_bind_method(RiotClientResourceHandler, read);
66 }
67
68private:
69 cef_frame_t *frame_;
70 RiotClientURLRequestClient *client_;
71 cef_urlrequest_t *url_request_;
72 std::string data_;
73 int64 bytes_read_;
74
75 int _open(struct _cef_request_t *request, int *handle_request, struct _cef_callback_t *callback)
76 {
77 *handle_request = 0;
78 return 0;
79 }
80
81 int _process_request(struct _cef_request_t *request, struct _cef_callback_t *callback)
82 {
83 CefScopedStr url{request->get_url(request)};
84 CefScopedStr method{request->get_method(request)};
85
86 std::u16string real_url;
87 real_url.append(std::u16string(url_origin_.begin(), url_origin_.end()));
88 real_url.append((char16_t *)url.str + 18, url.length - 18);
89 cef_string_t url2{(char16 *)&real_url[0], real_url.length(), nullptr};
90
91 auto body = request->get_post_data(request);
92 auto headers = cef_string_multimap_alloc();
93 request->get_header_map(request, headers);
94
95 auto request2 = cef_request_create();
96 request2->set(request2, &url2, &method, body, headers);
97 request2->set_header_by_name(request2, &u"Authorization"_s, &CefStr(authorization_), 1);
98
99 client_ = new RiotClientURLRequestClient(&data_, callback);
100 url_request_ = frame_->create_urlrequest(frame_, request2, client_);
101
102 cef_string_multimap_free(headers);
103 return 1;
104 }
105
106 void _get_response_headers(struct _cef_response_t *response, int64 *response_length, cef_string_t *redirectUrl)
107 {
108 // Forward response
109 if (auto res = url_request_->get_response(url_request_))
110 {
111 auto status = res->get_status(res);
112 auto error = res->get_error(res);
113 auto headers = cef_string_multimap_alloc();
114 res->get_header_map(res, headers);

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected