Skip to content

Commit 990fa3a

Browse files
committed
Redirect to rustdoc when user is feeling lucky
This is a super dirty patch to check if a crate have rustdocs generated. This only occurs if user uses feeling lucky button. It is now redirecting to documentation instead of crate page. Closes: #163
1 parent 13da7b2 commit 990fa3a

File tree

1 file changed

+27
-2
lines changed

1 file changed

+27
-2
lines changed

src/web/releases.rs

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -456,12 +456,37 @@ pub fn search_handler(req: &mut Request) -> IronResult<Response> {
456456

457457

458458
if let Some(version) = match_version(&conn, &query, None) {
459-
let url = ctry!(Url::parse(&format!("{}://{}:{}/crate/{}/{}",
459+
// FIXME: This is a super dirty way to check if crate have rustdocs generated.
460+
// match_version should handle this instead of this code block.
461+
// This block is introduced to fix #163
462+
let rustdoc_status = {
463+
let rows = ctry!(conn.query("SELECT rustdoc_status
464+
FROM releases
465+
INNER JOIN crates
466+
ON crates.id = releases.crate_id
467+
WHERE crates.name = $1 AND releases.version = $2",
468+
&[query, &version]));
469+
if rows.is_empty() {
470+
false
471+
} else {
472+
rows.get(0).get(0)
473+
}
474+
};
475+
let url = if rustdoc_status {
476+
ctry!(Url::parse(&format!("{}://{}:{}/{}/{}",
460477
req.url.scheme(),
461478
req.url.host(),
462479
req.url.port(),
463480
query,
464-
version)[..]));
481+
version)[..]))
482+
} else {
483+
ctry!(Url::parse(&format!("{}://{}:{}/crate/{}/{}",
484+
req.url.scheme(),
485+
req.url.host(),
486+
req.url.port(),
487+
query,
488+
version)[..]))
489+
};
465490
let mut resp = Response::with((status::Found, Redirect(url)));
466491

467492
use iron::headers::{Expires, HttpDate};

0 commit comments

Comments
 (0)