@@ -20,6 +20,7 @@ pub enum Uploader {
20
20
/// For test usage with a proxy.
21
21
S3 {
22
22
bucket : s3:: Bucket ,
23
+ cdn : Option < String > ,
23
24
proxy : Option < String > ,
24
25
} ,
25
26
@@ -45,11 +46,14 @@ impl Uploader {
45
46
/// It returns `None` if the current `Uploader` is `NoOp`.
46
47
pub fn crate_location ( & self , crate_name : & str , version : & str ) -> Option < String > {
47
48
match * self {
48
- Uploader :: S3 { ref bucket, .. } => Some ( format ! (
49
- "https://{}/{}" ,
50
- bucket. host( ) ,
51
- Uploader :: crate_path( crate_name, version)
52
- ) ) ,
49
+ Uploader :: S3 { ref bucket, ref cdn, .. } => {
50
+ let host = match * cdn {
51
+ Some ( ref s) => s. clone ( ) ,
52
+ None => bucket. host ( ) ,
53
+ } ;
54
+ let path = Uploader :: crate_path ( crate_name, version) ;
55
+ Some ( format ! ( "https://{}/{}" , host, path) )
56
+ }
53
57
Uploader :: Local => Some ( format ! ( "/{}" , Uploader :: crate_path( crate_name, version) ) ) ,
54
58
Uploader :: NoOp => None ,
55
59
}
@@ -61,11 +65,14 @@ impl Uploader {
61
65
/// It returns `None` if the current `Uploader` is `NoOp`.
62
66
pub fn readme_location ( & self , crate_name : & str , version : & str ) -> Option < String > {
63
67
match * self {
64
- Uploader :: S3 { ref bucket, .. } => Some ( format ! (
65
- "https://{}/{}" ,
66
- bucket. host( ) ,
67
- Uploader :: readme_path( crate_name, version)
68
- ) ) ,
68
+ Uploader :: S3 { ref bucket, .. } => {
69
+ let host = match * cdn {
70
+ Some ( ref s) => s. clone ( ) ,
71
+ None => bucket. host ( ) ,
72
+ } ;
73
+ let path = Uploader :: readme_path ( crate_name, version) ;
74
+ Some ( format ! ( "https://{}/{}" , host, path) )
75
+ }
69
76
Uploader :: Local => Some ( format ! ( "/{}" , Uploader :: readme_path( crate_name, version) ) ) ,
70
77
Uploader :: NoOp => None ,
71
78
}
0 commit comments