Skip to content

Commit f939089

Browse files
committed
Auto merge of #1924 - hbina:add_cache_control_for_readmes, r=smarnach
Added cache control to readme files Related issue: #1915 `extra_headers` parameter is no longer wrapped in `Option<T>`
2 parents b7796c9 + f82d6e3 commit f939089

File tree

4 files changed

+20
-14
lines changed

4 files changed

+20
-14
lines changed

src/bin/render-readmes.rs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,10 @@ use chrono::{TimeZone, Utc};
2121
use diesel::{dsl::any, prelude::*};
2222
use docopt::Docopt;
2323
use flate2::read::GzDecoder;
24-
use reqwest::Client;
24+
use reqwest::{header, Client};
2525
use tar::{self, Archive};
2626

27+
const CACHE_CONTROL_README: &str = "public,max-age=604800";
2728
const DEFAULT_PAGE_SIZE: usize = 25;
2829
const USAGE: &str = "
2930
Usage: render-readmes [options]
@@ -129,6 +130,8 @@ fn main() {
129130
let content_length = readme.len() as u64;
130131
let content = std::io::Cursor::new(readme);
131132
let readme_path = format!("readmes/{0}/{0}-{1}.html", krate_name, version.num);
133+
let mut extra_headers = header::HeaderMap::new();
134+
extra_headers.insert(header::CACHE_CONTROL, CACHE_CONTROL_README.parse().unwrap());
132135
config
133136
.uploader
134137
.upload(
@@ -137,7 +140,7 @@ fn main() {
137140
content,
138141
content_length,
139142
"text/html",
140-
None,
143+
extra_headers,
141144
)
142145
.unwrap_or_else(|_| {
143146
panic!(

src/s3/lib.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ impl Bucket {
4545
content: R,
4646
content_length: u64,
4747
content_type: &str,
48-
extra_headers: Option<header::HeaderMap>,
48+
extra_headers: header::HeaderMap,
4949
) -> reqwest::Result<reqwest::Response> {
5050
let path = if path.starts_with('/') {
5151
&path[1..]
@@ -61,7 +61,7 @@ impl Bucket {
6161
.header(header::AUTHORIZATION, auth)
6262
.header(header::CONTENT_TYPE, content_type)
6363
.header(header::DATE, date)
64-
.headers(extra_headers.unwrap_or_else(header::HeaderMap::new))
64+
.headers(extra_headers)
6565
.body(reqwest::Body::sized(content, content_length))
6666
.send()?
6767
.error_for_status()

src/tasks/dump_db.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ use std::{
44
};
55

66
use crate::{background_jobs::Environment, uploaders::Uploader, util::errors::std_error_no_send};
7-
7+
use reqwest::header;
88
use swirl::PerformError;
99

1010
/// Create CSV dumps of the public information in the database, wrap them in a
@@ -157,7 +157,7 @@ impl DumpTarball {
157157
tarfile,
158158
content_length,
159159
"application/gzip",
160-
None,
160+
header::HeaderMap::new(),
161161
)
162162
.map_err(std_error_no_send)?;
163163
Ok(())

src/uploaders.rs

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@ use std::sync::Arc;
1414
use crate::middleware::app::RequestApp;
1515
use crate::models::Crate;
1616

17-
pub const CACHE_CONTROL_IMMUTABLE: &str = "public,max-age=31536000,immutable";
17+
const CACHE_CONTROL_IMMUTABLE: &str = "public,max-age=31536000,immutable";
18+
const CACHE_CONTROL_README: &str = "public,max-age=604800";
1819

1920
#[derive(Clone, Debug)]
2021
pub enum Uploader {
@@ -94,7 +95,7 @@ impl Uploader {
9495
mut content: R,
9596
content_length: u64,
9697
content_type: &str,
97-
extra_headers: Option<header::HeaderMap>,
98+
extra_headers: header::HeaderMap,
9899
) -> CargoResult<Option<String>> {
99100
match *self {
100101
Uploader::S3 { ref bucket, .. } => {
@@ -138,17 +139,14 @@ impl Uploader {
138139
let content_length = body.len() as u64;
139140
let content = Cursor::new(body);
140141
let mut extra_headers = header::HeaderMap::new();
141-
extra_headers.insert(
142-
header::CACHE_CONTROL,
143-
CACHE_CONTROL_IMMUTABLE.parse().unwrap(),
144-
);
142+
extra_headers.insert(header::CACHE_CONTROL, CACHE_CONTROL_README.parse().unwrap());
145143
self.upload(
146144
app.http_client(),
147145
&path,
148146
content,
149147
content_length,
150148
"application/x-tar",
151-
Some(extra_headers),
149+
extra_headers,
152150
)?;
153151
Ok(checksum)
154152
}
@@ -163,13 +161,18 @@ impl Uploader {
163161
let path = Uploader::readme_path(crate_name, vers);
164162
let content_length = readme.len() as u64;
165163
let content = Cursor::new(readme);
164+
let mut extra_headers = header::HeaderMap::new();
165+
extra_headers.insert(
166+
header::CACHE_CONTROL,
167+
CACHE_CONTROL_IMMUTABLE.parse().unwrap(),
168+
);
166169
self.upload(
167170
http_client,
168171
&path,
169172
content,
170173
content_length,
171174
"text/html",
172-
None,
175+
extra_headers,
173176
)?;
174177
Ok(())
175178
}

0 commit comments

Comments
 (0)