pub trait Action {
fn headers(&self) -> Option<BTreeMap<&str, &str>>;
fn http_method(&self) -> Method;
fn query_pairs(&self) -> Option<BTreeMap<&str, &str>>;
fn path(&self) -> Option<Vec<&str>>;
fn sign(
&self,
s3: &S3,
hash_payload: &[u8],
md5: Option<&[u8]>,
content_length: Option<usize>
) -> Result<(Url, BTreeMap<String, String>)> { ... }
}