Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion httpdbg/__init__.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
__version__ = "2.1.1"
__version__ = "2.1.2"

__all__ = ["export_html", "httprecord", "HTTPRecords"]

Expand Down
1 change: 1 addition & 0 deletions httpdbg/export.py
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,7 @@ def safe_for_script_tag(s: str) -> str:
global.static_requests = JSON.parse(
document.getElementById('requests-map').textContent
);
global.connected = false;
</script>
"""

Expand Down
148 changes: 80 additions & 68 deletions httpdbg/webapp/static/api.js
Original file line number Diff line number Diff line change
Expand Up @@ -50,10 +50,13 @@ function save_request(request_id, request, session_id) {
}

async function load_all_requests() {
// export mode
if (typeof global.static_all_requests !== "undefined") {
global.connected = false;
return global.static_all_requests;
}

// connected mode
var requests_already_loaded = 0
for (const [request_id, request] of Object.entries(global.requests)) {
if (request.loaded && (global.session == request.session_id)) {
Expand All @@ -65,95 +68,104 @@ async function load_all_requests() {
"requests_already_loaded": requests_already_loaded,
})

const res = await fetch(url);
const data = await res.json();
return data;
try {
const res = await fetch(url);
const data = await res.json();
global.connected = true;
return data;
} catch (error) {
global.connected = false;
return null;
}
}


async function get_all_requests() {

await load_all_requests()
.then(data => {
global.connected = true;

if (data.session.id != global.session) {
clean();
global.session = data.session.id;
global.sessions[data.session.id] = data.session;
};

// for the initiators and the groups, we can just save them without any verification
Object.assign(global.initiators, data.initiators);
Object.assign(global.groups, data.groups);

// for the requests, we may have to update them
for (const [request_id, request] of Object.entries(data.requests)) {
if (!(request_id in global.requests)) {
// this is a new request
save_request(request_id, request, data.session.id);
} else {
if (global.requests[request_id].last_update < request.last_update) {
// this request has been updated (probably a "big" file)
save_request(request_id, request, data.session.id);
}
};
};
})
.catch((error) => {
global.connected = false;
});
const data = await load_all_requests();

if (!data) {
return;
}

if (data.session.id != global.session) {
clean();
global.session = data.session.id;
global.sessions[data.session.id] = data.session;
};

// for the initiators and the groups, we can just save them without any verification
Object.assign(global.initiators, data.initiators);
Object.assign(global.groups, data.groups);

// for the requests, we may have to update them
for (const [request_id, request] of Object.entries(data.requests)) {
if (!(request_id in global.requests)) {
// this is a new request
save_request(request_id, request, data.session.id);
} else {
if (global.requests[request_id].last_update < request.last_update) {
// this request has been updated (probably a "big" file)
save_request(request_id, request, data.session.id);
}
};
};
}

async function load_request(request_id) {
if (typeof global.static_requests !== "undefined") {
global.connected = false;
return global.static_requests[request_id];
}

const res = await fetch("/request/" + request_id);
const data = await res.json();
return data;
try {
const res = await fetch("/request/" + request_id);
const data = await res.json();
global.connected = true;
return data;
} catch (error) {
global.connected = false;
return null;
}
}

async function get_request(request_id) {

await load_request(request_id)
.then(data => {
global.connected = true;
global.requests[request_id].filter = prepare_for_filter(global.requests[request_id].url);

global.requests[request_id].request = data.request;
if (data.request.body && data.request.body.text) {
global.requests[request_id].filter += " " + prepare_for_filter(
parse_raw_text(
data.request.body.text,
data.request.body.content_type
) || data.request.body.text
);
}
const data = await load_request(request_id);

global.requests[request_id].response = data.response;
if (data.response.body && data.response.body.text) {
global.requests[request_id].filter += " " + prepare_for_filter(
parse_raw_text(
data.response.body.text,
data.response.body.content_type
) || data.response.body.text
);
}
if (!data) {
return;
}

global.requests[request_id].filter = prepare_for_filter(global.requests[request_id].url);

// the full stack is not present in request summary
global.requests[request_id].initiator_id = data.initiator_id;
global.requests[request_id].exception = data.exception;
global.requests[request_id].request = data.request;
if (data.request.body && data.request.body.text) {
global.requests[request_id].filter += " " + prepare_for_filter(
parse_raw_text(
data.request.body.text,
data.request.body.content_type
) || data.request.body.text
);
}

global.requests[request_id].response = data.response;
if (data.response.body && data.response.body.text) {
global.requests[request_id].filter += " " + prepare_for_filter(
parse_raw_text(
data.response.body.text,
data.response.body.content_type
) || data.response.body.text
);
}

global.requests[request_id].to_refresh = true;
// the full stack is not present in request summary
global.requests[request_id].initiator_id = data.initiator_id;
global.requests[request_id].exception = data.exception;

global.requests[request_id].loaded = true;
})
.catch((error) => {
global.connected = false;
});
global.requests[request_id].to_refresh = true;

global.requests[request_id].loaded = true;
}

async function pol_new_data() {
Expand Down

This file was deleted.

1 change: 0 additions & 1 deletion httpdbg/webapp/static/index.htm
Original file line number Diff line number Diff line change
Expand Up @@ -377,7 +377,6 @@ <h4>request cookies</h4>
{{#body}}
{{#body.path}}
<a href="{{body.path}}" download="{{body.filename}}" class="need-server"><button title="download"><svg class="icon"><use href="#download-install-line-icon"></use></svg></button></a>
<svg class="icon need-server-info"><use href="#information-mark-circle-outline-icon"></use></svg>
{{/body.path}}

{{#body.text}}
Expand Down
6 changes: 0 additions & 6 deletions httpdbg/webapp/static/render.js
Original file line number Diff line number Diff line change
Expand Up @@ -260,19 +260,13 @@ async function disable_link_if_server_disconnected() {

if (global.connected) {
sheet.insertRule(".need-server {}");
sheet.insertRule(".need-server-info {display: none;}");
} else {
sheet.insertRule(".need-server {\
color: var(--link-server-disconnected);\
pointer-events: none;\
opacity: 0.5;\
text-decoration: none;\
}");
sheet.insertRule(".need-server-info {\
display: inline;\
color: var(--link-server-disconnected);\
opacity: 0.5;\
}");
}
}

Expand Down