aboutsummaryrefslogtreecommitdiff
path: root/src/api
diff options
context:
space:
mode:
Diffstat (limited to 'src/api')
-rw-r--r--src/api/admin/api_server.rs50
1 files changed, 29 insertions, 21 deletions
diff --git a/src/api/admin/api_server.rs b/src/api/admin/api_server.rs
index a115d732..58dd38d8 100644
--- a/src/api/admin/api_server.rs
+++ b/src/api/admin/api_server.rs
@@ -1,3 +1,4 @@
+use std::collections::HashMap;
use std::net::SocketAddr;
use std::sync::Arc;
@@ -81,29 +82,32 @@ impl AdminApiServer {
&self,
req: Request<Body>,
) -> Result<Response<Body>, Error> {
- let has_domain_header = req.headers().contains_key("domain");
-
- if !has_domain_header {
- return Err(Error::bad_request("No domain header found"));
+ let query_params: HashMap<String, String> = req
+ .uri()
+ .query()
+ .map(|v| {
+ url::form_urlencoded::parse(v.as_bytes())
+ .into_owned()
+ .collect()
+ })
+ .unwrap_or_else(HashMap::new);
+
+ let has_domain_key = query_params.contains_key("domain");
+
+ if !has_domain_key {
+ return Err(Error::bad_request("No domain query string found"));
}
- let domain = &req
- .headers()
+ let domain = query_params
.get("domain")
- .ok_or_internal_error("Could not parse domain header")?;
-
- let domain_string = String::from(
- domain
- .to_str()
- .ok_or_bad_request("Invalid characters found in domain header")?,
- );
+ .ok_or_internal_error("Could not parse domain query string")?;
let bucket_id = self
.garage
.bucket_helper()
- .resolve_global_bucket_name(&domain_string)
+ .resolve_global_bucket_name(&domain)
.await?
- .ok_or(HelperError::NoSuchBucket(domain_string))?;
+ .ok_or(HelperError::NoSuchBucket(domain.to_string()))?;
let bucket = self
.garage
@@ -115,12 +119,16 @@ impl AdminApiServer {
let bucket_website_config = bucket_state.website_config.get();
match bucket_website_config {
- Some(_v) => Ok(Response::builder()
- .status(StatusCode::OK)
- .body(Body::from("Bucket authorized for website hosting"))?),
- None => Err(Error::bad_request(
- "Bucket is not authorized for website hosting",
- )),
+ Some(_v) => {
+ Ok(Response::builder()
+ .status(StatusCode::OK)
+ .body(Body::from(format!(
+ "Bucket '{domain}' is authorized for website hosting"
+ )))?)
+ }
+ None => Err(Error::bad_request(format!(
+ "Bucket '{domain}' is not authorized for website hosting"
+ ))),
}
}