use url::Url;
use aws::common::region::Region;
#[allow(dead_code)]
#[derive(Debug, Clone)]
pub struct Endpoint {
pub region: Region,
pub signature: String,
pub endpoint: Option<Url>,
pub proxy: Option<Url>
}
impl Endpoint {
pub fn new<S>(region: Region, signature: S, endpoint: Option<Url>, proxy: Option<Url>)
-> Self where S:Into<String> {
Endpoint{
region: region,
signature: signature.into(),
endpoint: default_endpoint(region, endpoint),
proxy: proxy }
}
pub fn hostname(&self) -> Option<String> {
match self.endpoint {
None => None,
Some(ref url) => Some(url.host_str().unwrap().to_string()),
}
}
}
fn default_endpoint(region: Region, endpoint: Option<Url>) -> Option<Url> {
let final_endpoint: Url;
match endpoint {
Some(url) => final_endpoint = url,
None => {
let endpoint: String = match region {
Region::UsEast1 => "https://s3.amazonaws.com".to_string(),
Region::CnNorth1 => format!("https://s3.{}.amazonaws.com.cn", region),
_ => format!("https://s3.amazonaws.com"),
};
final_endpoint = Url::parse(&endpoint).unwrap();
}
};
Some(final_endpoint)
}