diff --git a/src/tests/http-data/krate_publish_features_version_2 b/src/tests/http-data/krate_publish_features_version_2 index 74e7c7642c7..6002a50a269 100644 --- a/src/tests/http-data/krate_publish_features_version_2 +++ b/src/tests/http-data/krate_publish_features_version_2 @@ -68,7 +68,7 @@ }, { "request": { - "uri": "http://alexcrichton-test.s3.amazonaws.com/index/3/f/foo", + "uri": "http://alexcrichton-test.s3.amazonaws.com/3/f/foo", "method": "PUT", "headers": [ [ diff --git a/src/tests/http-data/krate_publish_good_badges b/src/tests/http-data/krate_publish_good_badges index 758b32c3bfb..06b88ed9510 100644 --- a/src/tests/http-data/krate_publish_good_badges +++ b/src/tests/http-data/krate_publish_good_badges @@ -68,7 +68,7 @@ }, { "request": { - "uri": "http://alexcrichton-test.s3.amazonaws.com/index/fo/ob/foobadger", + "uri": "http://alexcrichton-test.s3.amazonaws.com/fo/ob/foobadger", "method": "PUT", "headers": [ [ diff --git a/src/tests/http-data/krate_publish_good_categories b/src/tests/http-data/krate_publish_good_categories index 24bbaf7430a..4845a211cee 100644 --- a/src/tests/http-data/krate_publish_good_categories +++ b/src/tests/http-data/krate_publish_good_categories @@ -68,7 +68,7 @@ }, { "request": { - "uri": "http://alexcrichton-test.s3.amazonaws.com/index/fo/o_/foo_good_cat", + "uri": "http://alexcrichton-test.s3.amazonaws.com/fo/o_/foo_good_cat", "method": "PUT", "headers": [ [ diff --git a/src/tests/http-data/krate_publish_ignored_badges b/src/tests/http-data/krate_publish_ignored_badges index 2dbbb1aba24..fa0490c2a2f 100644 --- a/src/tests/http-data/krate_publish_ignored_badges +++ b/src/tests/http-data/krate_publish_ignored_badges @@ -68,7 +68,7 @@ }, { "request": { - "uri": "http://alexcrichton-test.s3.amazonaws.com/index/fo/o_/foo_ignored_badge", + "uri": "http://alexcrichton-test.s3.amazonaws.com/fo/o_/foo_ignored_badge", "method": "PUT", "headers": [ [ diff --git a/src/tests/http-data/krate_publish_ignored_categories b/src/tests/http-data/krate_publish_ignored_categories index c5082aff4c0..06691dfb935 100644 --- a/src/tests/http-data/krate_publish_ignored_categories +++ b/src/tests/http-data/krate_publish_ignored_categories @@ -68,7 +68,7 @@ }, { "request": { - "uri": "http://alexcrichton-test.s3.amazonaws.com/index/fo/o_/foo_ignored_cat", + "uri": "http://alexcrichton-test.s3.amazonaws.com/fo/o_/foo_ignored_cat", "method": "PUT", "headers": [ [ diff --git a/src/tests/http-data/krate_publish_new_crate_allow_empty_alternative_registry_dependency b/src/tests/http-data/krate_publish_new_crate_allow_empty_alternative_registry_dependency index 0bf3792759a..4945c939d04 100644 --- a/src/tests/http-data/krate_publish_new_crate_allow_empty_alternative_registry_dependency +++ b/src/tests/http-data/krate_publish_new_crate_allow_empty_alternative_registry_dependency @@ -35,7 +35,7 @@ }, { "request": { - "uri": "http://alexcrichton-test.s3.amazonaws.com/index/3/f/foo", + "uri": "http://alexcrichton-test.s3.amazonaws.com/3/f/foo", "method": "PUT", "headers": [ [ diff --git a/src/tests/http-data/krate_publish_new_krate b/src/tests/http-data/krate_publish_new_krate index 1ff2145ea12..409192f026e 100644 --- a/src/tests/http-data/krate_publish_new_krate +++ b/src/tests/http-data/krate_publish_new_krate @@ -68,7 +68,7 @@ }, { "request": { - "uri": "http://alexcrichton-test.s3.amazonaws.com/index/fo/o_/foo_new", + "uri": "http://alexcrichton-test.s3.amazonaws.com/fo/o_/foo_new", "method": "PUT", "headers": [ [ diff --git a/src/tests/http-data/krate_publish_new_krate_git_upload b/src/tests/http-data/krate_publish_new_krate_git_upload index f8fb995a1e3..e9e74dd5e1d 100644 --- a/src/tests/http-data/krate_publish_new_krate_git_upload +++ b/src/tests/http-data/krate_publish_new_krate_git_upload @@ -68,7 +68,7 @@ }, { "request": { - "uri": "http://alexcrichton-test.s3.amazonaws.com/index/3/f/fgt", + "uri": "http://alexcrichton-test.s3.amazonaws.com/3/f/fgt", "method": "PUT", "headers": [ [ diff --git a/src/tests/http-data/krate_publish_new_krate_git_upload_appends b/src/tests/http-data/krate_publish_new_krate_git_upload_appends index 6f474d669d8..1809d237361 100644 --- a/src/tests/http-data/krate_publish_new_krate_git_upload_appends +++ b/src/tests/http-data/krate_publish_new_krate_git_upload_appends @@ -135,7 +135,7 @@ }, { "request": { - "uri": "http://alexcrichton-test.s3.amazonaws.com/index/3/f/fpp", + "uri": "http://alexcrichton-test.s3.amazonaws.com/3/f/fpp", "method": "PUT", "headers": [ [ @@ -202,7 +202,7 @@ }, { "request": { - "uri": "http://alexcrichton-test.s3.amazonaws.com/index/3/f/fpp", + "uri": "http://alexcrichton-test.s3.amazonaws.com/3/f/fpp", "method": "PUT", "headers": [ [ diff --git a/src/tests/http-data/krate_publish_new_krate_git_upload_with_conflicts b/src/tests/http-data/krate_publish_new_krate_git_upload_with_conflicts index 2b19ccc2646..4f5cf6d24a6 100644 --- a/src/tests/http-data/krate_publish_new_krate_git_upload_with_conflicts +++ b/src/tests/http-data/krate_publish_new_krate_git_upload_with_conflicts @@ -68,7 +68,7 @@ }, { "request": { - "uri": "http://alexcrichton-test.s3.amazonaws.com/index/fo/o_/foo_conflicts", + "uri": "http://alexcrichton-test.s3.amazonaws.com/fo/o_/foo_conflicts", "method": "PUT", "headers": [ [ diff --git a/src/tests/http-data/krate_publish_new_krate_records_verified_email b/src/tests/http-data/krate_publish_new_krate_records_verified_email index 406c64c6135..d707f09d9f9 100644 --- a/src/tests/http-data/krate_publish_new_krate_records_verified_email +++ b/src/tests/http-data/krate_publish_new_krate_records_verified_email @@ -68,7 +68,7 @@ }, { "request": { - "uri": "http://alexcrichton-test.s3.amazonaws.com/index/fo/o_/foo_verified_email", + "uri": "http://alexcrichton-test.s3.amazonaws.com/fo/o_/foo_verified_email", "method": "PUT", "headers": [ [ diff --git a/src/tests/http-data/krate_publish_new_krate_too_big_but_whitelisted b/src/tests/http-data/krate_publish_new_krate_too_big_but_whitelisted index 46d3358019c..0e2b42e9bec 100644 --- a/src/tests/http-data/krate_publish_new_krate_too_big_but_whitelisted +++ b/src/tests/http-data/krate_publish_new_krate_too_big_but_whitelisted @@ -68,7 +68,7 @@ }, { "request": { - "uri": "http://alexcrichton-test.s3.amazonaws.com/index/fo/o_/foo_whitelist", + "uri": "http://alexcrichton-test.s3.amazonaws.com/fo/o_/foo_whitelist", "method": "PUT", "headers": [ [ diff --git a/src/tests/http-data/krate_publish_new_krate_twice b/src/tests/http-data/krate_publish_new_krate_twice index d22bfd0dd95..3c4101790f8 100644 --- a/src/tests/http-data/krate_publish_new_krate_twice +++ b/src/tests/http-data/krate_publish_new_krate_twice @@ -68,7 +68,7 @@ }, { "request": { - "uri": "http://alexcrichton-test.s3.amazonaws.com/index/fo/o_/foo_twice", + "uri": "http://alexcrichton-test.s3.amazonaws.com/fo/o_/foo_twice", "method": "PUT", "headers": [ [ diff --git a/src/tests/http-data/krate_publish_new_krate_weird_version b/src/tests/http-data/krate_publish_new_krate_weird_version index 2227cae63f3..c6402fb6922 100644 --- a/src/tests/http-data/krate_publish_new_krate_weird_version +++ b/src/tests/http-data/krate_publish_new_krate_weird_version @@ -68,7 +68,7 @@ }, { "request": { - "uri": "http://alexcrichton-test.s3.amazonaws.com/index/fo/o_/foo_weird", + "uri": "http://alexcrichton-test.s3.amazonaws.com/fo/o_/foo_weird", "method": "PUT", "headers": [ [ diff --git a/src/tests/http-data/krate_publish_new_krate_with_dependency b/src/tests/http-data/krate_publish_new_krate_with_dependency index 7f50431ceac..d19985f7377 100644 --- a/src/tests/http-data/krate_publish_new_krate_with_dependency +++ b/src/tests/http-data/krate_publish_new_krate_with_dependency @@ -68,7 +68,7 @@ }, { "request": { - "uri": "http://alexcrichton-test.s3.amazonaws.com/index/ne/w_/new_dep", + "uri": "http://alexcrichton-test.s3.amazonaws.com/ne/w_/new_dep", "method": "PUT", "headers": [ [ diff --git a/src/tests/http-data/krate_publish_new_krate_with_readme b/src/tests/http-data/krate_publish_new_krate_with_readme index bc2d99271c9..16e35137a57 100644 --- a/src/tests/http-data/krate_publish_new_krate_with_readme +++ b/src/tests/http-data/krate_publish_new_krate_with_readme @@ -135,7 +135,7 @@ }, { "request": { - "uri": "http://alexcrichton-test.s3.amazonaws.com/index/fo/o_/foo_readme", + "uri": "http://alexcrichton-test.s3.amazonaws.com/fo/o_/foo_readme", "method": "PUT", "headers": [ [ diff --git a/src/tests/http-data/krate_publish_new_krate_with_token b/src/tests/http-data/krate_publish_new_krate_with_token index 071ea62ae67..2c003a2d25b 100644 --- a/src/tests/http-data/krate_publish_new_krate_with_token +++ b/src/tests/http-data/krate_publish_new_krate_with_token @@ -68,7 +68,7 @@ }, { "request": { - "uri": "http://alexcrichton-test.s3.amazonaws.com/index/fo/o_/foo_new", + "uri": "http://alexcrichton-test.s3.amazonaws.com/fo/o_/foo_new", "method": "PUT", "headers": [ [ diff --git a/src/tests/http-data/krate_publish_new_with_renamed_dependency b/src/tests/http-data/krate_publish_new_with_renamed_dependency index 922217c38dc..b8979aea80a 100644 --- a/src/tests/http-data/krate_publish_new_with_renamed_dependency +++ b/src/tests/http-data/krate_publish_new_with_renamed_dependency @@ -68,7 +68,7 @@ }, { "request": { - "uri": "http://alexcrichton-test.s3.amazonaws.com/index/ne/w-/new-krate", + "uri": "http://alexcrichton-test.s3.amazonaws.com/ne/w-/new-krate", "method": "PUT", "headers": [ [ diff --git a/src/tests/http-data/krate_publish_new_with_underscore_renamed_dependency b/src/tests/http-data/krate_publish_new_with_underscore_renamed_dependency index 6d9a40a3e7d..344bed22b84 100644 --- a/src/tests/http-data/krate_publish_new_with_underscore_renamed_dependency +++ b/src/tests/http-data/krate_publish_new_with_underscore_renamed_dependency @@ -68,7 +68,7 @@ }, { "request": { - "uri": "http://alexcrichton-test.s3.amazonaws.com/index/ne/w-/new-krate", + "uri": "http://alexcrichton-test.s3.amazonaws.com/ne/w-/new-krate", "method": "PUT", "headers": [ [ diff --git a/src/tests/http-data/krate_publish_publish_after_removing_documentation b/src/tests/http-data/krate_publish_publish_after_removing_documentation index 0f054bcf34e..34791d2eb45 100644 --- a/src/tests/http-data/krate_publish_publish_after_removing_documentation +++ b/src/tests/http-data/krate_publish_publish_after_removing_documentation @@ -135,7 +135,7 @@ }, { "request": { - "uri": "http://alexcrichton-test.s3.amazonaws.com/index/do/cs/docscrate", + "uri": "http://alexcrichton-test.s3.amazonaws.com/do/cs/docscrate", "method": "PUT", "headers": [ [ @@ -202,7 +202,7 @@ }, { "request": { - "uri": "http://alexcrichton-test.s3.amazonaws.com/index/do/cs/docscrate", + "uri": "http://alexcrichton-test.s3.amazonaws.com/do/cs/docscrate", "method": "PUT", "headers": [ [ diff --git a/src/tests/http-data/krate_publish_publish_new_crate_rate_limited b/src/tests/http-data/krate_publish_publish_new_crate_rate_limited index e65311b25a0..0458ebeea01 100644 --- a/src/tests/http-data/krate_publish_publish_new_crate_rate_limited +++ b/src/tests/http-data/krate_publish_publish_new_crate_rate_limited @@ -68,7 +68,7 @@ }, { "request": { - "uri": "http://alexcrichton-test.s3.amazonaws.com/index/ra/te/rate_limited1", + "uri": "http://alexcrichton-test.s3.amazonaws.com/ra/te/rate_limited1", "method": "PUT", "headers": [ [ @@ -202,7 +202,7 @@ }, { "request": { - "uri": "http://alexcrichton-test.s3.amazonaws.com/index/ra/te/rate_limited2", + "uri": "http://alexcrichton-test.s3.amazonaws.com/ra/te/rate_limited2", "method": "PUT", "headers": [ [ diff --git a/src/tests/http-data/krate_publish_publish_rate_limit_doesnt_affect_existing_crates b/src/tests/http-data/krate_publish_publish_rate_limit_doesnt_affect_existing_crates index 48524b01b5d..3c312c755a1 100644 --- a/src/tests/http-data/krate_publish_publish_rate_limit_doesnt_affect_existing_crates +++ b/src/tests/http-data/krate_publish_publish_rate_limit_doesnt_affect_existing_crates @@ -135,7 +135,7 @@ }, { "request": { - "uri": "http://alexcrichton-test.s3.amazonaws.com/index/ra/te/rate_limited1", + "uri": "http://alexcrichton-test.s3.amazonaws.com/ra/te/rate_limited1", "method": "PUT", "headers": [ [ @@ -202,7 +202,7 @@ }, { "request": { - "uri": "http://alexcrichton-test.s3.amazonaws.com/index/ra/te/rate_limited1", + "uri": "http://alexcrichton-test.s3.amazonaws.com/ra/te/rate_limited1", "method": "PUT", "headers": [ [ diff --git a/src/tests/http-data/krate_publish_publish_records_an_audit_action b/src/tests/http-data/krate_publish_publish_records_an_audit_action index 18dda3dcb5b..fb90b80d129 100644 --- a/src/tests/http-data/krate_publish_publish_records_an_audit_action +++ b/src/tests/http-data/krate_publish_publish_records_an_audit_action @@ -68,7 +68,7 @@ }, { "request": { - "uri": "http://alexcrichton-test.s3.amazonaws.com/index/3/f/fyk", + "uri": "http://alexcrichton-test.s3.amazonaws.com/3/f/fyk", "method": "PUT", "headers": [ [ diff --git a/src/tests/http-data/krate_publish_uploading_new_version_touches_crate b/src/tests/http-data/krate_publish_uploading_new_version_touches_crate index 6f0cd7a1347..04c6dd4eecb 100644 --- a/src/tests/http-data/krate_publish_uploading_new_version_touches_crate +++ b/src/tests/http-data/krate_publish_uploading_new_version_touches_crate @@ -135,7 +135,7 @@ }, { "request": { - "uri": "http://alexcrichton-test.s3.amazonaws.com/index/fo/o_/foo_versions_updated_at", + "uri": "http://alexcrichton-test.s3.amazonaws.com/fo/o_/foo_versions_updated_at", "method": "PUT", "headers": [ [ @@ -202,7 +202,7 @@ }, { "request": { - "uri": "http://alexcrichton-test.s3.amazonaws.com/index/fo/o_/foo_versions_updated_at", + "uri": "http://alexcrichton-test.s3.amazonaws.com/fo/o_/foo_versions_updated_at", "method": "PUT", "headers": [ [ diff --git a/src/tests/http-data/krate_yanking_publish_after_yank_max_version b/src/tests/http-data/krate_yanking_publish_after_yank_max_version index c1bf3ff54c8..3966a372128 100644 --- a/src/tests/http-data/krate_yanking_publish_after_yank_max_version +++ b/src/tests/http-data/krate_yanking_publish_after_yank_max_version @@ -68,7 +68,7 @@ }, { "request": { - "uri": "http://alexcrichton-test.s3.amazonaws.com/index/fy/k_/fyk_max", + "uri": "http://alexcrichton-test.s3.amazonaws.com/fy/k_/fyk_max", "method": "PUT", "headers": [ [ @@ -202,7 +202,7 @@ }, { "request": { - "uri": "http://alexcrichton-test.s3.amazonaws.com/index/fy/k_/fyk_max", + "uri": "http://alexcrichton-test.s3.amazonaws.com/fy/k_/fyk_max", "method": "PUT", "headers": [ [ diff --git a/src/tests/http-data/krate_yanking_unyank_records_an_audit_action b/src/tests/http-data/krate_yanking_unyank_records_an_audit_action index c918c895bea..94ce979c544 100644 --- a/src/tests/http-data/krate_yanking_unyank_records_an_audit_action +++ b/src/tests/http-data/krate_yanking_unyank_records_an_audit_action @@ -68,7 +68,7 @@ }, { "request": { - "uri": "http://alexcrichton-test.s3.amazonaws.com/index/3/f/fyk", + "uri": "http://alexcrichton-test.s3.amazonaws.com/3/f/fyk", "method": "PUT", "headers": [ [ diff --git a/src/tests/http-data/krate_yanking_yank_max_version b/src/tests/http-data/krate_yanking_yank_max_version index 02229a9b90a..a17d947e69a 100644 --- a/src/tests/http-data/krate_yanking_yank_max_version +++ b/src/tests/http-data/krate_yanking_yank_max_version @@ -135,7 +135,7 @@ }, { "request": { - "uri": "http://alexcrichton-test.s3.amazonaws.com/index/fy/k_/fyk_max", + "uri": "http://alexcrichton-test.s3.amazonaws.com/fy/k_/fyk_max", "method": "PUT", "headers": [ [ @@ -202,7 +202,7 @@ }, { "request": { - "uri": "http://alexcrichton-test.s3.amazonaws.com/index/fy/k_/fyk_max", + "uri": "http://alexcrichton-test.s3.amazonaws.com/fy/k_/fyk_max", "method": "PUT", "headers": [ [ diff --git a/src/tests/http-data/krate_yanking_yank_records_an_audit_action b/src/tests/http-data/krate_yanking_yank_records_an_audit_action index c918c895bea..94ce979c544 100644 --- a/src/tests/http-data/krate_yanking_yank_records_an_audit_action +++ b/src/tests/http-data/krate_yanking_yank_records_an_audit_action @@ -68,7 +68,7 @@ }, { "request": { - "uri": "http://alexcrichton-test.s3.amazonaws.com/index/3/f/fyk", + "uri": "http://alexcrichton-test.s3.amazonaws.com/3/f/fyk", "method": "PUT", "headers": [ [ diff --git a/src/tests/http-data/krate_yanking_yank_works_as_intended b/src/tests/http-data/krate_yanking_yank_works_as_intended index 18dda3dcb5b..fb90b80d129 100644 --- a/src/tests/http-data/krate_yanking_yank_works_as_intended +++ b/src/tests/http-data/krate_yanking_yank_works_as_intended @@ -68,7 +68,7 @@ }, { "request": { - "uri": "http://alexcrichton-test.s3.amazonaws.com/index/3/f/fyk", + "uri": "http://alexcrichton-test.s3.amazonaws.com/3/f/fyk", "method": "PUT", "headers": [ [ diff --git a/src/tests/http-data/owners_new_crate_owner b/src/tests/http-data/owners_new_crate_owner index b572b693103..2061ec518bc 100644 --- a/src/tests/http-data/owners_new_crate_owner +++ b/src/tests/http-data/owners_new_crate_owner @@ -135,7 +135,7 @@ }, { "request": { - "uri": "http://alexcrichton-test.s3.amazonaws.com/index/fo/o_/foo_owner", + "uri": "http://alexcrichton-test.s3.amazonaws.com/fo/o_/foo_owner", "method": "PUT", "headers": [ [ @@ -202,7 +202,7 @@ }, { "request": { - "uri": "http://alexcrichton-test.s3.amazonaws.com/index/fo/o_/foo_owner", + "uri": "http://alexcrichton-test.s3.amazonaws.com/fo/o_/foo_owner", "method": "PUT", "headers": [ [ diff --git a/src/tests/http-data/team_publish_owned b/src/tests/http-data/team_publish_owned index 9715b81370d..5fcd76eadb4 100644 --- a/src/tests/http-data/team_publish_owned +++ b/src/tests/http-data/team_publish_owned @@ -580,7 +580,7 @@ }, { "request": { - "uri": "http://alexcrichton-test.s3.amazonaws.com/index/fo/o_/foo_team_owned", + "uri": "http://alexcrichton-test.s3.amazonaws.com/fo/o_/foo_team_owned", "method": "PUT", "headers": [ [ diff --git a/src/tests/http-data/version_version_size b/src/tests/http-data/version_version_size index eab386534ee..b4431db99b9 100644 --- a/src/tests/http-data/version_version_size +++ b/src/tests/http-data/version_version_size @@ -135,7 +135,7 @@ }, { "request": { - "uri": "http://alexcrichton-test.s3.amazonaws.com/index/fo/o_/foo_version_size", + "uri": "http://alexcrichton-test.s3.amazonaws.com/fo/o_/foo_version_size", "method": "PUT", "headers": [ [ @@ -202,7 +202,7 @@ }, { "request": { - "uri": "http://alexcrichton-test.s3.amazonaws.com/index/fo/o_/foo_version_size", + "uri": "http://alexcrichton-test.s3.amazonaws.com/fo/o_/foo_version_size", "method": "PUT", "headers": [ [ diff --git a/src/uploaders.rs b/src/uploaders.rs index a8901b34976..067a094092b 100644 --- a/src/uploaders.rs +++ b/src/uploaders.rs @@ -6,6 +6,7 @@ use crate::util::errors::{internal, AppResult}; use std::env; use std::fs::{self, File}; use std::io::{Cursor, SeekFrom}; +use std::path::PathBuf; use crate::models::Crate; @@ -88,8 +89,16 @@ impl Uploader { /// Returns the internal path of an uploaded crate's index file. fn index_path(name: &str) -> String { - let path = cargo_registry_index::Repository::relative_index_file_for_url(name); - format!("index/{}", path) + cargo_registry_index::Repository::relative_index_file_for_url(name) + } + + /// Returns the absolute path to the locally uploaded file. + fn local_uploads_path(path: &str, upload_bucket: UploadBucket) -> PathBuf { + let path = match upload_bucket { + UploadBucket::Index => PathBuf::from("index").join(path), + UploadBucket::Default => PathBuf::from(path), + }; + env::current_dir().unwrap().join("local_uploads").join(path) } /// Uploads a file using the configured uploader (either `S3`, `Local`). @@ -136,7 +145,7 @@ impl Uploader { Ok(Some(String::from(path))) } Uploader::Local => { - let filename = env::current_dir().unwrap().join("local_uploads").join(path); + let filename = Self::local_uploads_path(path, upload_bucket); let dir = filename.parent().unwrap(); fs::create_dir_all(dir)?; let mut file = File::create(&filename)?; @@ -164,7 +173,7 @@ impl Uploader { } } Uploader::Local => { - let filename = env::current_dir().unwrap().join("local_uploads").join(path); + let filename = Self::local_uploads_path(path, upload_bucket); std::fs::remove_file(&filename)?; } }