diff options
author | Alex Auvolat <lx@deuxfleurs.fr> | 2025-02-01 19:35:00 +0100 |
---|---|---|
committer | Alex Auvolat <lx@deuxfleurs.fr> | 2025-02-03 18:54:51 +0100 |
commit | 97be7b38fa3bd3172895f6ab44157e5236d65cd6 (patch) | |
tree | 2da7fce4bc111a8e193a4307ce1ba8a34faf4412 | |
parent | 6a1079c4129157ae6c6e2a94b10d9c2b8f91c5b6 (diff) | |
download | garage-97be7b38fa3bd3172895f6ab44157e5236d65cd6.tar.gz garage-97be7b38fa3bd3172895f6ab44157e5236d65cd6.zip |
admin api: reorder things
-rw-r--r-- | src/api/admin/api_server.rs | 66 |
1 files changed, 32 insertions, 34 deletions
diff --git a/src/api/admin/api_server.rs b/src/api/admin/api_server.rs index ecc538e4..1ab81be3 100644 --- a/src/api/admin/api_server.rs +++ b/src/api/admin/api_server.rs @@ -110,8 +110,6 @@ pub enum HttpEndpoint { New(String), } -struct ArcAdminApiServer(Arc<AdminApiServer>); - impl AdminApiServer { pub fn new( garage: Arc<Garage>, @@ -146,39 +144,7 @@ impl AdminApiServer { .run_server(bind_addr, Some(0o220), must_exit) .await } -} - -#[async_trait] -impl ApiHandler for ArcAdminApiServer { - const API_NAME: &'static str = "admin"; - const API_NAME_DISPLAY: &'static str = "Admin"; - - type Endpoint = HttpEndpoint; - type Error = Error; - - fn parse_endpoint(&self, req: &Request<IncomingBody>) -> Result<HttpEndpoint, Error> { - if req.uri().path().starts_with("/v0/") { - let endpoint_v0 = router_v0::Endpoint::from_request(req)?; - let endpoint_v1 = router_v1::Endpoint::from_v0(endpoint_v0)?; - Ok(HttpEndpoint::Old(endpoint_v1)) - } else if req.uri().path().starts_with("/v1/") { - let endpoint_v1 = router_v1::Endpoint::from_request(req)?; - Ok(HttpEndpoint::Old(endpoint_v1)) - } else { - Ok(HttpEndpoint::New(req.uri().path().to_string())) - } - } - - async fn handle( - &self, - req: Request<IncomingBody>, - endpoint: HttpEndpoint, - ) -> Result<Response<ResBody>, Error> { - self.0.handle_http_api(req, endpoint).await - } -} -impl AdminApiServer { async fn handle_http_api( &self, req: Request<IncomingBody>, @@ -228,6 +194,38 @@ impl AdminApiServer { } } +struct ArcAdminApiServer(Arc<AdminApiServer>); + +#[async_trait] +impl ApiHandler for ArcAdminApiServer { + const API_NAME: &'static str = "admin"; + const API_NAME_DISPLAY: &'static str = "Admin"; + + type Endpoint = HttpEndpoint; + type Error = Error; + + fn parse_endpoint(&self, req: &Request<IncomingBody>) -> Result<HttpEndpoint, Error> { + if req.uri().path().starts_with("/v0/") { + let endpoint_v0 = router_v0::Endpoint::from_request(req)?; + let endpoint_v1 = router_v1::Endpoint::from_v0(endpoint_v0)?; + Ok(HttpEndpoint::Old(endpoint_v1)) + } else if req.uri().path().starts_with("/v1/") { + let endpoint_v1 = router_v1::Endpoint::from_request(req)?; + Ok(HttpEndpoint::Old(endpoint_v1)) + } else { + Ok(HttpEndpoint::New(req.uri().path().to_string())) + } + } + + async fn handle( + &self, + req: Request<IncomingBody>, + endpoint: HttpEndpoint, + ) -> Result<Response<ResBody>, Error> { + self.0.handle_http_api(req, endpoint).await + } +} + impl ApiEndpoint for HttpEndpoint { fn name(&self) -> Cow<'static, str> { match self { |