Skip to content

Commit 6855128

Browse files
committed
Move serve_opensearch to web module and add CacheControl
Closes: #160
1 parent 994e662 commit 6855128

File tree

2 files changed

+13
-16
lines changed

2 files changed

+13
-16
lines changed

src/web/mod.rs

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -44,14 +44,14 @@ mod file;
4444
mod builds;
4545
mod error;
4646
mod sitemap;
47-
mod opensearch;
4847

4948
use std::env;
5049
use std::error::Error;
5150
use std::time::Duration;
5251
use std::path::PathBuf;
5352
use iron::prelude::*;
5453
use iron::{Handler, status};
54+
use iron::headers::{CacheControl, CacheDirective, ContentType};
5555
use router::{Router, NoRoute};
5656
use staticfile::Static;
5757
use handlebars_iron::{HandlebarsEngine, DirectorySource};
@@ -65,6 +65,7 @@ use std::collections::BTreeMap;
6565
/// Duration of static files for staticfile and DatabaseFileHandler (in seconds)
6666
const STATIC_FILE_CACHE_DURATION: u64 = 60 * 60 * 24 * 30 * 12; // 12 months
6767
const STYLE_CSS: &'static str = include_str!(concat!(env!("OUT_DIR"), "/style.css"));
68+
const OPENSEARCH_XML: &'static [u8] = include_bytes!("opensearch.xml");
6869

6970

7071
struct CratesfyiHandler {
@@ -100,9 +101,7 @@ impl CratesfyiHandler {
100101
"about");
101102
router.get("/robots.txt", sitemap::robots_txt_handler, "robots_txt");
102103
router.get("/sitemap.xml", sitemap::sitemap_handler, "sitemap_xml");
103-
router.get("/opensearch.xml",
104-
opensearch::serve_opensearch,
105-
"opensearch_xml");
104+
router.get("/opensearch.xml", opensearch_xml_handler, "opensearch_xml");
106105
router.get("/releases", releases::releases_handler, "releases");
107106
router.get("/releases/feed",
108107
releases::releases_feed_handler,
@@ -395,7 +394,6 @@ fn duration_to_str(ts: time::Timespec) -> String {
395394

396395

397396
fn style_css_handler(_: &mut Request) -> IronResult<Response> {
398-
use iron::headers::{CacheControl, CacheDirective, ContentType};
399397
let mut response = Response::with((status::Ok, STYLE_CSS));
400398
let cache = vec![CacheDirective::Public,
401399
CacheDirective::MaxAge(STATIC_FILE_CACHE_DURATION as u32)];
@@ -405,6 +403,16 @@ fn style_css_handler(_: &mut Request) -> IronResult<Response> {
405403
}
406404

407405

406+
fn opensearch_xml_handler(_: &mut Request) -> IronResult<Response> {
407+
let mut response = Response::with((status::Ok, OPENSEARCH_XML));
408+
let cache = vec![CacheDirective::Public,
409+
CacheDirective::MaxAge(STATIC_FILE_CACHE_DURATION as u32)];
410+
response.headers.set(ContentType("application/opensearchdescription+xml".parse().unwrap()));
411+
response.headers.set(CacheControl(cache));
412+
Ok(response)
413+
}
414+
415+
408416
/// MetaData used in header
409417
#[derive(Debug)]
410418
pub struct MetaData {

src/web/opensearch.rs

Lines changed: 0 additions & 11 deletions
This file was deleted.

0 commit comments

Comments
 (0)