Skip to content

Commit 02f9a34

Browse files
committed
fixup internal routes
1 parent 16c38ec commit 02f9a34

File tree

4 files changed

+12
-10
lines changed

4 files changed

+12
-10
lines changed

runtimes/core/src/api/call.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,10 @@ impl ServiceRegistry {
9696
})
9797
}
9898

99+
pub fn service_names(&self) -> Vec<&EncoreName> {
100+
self.base_urls.keys().collect()
101+
}
102+
99103
pub fn service_base_url<Q>(&self, service_name: &Q) -> Option<&String>
100104
where
101105
EncoreName: Borrow<Q>,

runtimes/core/src/api/gateway/mod.rs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ use crate::api::paths::PathSet;
3030
use crate::api::reqauth::caller::Caller;
3131
use crate::api::reqauth::platform;
3232
use crate::api::reqauth::{svcauth, CallMeta};
33-
use crate::encore::runtime::v1::ServiceDiscovery;
3433
use crate::{api, model, EncoreName};
3534

3635
use super::auth::InboundRequest;
@@ -79,14 +78,14 @@ pub struct Gateway {
7978
impl Gateway {
8079
pub fn new(
8180
name: EncoreName,
82-
service_discovery: &ServiceDiscovery,
81+
service_registry: Arc<ServiceRegistry>,
8382
service_routes: PathSet<EncoreName, Arc<api::Endpoint>>,
8483
auth_handler: Option<auth::Authenticator>,
8584
cors_config: CorsHeadersConfig,
8685
) -> anyhow::Result<Self> {
8786
let router = service_routes.try_into()?;
8887

89-
let services = service_discovery.services.keys().cloned().collect();
88+
let services = service_registry.service_names();
9089
let internal_router = Router::new_internal(services)?;
9190

9291
Ok(Gateway {
@@ -295,7 +294,9 @@ impl ProxyHttp for GatewayServer {
295294
.internal_router
296295
.route_to_service(method, path)?;
297296

298-
if let Some(new_path) = upstream_path.strip_prefix(&*target.service_name) {
297+
if let Some(new_path) =
298+
upstream_path.strip_prefix(&format!("/{}", target.service_name))
299+
{
299300
upstream_path = new_path;
300301
target
301302
} else {

runtimes/core/src/api/gateway/router.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,12 @@ impl Router {
1818
Router { main, fallback }
1919
}
2020

21-
pub fn new_internal(services: Vec<String>) -> anyhow::Result<Self> {
21+
pub fn new_internal(services: Vec<&EncoreName>) -> anyhow::Result<Self> {
2222
let mut router = Router::new();
2323

2424
for service in services {
2525
let target = Some(Target {
26-
service_name: service.clone().into(),
26+
service_name: service.clone(),
2727
requires_auth: false,
2828
});
2929

runtimes/core/src/api/manager.rs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,6 @@ impl ManagerConfig<'_> {
170170
let gw = build_gateway(
171171
self.meta,
172172
gw_cfg,
173-
&self.service_discovery,
174173
service_registry.clone(),
175174
endpoints.clone(),
176175
routes,
@@ -241,11 +240,9 @@ impl Pather for RoutePerService {
241240
}
242241
}
243242

244-
#[allow(clippy::too_many_arguments)]
245243
fn build_gateway(
246244
meta: &meta::Data,
247245
gw_cfg: &runtime::Gateway,
248-
service_discovery: &runtime::ServiceDiscovery,
249246
service_registry: Arc<ServiceRegistry>,
250247
endpoints: Arc<HashMap<EndpointName, Arc<Endpoint>>>,
251248
routes: PathSet<EncoreName, Arc<Endpoint>>,
@@ -280,7 +277,7 @@ fn build_gateway(
280277

281278
Gateway::new(
282279
gw_cfg.encore_name.clone().into(),
283-
service_discovery,
280+
service_registry.clone(),
284281
routes,
285282
auth_handler,
286283
cors_config,

0 commit comments

Comments
 (0)