This commit is contained in:
parent
65e9dde8c9
commit
c939d2a936
3 changed files with 11 additions and 13 deletions
|
@ -330,13 +330,11 @@ impl Condition {
|
||||||
|
|
||||||
impl Redirect {
|
impl Redirect {
|
||||||
pub fn validate(&self) -> Result<(), Error> {
|
pub fn validate(&self) -> Result<(), Error> {
|
||||||
if self.replace_prefix.is_some() {
|
if self.replace_prefix.is_some() && self.replace_full.is_some() {
|
||||||
if self.replace_full.is_some() {
|
|
||||||
return Err(Error::bad_request(
|
return Err(Error::bad_request(
|
||||||
"Bad XML: both ReplaceKeyPrefixWith and ReplaceKeyWith are set",
|
"Bad XML: both ReplaceKeyPrefixWith and ReplaceKeyWith are set",
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
}
|
|
||||||
if let Some(ref protocol) = self.protocol {
|
if let Some(ref protocol) = self.protocol {
|
||||||
if protocol.0 != "http" && protocol.0 != "https" {
|
if protocol.0 != "http" && protocol.0 != "https" {
|
||||||
return Err(Error::bad_request("Bad XML: invalid protocol"));
|
return Err(Error::bad_request("Bad XML: invalid protocol"));
|
||||||
|
|
|
@ -90,21 +90,21 @@ mod v08 {
|
||||||
let mut res = String::new();
|
let mut res = String::new();
|
||||||
if let Some(hostname) = &self.hostname {
|
if let Some(hostname) = &self.hostname {
|
||||||
if let Some(protocol) = &self.protocol {
|
if let Some(protocol) = &self.protocol {
|
||||||
res.push_str(&protocol);
|
res.push_str(protocol);
|
||||||
res.push_str("://");
|
res.push_str("://");
|
||||||
} else {
|
} else {
|
||||||
res.push_str("//");
|
res.push_str("//");
|
||||||
}
|
}
|
||||||
res.push_str(&hostname);
|
res.push_str(hostname);
|
||||||
}
|
}
|
||||||
res.push('/');
|
res.push('/');
|
||||||
if let Some(replace_key_prefix) = &self.replace_key_prefix {
|
if let Some(replace_key_prefix) = &self.replace_key_prefix {
|
||||||
res.push_str(&replace_key_prefix);
|
res.push_str(replace_key_prefix);
|
||||||
if let Some(suffix) = suffix {
|
if let Some(suffix) = suffix {
|
||||||
res.push_str(suffix)
|
res.push_str(suffix)
|
||||||
}
|
}
|
||||||
} else if let Some(replace_key) = &self.replace_key {
|
} else if let Some(replace_key) = &self.replace_key {
|
||||||
res.push_str(&replace_key)
|
res.push_str(replace_key)
|
||||||
}
|
}
|
||||||
res
|
res
|
||||||
}
|
}
|
||||||
|
|
|
@ -476,8 +476,8 @@ impl RoutingResult {
|
||||||
/// which is also AWS S3 behavior.
|
/// which is also AWS S3 behavior.
|
||||||
///
|
///
|
||||||
/// Check: https://docs.aws.amazon.com/AmazonS3/latest/userguide/IndexDocumentSupport.html
|
/// Check: https://docs.aws.amazon.com/AmazonS3/latest/userguide/IndexDocumentSupport.html
|
||||||
fn path_to_keys<'a>(
|
fn path_to_keys(
|
||||||
path: &'a str,
|
path: &str,
|
||||||
index: &str,
|
index: &str,
|
||||||
routing_rules: &[RoutingRule],
|
routing_rules: &[RoutingRule],
|
||||||
) -> Result<RoutingResult, Error> {
|
) -> Result<RoutingResult, Error> {
|
||||||
|
@ -488,7 +488,7 @@ fn path_to_keys<'a>(
|
||||||
None => return Err(Error::BadRequest("Path must start with a / (slash)".into())),
|
None => return Err(Error::BadRequest("Path must start with a / (slash)".into())),
|
||||||
};
|
};
|
||||||
|
|
||||||
let is_bucket_root = base_key.len() == 0;
|
let is_bucket_root = base_key.is_empty();
|
||||||
let is_trailing_slash = path_utf8.ends_with("/");
|
let is_trailing_slash = path_utf8.ends_with("/");
|
||||||
|
|
||||||
let key = if is_bucket_root || is_trailing_slash {
|
let key = if is_bucket_root || is_trailing_slash {
|
||||||
|
|
Loading…
Reference in a new issue