fn canonical_request(
method: &str,
path: &str,
query: &[(String, String)],
headers: &[(&str, &str)],
body: &str,
) -> StringExpand description
The canonical request. headers are the headers the signature covers,
each name in lower case, in any order.