Skip to content

Commit b985946

Browse files
jshasyphar
authored andcommitted
Redirect /releases/user to crates.io
1 parent 166f9b9 commit b985946

File tree

1 file changed

+9
-96
lines changed

1 file changed

+9
-96
lines changed

src/web/releases.rs

+9-96
Original file line numberDiff line numberDiff line change
@@ -114,61 +114,6 @@ pub(crate) fn get_releases(
114114
.collect()
115115
}
116116

117-
fn get_releases_by_owner(
118-
conn: &mut Client,
119-
page: i64,
120-
limit: i64,
121-
owner: &str,
122-
) -> (String, Vec<Release>) {
123-
let offset = (page - 1) * limit;
124-
125-
let query = "SELECT crates.name,
126-
releases.version,
127-
releases.description,
128-
releases.target_name,
129-
builds.build_time,
130-
releases.rustdoc_status,
131-
repositories.stars,
132-
owners.name,
133-
owners.login
134-
FROM crates
135-
INNER JOIN releases ON releases.id = crates.latest_version_id
136-
INNER JOIN builds ON releases.id = builds.rid
137-
INNER JOIN owner_rels ON owner_rels.cid = crates.id
138-
INNER JOIN owners ON owners.id = owner_rels.oid
139-
LEFT JOIN repositories ON releases.repository_id = repositories.id
140-
WHERE owners.login = $1
141-
ORDER BY repositories.stars DESC NULLS LAST
142-
LIMIT $2 OFFSET $3";
143-
let query = conn.query(query, &[&owner, &limit, &offset]).unwrap();
144-
145-
let mut owner_name = None;
146-
let packages = query
147-
.into_iter()
148-
.map(|row| {
149-
if owner_name.is_none() {
150-
owner_name = Some(if !row.get::<usize, String>(7).is_empty() {
151-
row.get(7)
152-
} else {
153-
row.get(8)
154-
});
155-
}
156-
157-
Release {
158-
name: row.get(0),
159-
version: row.get(1),
160-
description: row.get(2),
161-
target_name: row.get(3),
162-
build_time: row.get(4),
163-
rustdoc_status: row.get(5),
164-
stars: row.get::<_, Option<i32>>(6).unwrap_or(0),
165-
}
166-
})
167-
.collect();
168-
169-
(owner_name.unwrap_or_default(), packages)
170-
}
171-
172117
struct SearchResult {
173118
pub results: Vec<Release>,
174119
pub executed_query: Option<String>,
@@ -355,7 +300,6 @@ pub(super) enum ReleaseType {
355300
Stars,
356301
RecentFailures,
357302
Failures,
358-
Owner,
359303
Search,
360304
}
361305

@@ -379,9 +323,9 @@ fn releases_handler(req: &mut Request, release_type: ReleaseType) -> IronResult<
379323
true,
380324
),
381325

382-
ReleaseType::Owner | ReleaseType::Search => panic!(
383-
"The owners and search page have special requirements and cannot use this handler",
384-
),
326+
ReleaseType::Search => {
327+
panic!("The search page has special requirements and cannot use this handler",)
328+
}
385329
};
386330

387331
let releases = {
@@ -431,45 +375,14 @@ pub fn releases_failures_by_stars_handler(req: &mut Request) -> IronResult<Respo
431375

432376
pub fn owner_handler(req: &mut Request) -> IronResult<Response> {
433377
let router = extension!(req, Router);
434-
// page number of releases
435-
let page_number: i64 = router
436-
.find("page")
437-
.and_then(|page_num| page_num.parse().ok())
438-
.unwrap_or(1);
439-
let owner_route_value = router.find("owner").unwrap();
440-
441-
let (owner_name, releases) = {
442-
let mut conn = extension!(req, Pool).get()?;
443-
444-
// We need to keep the owner_route_value unchanged, as we may render paginated links in the page.
445-
// Changing the owner_route_value directly will cause the link to change, for example: @foobar -> foobar.
446-
let mut owner = owner_route_value;
447-
if owner.starts_with('@') {
448-
owner = &owner[1..];
449-
}
450-
get_releases_by_owner(&mut conn, page_number, RELEASES_IN_RELEASES, owner)
451-
};
452-
453-
if releases.is_empty() {
454-
return Err(Nope::OwnerNotFound.into());
378+
let mut owner = router.find("owner").unwrap();
379+
if owner.starts_with('@') {
380+
owner = &owner[1..];
455381
}
456-
457-
// Show next and previous page buttons
458-
let (show_next_page, show_previous_page) = (
459-
releases.len() == RELEASES_IN_RELEASES as usize,
460-
page_number != 1,
461-
);
462-
463-
ViewReleases {
464-
releases,
465-
description: format!("Crates from {}", owner_name),
466-
release_type: ReleaseType::Owner,
467-
show_next_page,
468-
show_previous_page,
469-
page_number,
470-
owner: Some(owner_route_value.into()),
382+
match format!("https://crates.io/users/{}", owner).parse() {
383+
Ok(url) => Ok(super::redirect(url)),
384+
Err(_) => Err(Nope::OwnerNotFound.into()),
471385
}
472-
.into_response(req)
473386
}
474387

475388
#[derive(Debug, Clone, PartialEq, Serialize)]

0 commit comments

Comments
 (0)