Skip to content

Commit 88873e0

Browse files
jshajyn514
authored andcommitted
Skip redirect in sitemap
1 parent 846add3 commit 88873e0

File tree

2 files changed

+20
-10
lines changed

2 files changed

+20
-10
lines changed

src/web/sitemap.rs

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,17 @@ pub fn sitemapindex_handler(req: &mut Request) -> IronResult<Response> {
2626
SitemapIndexXml { sitemaps }.into_response(req)
2727
}
2828

29+
#[derive(Debug, Clone, PartialEq, Eq, Serialize)]
30+
struct SitemapRow {
31+
crate_name: String,
32+
last_modified: String,
33+
target_name: String,
34+
}
35+
2936
/// The sitemap
3037
#[derive(Debug, Clone, PartialEq, Eq, Serialize)]
3138
struct SitemapXml {
32-
/// The release's names and RFC 3339 timestamp to be displayed on the sitemap
33-
releases: Vec<(String, String)>,
39+
releases: Vec<SitemapRow>,
3440
}
3541

3642
impl_webpage! {
@@ -54,26 +60,30 @@ pub fn sitemap_handler(req: &mut Request) -> IronResult<Response> {
5460
let query = conn
5561
.query(
5662
"SELECT crates.name,
63+
releases.target_name,
5764
MAX(releases.release_time) as release_time
5865
FROM crates
5966
INNER JOIN releases ON releases.crate_id = crates.id
6067
WHERE
6168
rustdoc_status = true AND
6269
crates.name ILIKE $1
63-
GROUP BY crates.name
70+
GROUP BY crates.name, releases.target_name
6471
",
6572
&[&format!("{}%", letter)],
6673
)
6774
.unwrap();
6875

6976
let releases = query
7077
.into_iter()
71-
.map(|row| {
72-
let time = row.get::<_, DateTime<Utc>>(1).format("%+").to_string();
73-
74-
(row.get(0), time)
78+
.map(|row| SitemapRow {
79+
crate_name: row.get("name"),
80+
target_name: row.get("target_name"),
81+
last_modified: row
82+
.get::<_, DateTime<Utc>>("release_time")
83+
.format("%+")
84+
.to_string(),
7585
})
76-
.collect::<Vec<(String, String)>>();
86+
.collect();
7787

7888
SitemapXml { releases }.into_response(req)
7989
}

templates/core/sitemap.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
33
{% for release in releases -%}
44
<url>
5-
<loc>https://docs.rs/{{ release[0] }}</loc>
6-
<lastmod>{{ release[1] | escape_xml }}</lastmod>
5+
<loc>https://docs.rs/{{ release.crate_name }}/latest/{{ release.target_name }}</loc>
6+
<lastmod>{{ release.last_modified | escape_xml }}</lastmod>
77
</url>
88
{%- endfor %}
99
</urlset>

0 commit comments

Comments
 (0)