Installing all types of packages
Summary: - Installing all types of packages - Notifications - data processing Reviewers: kuba-orlik Differential Revision: https://hub.sealcode.org/D1585
This commit is contained in:
parent
ca973c4114
commit
782d390f30
@ -1,21 +1,106 @@
|
|||||||
import { h, render, Component } from "preact";
|
import { h, render, Component } from "preact";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @typedef {'urlParam' | 'body' | 'header'} Source;
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A number, or a string containing a number.
|
||||||
|
* @typedef {{
|
||||||
|
* body: string,
|
||||||
|
* headers: [[string, string]],
|
||||||
|
* url: URL,
|
||||||
|
* id: string,
|
||||||
|
* kv: Map<Source, string>,
|
||||||
|
* }} Req
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @returns {Req | null}
|
||||||
|
*/
|
||||||
|
function process_msg(s) {
|
||||||
|
let obj = JSON.parse(s);
|
||||||
|
if (obj.type !== "data") return;
|
||||||
|
if (!obj.payload || !obj.payload.data || !obj.payload.data.requestReceived)
|
||||||
|
return null;
|
||||||
|
let req = obj.payload.data.requestReceived;
|
||||||
|
if (!req.rawHeaders || !req.body || !req.url) return null;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*@type {Map<[Source, string], string>}
|
||||||
|
*/
|
||||||
|
let kv = new Map();
|
||||||
|
/**
|
||||||
|
*@type {string}
|
||||||
|
*/
|
||||||
|
let body = req.body;
|
||||||
|
/**
|
||||||
|
*@type {string}
|
||||||
|
*/
|
||||||
|
let decoded_body;
|
||||||
|
try {
|
||||||
|
decoded_body = atob(body);
|
||||||
|
} catch {
|
||||||
|
decoded_body = "";
|
||||||
|
}
|
||||||
|
|
||||||
|
kv.set(["body", "raw"], decoded_body);
|
||||||
|
|
||||||
|
/**
|
||||||
|
*@type {string}
|
||||||
|
*/
|
||||||
|
let url = new URL(req.url);
|
||||||
|
|
||||||
|
const params = new URLSearchParams(url.search);
|
||||||
|
|
||||||
|
for (const [k, v] of params.entries()) {
|
||||||
|
kv.set(["urlParam", k], v);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*@type {[[string, string]]}
|
||||||
|
*/
|
||||||
|
let headers = JSON.parse(req.rawHeaders);
|
||||||
|
|
||||||
|
for (const [k, v] of headers) {
|
||||||
|
kv.set(["header", k], v);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*@type {[[string, string]]}
|
||||||
|
*/
|
||||||
|
let id = req.id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*@type Req
|
||||||
|
*/
|
||||||
|
let ret_req = { id, body: decoded_body, url, headers, kv };
|
||||||
|
return ret_req;
|
||||||
|
}
|
||||||
|
|
||||||
class TrafficLog extends Component {
|
class TrafficLog extends Component {
|
||||||
constructor() {
|
constructor() {
|
||||||
super();
|
super();
|
||||||
this.state = { content: [] };
|
/**
|
||||||
|
* @type {{requests: [Req]}}
|
||||||
|
*/
|
||||||
|
this.state = { requests: [] };
|
||||||
}
|
}
|
||||||
|
|
||||||
componentDidMount() {
|
componentDidMount() {
|
||||||
// This should also be dynamic
|
// This should also be dynamic
|
||||||
this.connection = new WebSocket("ws://localhost:10001");
|
this.connection = new WebSocket("ws://localhost:10001");
|
||||||
this.connection.onmessage = (msg) => {
|
this.connection.onmessage = (msg) => {
|
||||||
this.setState({ content: [...this.state.content, msg.data] });
|
let req = process_msg(msg.data);
|
||||||
|
if (req) {
|
||||||
|
console.log(req);
|
||||||
|
this.setState({ requests: [...this.state.requests, req] });
|
||||||
|
}
|
||||||
};
|
};
|
||||||
this.connection.onclose = this.connection.onerror = () => {
|
this.connection.onclose = this.connection.onerror = () => {
|
||||||
var element = document.getElementById("httptoolkit-frame");
|
var element = document.getElementById("httptoolkit-frame");
|
||||||
element.parentNode.removeChild(element);
|
element.parentNode.removeChild(element);
|
||||||
}
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
componentWillUnmount() {
|
componentWillUnmount() {
|
||||||
@ -23,15 +108,21 @@ class TrafficLog extends Component {
|
|||||||
}
|
}
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
const contentWithLineBreaks = this.state.content
|
const contentWithLineBreaks = this.state.requests.map(
|
||||||
.map((text) => {
|
(
|
||||||
|
/**
|
||||||
|
* @type {Req}
|
||||||
|
*/
|
||||||
|
req
|
||||||
|
) => {
|
||||||
return (
|
return (
|
||||||
<span>
|
<span>
|
||||||
{text.substring(0, 100)}
|
{req.url.href}
|
||||||
<br />
|
<br />
|
||||||
</span>
|
</span>
|
||||||
);
|
);
|
||||||
});
|
}
|
||||||
|
);
|
||||||
|
|
||||||
return <span>{contentWithLineBreaks}</span>;
|
return <span>{contentWithLineBreaks}</span>;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user