mirror of
https://github.com/ading2210/libcurl.js.git
synced 2025-05-13 14:30:02 -04:00
add code for main project website
This commit is contained in:
parent
94aaca8f22
commit
5ab6ed30a2
5 changed files with 298 additions and 0 deletions
91
website/main.js
Normal file
91
website/main.js
Normal file
|
@ -0,0 +1,91 @@
|
|||
const decoder = new TextDecoder();
|
||||
|
||||
function from_id(id) {
|
||||
return document.getElementById(id);
|
||||
}
|
||||
|
||||
async function start_request() {
|
||||
let request_output = from_id("request_info");
|
||||
let libcurl_output = from_id("libcurl_output");
|
||||
let network_data = from_id("network_data");
|
||||
let url_box = from_id("url");
|
||||
|
||||
request_output.innerText = "";
|
||||
libcurl_output.innerText = "";
|
||||
network_data.innerText = "";
|
||||
|
||||
let url = url_box.value;
|
||||
if (!url.startsWith("http://") && !url.startsWith("https://"))
|
||||
url = "https://" + url;
|
||||
request_output.innerText += `GET ${url}\n\n`;
|
||||
|
||||
try {
|
||||
let r = await libcurl.fetch(url, {_libcurl_verbose: 1});
|
||||
request_output.innerText += await r.text();
|
||||
}
|
||||
catch (e) {
|
||||
request_output.innerText += e;
|
||||
}
|
||||
}
|
||||
|
||||
function handle_output(text) {
|
||||
let output_element = from_id("libcurl_output");
|
||||
output_element.innerText += text + "\n";
|
||||
output_element.scrollTop = output_element.scrollHeight;
|
||||
}
|
||||
|
||||
function handle_ws_traffic(data, direction) {
|
||||
let network_data = from_id("network_data");
|
||||
let table_row = document.createElement("tr");
|
||||
let direction_cell = document.createElement("td");
|
||||
let data_cell = document.createElement("td");
|
||||
let data_pre = document.createElement("pre");
|
||||
|
||||
if (direction === "send")
|
||||
direction_cell.style.backgroundColor = "rgba(255, 0, 0, 0.3)";
|
||||
else if (direction === "recv")
|
||||
direction_cell.style.backgroundColor = "rgba(0, 255, 0, 0.3)";
|
||||
direction_cell.style.fontFamily = "monospace";
|
||||
direction_cell.style.width = "36px";
|
||||
data_pre.style.fontSize = "10px";
|
||||
network_data.parentNode.style.display = "block";
|
||||
network_data.parentNode.style.marginBottom = "-2px";
|
||||
|
||||
data_cell.append(data_pre);
|
||||
table_row.append(direction_cell, data_cell);
|
||||
|
||||
direction_cell.innerText = direction;
|
||||
data_pre.innerText = String.fromCodePoint(...new Uint8Array(data));
|
||||
network_data.append(table_row);
|
||||
}
|
||||
|
||||
function proxy_websocket() {
|
||||
WebSocket.prototype.send = new Proxy(WebSocket.prototype.send, {
|
||||
apply(a, b, c) {
|
||||
handle_ws_traffic(c[0], "send");
|
||||
Reflect.apply(a, b, c);
|
||||
}}
|
||||
);
|
||||
WebSocket = new Proxy(WebSocket, {
|
||||
construct(target, args) {
|
||||
let ws = new target(...args);
|
||||
ws.addEventListener("message", (event) => {
|
||||
handle_ws_traffic(event.data, "recv");
|
||||
});
|
||||
return ws;
|
||||
}}
|
||||
);
|
||||
}
|
||||
|
||||
document.addEventListener("libcurl_load", () => {
|
||||
console.log(`loaded libcurl.js ${libcurl.version.lib}`);
|
||||
|
||||
libcurl.set_websocket("wss://wisp.mercurywork.shop/");
|
||||
libcurl.stdout = handle_output;
|
||||
libcurl.stderr = handle_output;
|
||||
proxy_websocket();
|
||||
|
||||
from_id("status_text").style.display = "none";
|
||||
from_id("main_table").style.visibility = "visible";
|
||||
start_request();
|
||||
});
|
Loading…
Add table
Add a link
Reference in a new issue