diff --git a/src/krate.rs b/src/krate.rs index 010971ed380..df9315cf747 100644 --- a/src/krate.rs +++ b/src/krate.rs @@ -1019,3 +1019,12 @@ pub fn reverse_dependencies(req: &mut Request) -> CargoResult { struct Meta { total: i64 } Ok(req.json(&R{ dependencies: rev_deps, meta: Meta { total: total } })) } + +pub fn shield(req: &mut Request) -> CargoResult { + let name = &req.params()["crate_id"]; + let conn = try!(req.tx()); + let krate = try!(Crate::find_by_name(conn, &name)); + Ok(req.redirect(format!( + "https://img.shields.io/badge/crates.io-{}-green.svg", + krate.max_version))) +} diff --git a/src/lib.rs b/src/lib.rs index 847a0775114..b1d0628ae48 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -89,6 +89,7 @@ pub fn middleware(app: Arc) -> MiddlewareBuilder { api_router.delete("/crates/:crate_id/:version/yank", C(version::yank)); api_router.put("/crates/:crate_id/:version/unyank", C(version::unyank)); api_router.get("/crates/:crate_id/reverse_dependencies", C(krate::reverse_dependencies)); + api_router.get("/crates/:crate_id.svg", C(krate::shield)); api_router.get("/versions", C(version::index)); api_router.get("/versions/:version_id", C(version::show)); api_router.get("/keywords", C(keyword::index));