diff options
Diffstat (limited to 'cli/file_fetcher.rs')
-rw-r--r-- | cli/file_fetcher.rs | 146 |
1 files changed, 25 insertions, 121 deletions
diff --git a/cli/file_fetcher.rs b/cli/file_fetcher.rs index 7dc39be71..2101866dc 100644 --- a/cli/file_fetcher.rs +++ b/cli/file_fetcher.rs @@ -404,7 +404,7 @@ impl SourceFileFetcher { }; let (mut source_file, headers) = result; - if let Some(redirect_to) = headers.get("location").and_then(|e| e.first()) { + if let Some(redirect_to) = headers.get("location") { let redirect_url = match Url::parse(redirect_to) { Ok(redirect_url) => redirect_url, Err(url::ParseError::RelativeUrlWithoutBase) => { @@ -427,15 +427,9 @@ impl SourceFileFetcher { let fake_filepath = PathBuf::from(module_url.path()); let (media_type, charset) = map_content_type( &fake_filepath, - headers - .get("content-type") - .and_then(|e| e.first()) - .map(|e| e.as_str()), + headers.get("content-type").map(|e| e.as_str()), ); - let types_header = headers - .get("x-typescript-types") - .and_then(|e| e.first()) - .map(|e| e.to_string()); + let types_header = headers.get("x-typescript-types").map(|e| e.to_string()); Ok(Some(SourceFile { url: module_url.clone(), filename: cache_filename, @@ -499,10 +493,7 @@ impl SourceFileFetcher { let dir = self.clone(); let module_url = module_url.clone(); let module_etag = match self.http_cache.get(&module_url) { - Ok((_, headers)) => headers - .get("etag") - .and_then(|e| e.first()) - .map(|e| e.to_string()), + Ok((_, headers)) => headers.get("etag").map(String::from), Err(_) => None, }; let permissions = permissions.clone(); @@ -541,16 +532,11 @@ impl SourceFileFetcher { let fake_filepath = PathBuf::from(module_url.path()); let (media_type, charset) = map_content_type( &fake_filepath, - headers - .get("content-type") - .and_then(|e| e.first()) - .map(|e| e.as_str()), + headers.get("content-type").map(String::as_str), ); - let types_header = headers - .get("x-typescript-types") - .and_then(|e| e.first()) - .map(|e| e.to_string()); + let types_header = + headers.get("x-typescript-types").map(String::to_string); let source_file = SourceFile { url: module_url.clone(), @@ -822,9 +808,7 @@ mod tests { metadata.headers = HashMap::new(); metadata .headers - .entry("content-type".to_string()) - .or_insert_with(Vec::new) - .push("text/javascript".to_string()); + .insert("content-type".to_string(), "text/javascript".to_string()); metadata.write(&cache_filename).unwrap(); let result2 = fetcher_1 @@ -847,23 +831,13 @@ mod tests { assert_eq!(&(r2.media_type), &MediaType::JavaScript); let (_, headers) = fetcher_2.http_cache.get(&module_url_1).unwrap(); - assert_eq!( - headers - .get("content-type") - .unwrap() - .first() - .unwrap() - .as_str(), - "text/javascript" - ); + assert_eq!(headers.get("content-type").unwrap(), "text/javascript"); // Modify .headers.json again, but the other way around metadata.headers = HashMap::new(); metadata .headers - .entry("content-type".to_string()) - .or_insert_with(Vec::new) - .push("application/json".to_string()); + .insert("content-type".to_string(), "application/json".to_string()); metadata.write(&cache_filename).unwrap(); let result3 = fetcher_2 @@ -886,13 +860,7 @@ mod tests { assert_eq!(&(r3.media_type), &MediaType::Json); let metadata = crate::http_cache::Metadata::read(&cache_filename).unwrap(); assert_eq!( - metadata - .headers - .get("content-type") - .unwrap() - .first() - .unwrap() - .as_str(), + metadata.headers.get("content-type").unwrap(), "application/json" ); @@ -942,15 +910,7 @@ mod tests { assert_eq!(r.source_code.bytes, expected); assert_eq!(&(r.media_type), &MediaType::JavaScript); let (_, headers) = fetcher.http_cache.get(&module_url).unwrap(); - assert_eq!( - headers - .get("content-type") - .unwrap() - .first() - .unwrap() - .as_str(), - "text/javascript" - ); + assert_eq!(headers.get("content-type").unwrap(), "text/javascript"); // Modify .headers.json let mut metadata = @@ -958,9 +918,7 @@ mod tests { metadata.headers = HashMap::new(); metadata .headers - .entry("content-type".to_string()) - .or_insert_with(Vec::new) - .push("text/typescript".to_string()); + .insert("content-type".to_string(), "text/typescript".to_string()); metadata.write(&cache_filename).unwrap(); let result2 = fetcher @@ -982,13 +940,7 @@ mod tests { assert_eq!(&(r2.media_type), &MediaType::TypeScript); let metadata = crate::http_cache::Metadata::read(&cache_filename).unwrap(); assert_eq!( - metadata - .headers - .get("content-type") - .unwrap() - .first() - .unwrap() - .as_str(), + metadata.headers.get("content-type").unwrap(), "text/typescript" ); @@ -1012,15 +964,7 @@ mod tests { // (due to http fetch) assert_eq!(&(r3.media_type), &MediaType::JavaScript); let (_, headers) = fetcher.http_cache.get(&module_url).unwrap(); - assert_eq!( - headers - .get("content-type") - .unwrap() - .first() - .unwrap() - .as_str(), - "text/javascript" - ); + assert_eq!(headers.get("content-type").unwrap(), "text/javascript"); } #[tokio::test] @@ -1106,7 +1050,7 @@ mod tests { assert_eq!(fs::read_to_string(&redirect_source_filename).unwrap(), ""); let (_, headers) = fetcher.http_cache.get(&redirect_module_url).unwrap(); assert_eq!( - headers.get("location").unwrap().first().unwrap().as_str(), + headers.get("location").unwrap(), "http://localhost:4545/cli/tests/subdir/redirects/redirect1.js" ); // The target of redirection is downloaded instead. @@ -1159,16 +1103,10 @@ mod tests { assert_eq!(fs::read_to_string(&redirect_path).unwrap(), ""); let (_, headers) = fetcher.http_cache.get(&double_redirect_url).unwrap(); - assert_eq!( - headers.get("location").unwrap().first().unwrap(), - &redirect_url.to_string() - ); + assert_eq!(headers.get("location").unwrap(), &redirect_url.to_string()); let (_, headers) = fetcher.http_cache.get(&redirect_url).unwrap(); - assert_eq!( - headers.get("location").unwrap().first().unwrap(), - &target_url.to_string() - ); + assert_eq!(headers.get("location").unwrap(), &target_url.to_string()); // The target of redirection is downloaded instead. assert_eq!( @@ -1321,7 +1259,7 @@ mod tests { assert_eq!(fs::read_to_string(&redirect_source_filename).unwrap(), ""); let (_, headers) = fetcher.http_cache.get(&redirect_module_url).unwrap(); assert_eq!( - headers.get("location").unwrap().first().unwrap().as_str(), + headers.get("location").unwrap(), "/cli/tests/subdir/redirects/redirect1.js" ); // The target of redirection is downloaded instead. @@ -1435,9 +1373,7 @@ mod tests { metadata.headers = HashMap::new(); metadata .headers - .entry("content-type".to_string()) - .or_insert_with(Vec::new) - .push("text/javascript".to_string()); + .insert("content-type".to_string(), "text/javascript".to_string()); metadata.write(&cache_filename).unwrap(); let result2 = fetcher.fetch_cached_remote_source(&module_url, 1); @@ -1468,15 +1404,7 @@ mod tests { assert_eq!(r.source_code.bytes, b"export const loaded = true;\n"); assert_eq!(&(r.media_type), &MediaType::TypeScript); let (_, headers) = fetcher.http_cache.get(module_url).unwrap(); - assert_eq!( - headers - .get("content-type") - .unwrap() - .first() - .unwrap() - .as_str(), - "text/typescript" - ); + assert_eq!(headers.get("content-type").unwrap(), "text/typescript"); } #[tokio::test] @@ -1500,15 +1428,7 @@ mod tests { assert_eq!(r2.source_code.bytes, b"export const loaded = true;\n"); assert_eq!(&(r2.media_type), &MediaType::JavaScript); let (_, headers) = fetcher.http_cache.get(module_url).unwrap(); - assert_eq!( - headers - .get("content-type") - .unwrap() - .first() - .unwrap() - .as_str(), - "text/javascript" - ); + assert_eq!(headers.get("content-type").unwrap(), "text/javascript"); } #[tokio::test] @@ -1532,15 +1452,7 @@ mod tests { assert_eq!(r3.source_code.bytes, b"export const loaded = true;\n"); assert_eq!(&(r3.media_type), &MediaType::TypeScript); let (_, headers) = fetcher.http_cache.get(module_url).unwrap(); - assert_eq!( - headers - .get("content-type") - .unwrap() - .first() - .unwrap() - .as_str(), - "text/typescript" - ); + assert_eq!(headers.get("content-type").unwrap(), "text/typescript"); } #[tokio::test] @@ -1896,10 +1808,7 @@ mod tests { assert_eq!(&(source.media_type), &MediaType::TypeScript); let (_, headers) = fetcher.http_cache.get(&module_url).unwrap(); - assert_eq!( - headers.get("etag").unwrap().first().unwrap().as_str(), - "33a64df551425fcc55e" - ); + assert_eq!(headers.get("etag").unwrap(), "33a64df551425fcc55e"); let metadata_path = crate::http_cache::Metadata::filename( &fetcher.http_cache.get_cache_filename(&module_url), @@ -2024,12 +1933,7 @@ mod tests { let (_, headers) = fetcher.http_cache.get(&module_url).unwrap(); assert_eq!( - headers - .get("content-type") - .unwrap() - .first() - .unwrap() - .as_str(), + headers.get("content-type").unwrap(), &format!("application/typescript;charset={}", charset) ); } |