diff --git a/src/api/k2v/api_server.rs b/src/api/k2v/api_server.rs
index 87e7b873..2e347088 100644
--- a/src/api/k2v/api_server.rs
+++ b/src/api/k2v/api_server.rs
@@ -1,10 +1,8 @@
use std::sync::Arc;
use async_trait::async_trait;
-use chrono::{DateTime, NaiveDateTime, Utc};
+
use futures::future::Future;
-use futures::prelude::*;
-use hyper::header;
use hyper::{Body, Method, Request, Response};
use opentelemetry::{trace::SpanRef, KeyValue};
@@ -13,14 +11,14 @@ use garage_table::util::*;
use garage_util::error::Error as GarageError;
use garage_model::garage::Garage;
-use garage_model::key_table::Key;
+
use crate::error::*;
use crate::generic_server::*;
-use crate::signature::compute_scope;
+
use crate::signature::payload::check_payload_signature;
use crate::signature::streaming::*;
-use crate::signature::LONG_DATETIME;
+
use crate::helpers::*;
use crate::k2v::router::{Endpoint};
@@ -59,22 +57,6 @@ impl ApiHandler for K2VApiServer {
type Endpoint = K2VApiEndpoint;
fn parse_endpoint(&self, req: &Request
) -> Result {
- let authority = req
- .headers()
- .get(header::HOST)
- .ok_or_bad_request("Host header required")?
- .to_str()?;
-
- let host = authority_to_host(authority)?;
-
- let bucket_name = self
- .garage
- .config
- .s3_api
- .root_domain
- .as_ref()
- .and_then(|root_domain| host_to_bucket(&host, root_domain));
-
let (endpoint, bucket_name) = Endpoint::from_request(req)?;
Ok(K2VApiEndpoint {
diff --git a/src/api/k2v/router.rs b/src/api/k2v/router.rs
index 50c01237..0a330785 100644
--- a/src/api/k2v/router.rs
+++ b/src/api/k2v/router.rs
@@ -2,8 +2,8 @@ use crate::error::*;
use std::borrow::Cow;
-use hyper::header::HeaderValue;
-use hyper::{HeaderMap, Method, Request};
+
+use hyper::{Method, Request};
use crate::router_macros::{router_match, generateQueryParameters};
use crate::helpers::Authorization;
diff --git a/src/api/s3/api_server.rs b/src/api/s3/api_server.rs
index cec755ba..0485737b 100644
--- a/src/api/s3/api_server.rs
+++ b/src/api/s3/api_server.rs
@@ -1,9 +1,8 @@
use std::sync::Arc;
use async_trait::async_trait;
-use chrono::{DateTime, NaiveDateTime, Utc};
+
use futures::future::Future;
-use futures::prelude::*;
use hyper::header;
use hyper::{Body, Method, Request, Response};
@@ -17,10 +16,10 @@ use garage_model::key_table::Key;
use crate::error::*;
use crate::generic_server::*;
-use crate::signature::compute_scope;
+
use crate::signature::payload::check_payload_signature;
use crate::signature::streaming::*;
-use crate::signature::LONG_DATETIME;
+
use crate::helpers::*;
use crate::s3::bucket::*;
diff --git a/src/api/signature/streaming.rs b/src/api/signature/streaming.rs
index 30fafa62..c2067623 100644
--- a/src/api/signature/streaming.rs
+++ b/src/api/signature/streaming.rs
@@ -4,7 +4,7 @@ use chrono::{DateTime, NaiveDateTime, Utc};
use futures::prelude::*;
use futures::task;
use hyper::body::Bytes;
-use hyper::{Body, Method, Request, Response};
+use hyper::{Body, Request};
use garage_model::key_table::Key;
use hmac::Mac;