summaryrefslogtreecommitdiffstats
path: root/server
diff options
context:
space:
mode:
authorKornel <kornel@geekhood.net>2019-08-31 17:39:47 +0100
committerKornel <kornel@geekhood.net>2019-08-31 17:39:47 +0100
commite8bd8251a4ba145fc1749f6ab5c691cbd83698b9 (patch)
treed8014f6420e57608aa114b3a081f820c191ff2cd /server
parentdb5fdf5d03cdf3d8186ea19475e4dc30dd8dfd06 (diff)
Debug page dumping version compat
Diffstat (limited to 'server')
-rw-r--r--server/src/main.rs19
1 files changed, 19 insertions, 0 deletions
diff --git a/server/src/main.rs b/server/src/main.rs
index 6eb87d2..2e02b8f 100644
--- a/server/src/main.rs
+++ b/server/src/main.rs
@@ -129,6 +129,7 @@ fn run_server() -> Result<(), failure::Error> {
.resource("/keywords/{keyword}", |r| r.method(Method::GET).f(handle_keyword))
.resource("/crates/{crate}", |r| r.method(Method::GET).f(handle_crate))
.resource("/install/{crate:.*}", |r| r.method(Method::GET).f(handle_install))
+ .resource("/debug/{crate:.*}", |r| r.method(Method::GET).f(handle_debug))
.resource("/gh/{owner}/{repo}/{crate}", |r| r.method(Method::GET).f(handle_github_crate))
.resource("/lab/{owner}/{repo}/{crate}", |r| r.method(Method::GET).f(handle_gitlab_crate))
.resource("/atom.xml", |r| r.method(Method::GET).f(handle_feed))
@@ -337,6 +338,24 @@ fn get_origin_from_subpath(q: &Params) -> Option<Origin> {
}
}
+fn handle_debug(req: &HttpRequest<AServerState>) -> Result<HttpResponse> {
+ if !cfg!(debug_assertions) {
+ Err(failure::err_msg("off"))?
+ }
+
+ let state = req.state();
+ let origin = get_origin_from_subpath(req.match_info()).ok_or_else(|| failure::err_msg("404"))?;
+ let mut page: Vec<u8> = Vec::with_capacity(50000);
+ let crates = state.crates.load();
+ let ver = crates.rich_crate_version(&origin)?;
+ front_end::render_debug_page(&mut page, &ver, &crates)?;
+ Ok(HttpResponse::Ok()
+ .content_type("text/html;charset=UTF-8")
+ .header("Cache-Control", "no-cache")
+ .content_length(page.len() as u64)
+ .body(page))
+}
+
fn handle_install(req: &HttpRequest<AServerState>) -> FutureResponse<HttpResponse> {
let state = req.state();
let origin = if let Some(o) = get_origin_from_subpath(req.match_info()) {o}