use bytes::Bytes;
use http::{Method, Request, Uri};
use crate::{
auth::{self, Credentials},
error::Result,
};
pub(crate) fn build_signed(
method: Method, uri: Uri, body: Bytes, creds: &Credentials, region: &str,
) -> Result<Request<Bytes>> {
let content_length = body.len();
let mut req = Request::builder()
.method(method)
.uri(uri)
.header("content-length", content_length)
.body(body)?;
auth::sign_request(&mut req, creds, region, false)?;
Ok(req)
}
pub(crate) fn build_signed_unsigned_payload(
method: Method, uri: Uri, content_length: u64, creds: &Credentials, region: &str,
) -> Result<Request<Bytes>> {
let mut req = Request::builder()
.method(method)
.uri(uri)
.header("content-length", content_length)
.body(Bytes::new())?;
auth::sign_request(&mut req, creds, region, true)?;
Ok(req)
}