@@ -37,39 +37,43 @@ impl Uploader {
37
37
///
38
38
/// The function doesn't check for the existence of the file.
39
39
pub fn crate_location ( & self , crate_name : & str , version : & str ) -> String {
40
+ let version = version. replace ( '+' , "%2B" ) ;
41
+
40
42
match * self {
41
43
Uploader :: S3 {
42
44
ref bucket,
43
45
ref cdn,
44
46
..
45
47
} => {
46
- let path = Uploader :: crate_path ( crate_name, version) ;
48
+ let path = Uploader :: crate_path ( crate_name, & version) ;
47
49
match * cdn {
48
50
Some ( ref host) => format ! ( "https://{host}/{path}" ) ,
49
51
None => bucket. url ( & path) . unwrap ( ) ,
50
52
}
51
53
}
52
- Uploader :: Local => format ! ( "/{}" , Uploader :: crate_path( crate_name, version) ) ,
54
+ Uploader :: Local => format ! ( "/{}" , Uploader :: crate_path( crate_name, & version) ) ,
53
55
}
54
56
}
55
57
56
58
/// Returns the URL of an uploaded crate's version readme.
57
59
///
58
60
/// The function doesn't check for the existence of the file.
59
61
pub fn readme_location ( & self , crate_name : & str , version : & str ) -> String {
62
+ let version = version. replace ( '+' , "%2B" ) ;
63
+
60
64
match * self {
61
65
Uploader :: S3 {
62
66
ref bucket,
63
67
ref cdn,
64
68
..
65
69
} => {
66
- let path = Uploader :: readme_path ( crate_name, version) ;
70
+ let path = Uploader :: readme_path ( crate_name, & version) ;
67
71
match * cdn {
68
72
Some ( ref host) => format ! ( "https://{host}/{path}" ) ,
69
73
None => bucket. url ( & path) . unwrap ( ) ,
70
74
}
71
75
}
72
- Uploader :: Local => format ! ( "/{}" , Uploader :: readme_path( crate_name, version) ) ,
76
+ Uploader :: Local => format ! ( "/{}" , Uploader :: readme_path( crate_name, & version) ) ,
73
77
}
74
78
}
75
79
0 commit comments