diff --git a/engine/packages/api-peer/src/actors/list.rs b/engine/packages/api-peer/src/actors/list.rs index cd3cf9cecc..f9147570b2 100644 --- a/engine/packages/api-peer/src/actors/list.rs +++ b/engine/packages/api-peer/src/actors/list.rs @@ -1,5 +1,5 @@ use anyhow::{Result, bail}; -use rivet_api_builder::{ApiBadRequest, ApiCtx}; +use rivet_api_builder::ApiCtx; use rivet_api_types::{actors::list::*, pagination::Pagination}; #[utoipa::path( @@ -20,17 +20,9 @@ pub async fn list(ctx: ApiCtx, _path: (), query: ListQuery) -> Result().map_err(|e| { - ApiBadRequest { - reason: format!("invalid id in `actor_ids` query: {e}"), - } - .build() - }) - }) - .collect::>>() + .filter_map(|s| s.trim().parse::().ok()) + .collect::>() }) - .transpose()? .unwrap_or_default(), ] .concat(); diff --git a/engine/packages/api-public/src/actors/list.rs b/engine/packages/api-public/src/actors/list.rs index 6499aceb1f..b9b063c14b 100644 --- a/engine/packages/api-public/src/actors/list.rs +++ b/engine/packages/api-public/src/actors/list.rs @@ -1,7 +1,7 @@ use anyhow::Result; use axum::response::{IntoResponse, Response}; use rivet_api_builder::{ - ApiBadRequest, ApiError, + ApiError, extract::{Extension, Json, Query}, }; use rivet_api_types::{actors::list::*, pagination::Pagination}; @@ -63,17 +63,9 @@ async fn list_inner(ctx: ApiCtx, query: ListQuery) -> Result { .as_ref() .map(|x| { x.split(',') - .map(|s| { - s.trim().parse::().map_err(|e| { - ApiBadRequest { - reason: format!("invalid id in `actor_ids` query: {e}"), - } - .build() - }) - }) - .collect::>>() + .filter_map(|s| s.trim().parse::().ok()) + .collect::>() }) - .transpose()? .unwrap_or_default(), ] .concat(); diff --git a/engine/packages/engine/tests/envoy/api_actors_list.rs b/engine/packages/engine/tests/envoy/api_actors_list.rs index f73d2e3d0c..ec04a46681 100644 --- a/engine/packages/engine/tests/envoy/api_actors_list.rs +++ b/engine/packages/engine/tests/envoy/api_actors_list.rs @@ -1055,7 +1055,6 @@ fn list_default_limit_100() { // Broken legacy Pegboard Runner coverage: full `runner::` sweep times out with // `test timed out: Elapsed(())`. #[test] -#[ignore = "API rejects mixed-validity actor_ids instead of filtering"] fn list_with_invalid_actor_id_format_in_comma_list() { common::run(common::TestOpts::new(1).with_timeout(30), |ctx| async move { let (namespace, _, _runner) =