From 0b8e0db6a02dd917d0ea938ecc7bd547833baeba Mon Sep 17 00:00:00 2001 From: Luc Vachon Date: Thu, 13 Aug 2026 10:14:33 -0400 Subject: [PATCH 1/3] Added checks to ensure code only runs when supplied with proper parameters. Added an error message to handle invalid params instead of crashing. --- .../controllers/schedule/finder_api.ex | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/lib/dotcom_web/controllers/schedule/finder_api.ex b/lib/dotcom_web/controllers/schedule/finder_api.ex index 30244e91d9..327b772c3a 100644 --- a/lib/dotcom_web/controllers/schedule/finder_api.ex +++ b/lib/dotcom_web/controllers/schedule/finder_api.ex @@ -40,7 +40,16 @@ defmodule DotcomWeb.ScheduleController.FinderApi do # Leverage the JourneyList module to return a simplified set of trips @spec journeys(Plug.Conn.t(), map) :: Plug.Conn.t() - def journeys(conn, %{"stop" => stop_id, "date" => date} = params) do + def journeys( + conn, + %{ + "stop" => stop_id, + "date" => date, + "is_current" => is_current, + "id" => _id, + "direction" => _direction + } = params + ) do {:ok, user_selected_date} = Date.from_iso8601(date) {schedules, predictions} = load_from_repos(conn, params) @@ -52,7 +61,7 @@ defmodule DotcomWeb.ScheduleController.FinderApi do # matching the design spec architecturally better than the existing # Schedules-only and Predictions-only configuration for # ScheduleFinder. - today? = params["is_current"] == "true" + today? = is_current == "true" current_time = if today?, do: user_selected_date, else: nil journey_list_opts = [ @@ -68,6 +77,11 @@ defmodule DotcomWeb.ScheduleController.FinderApi do json(conn, journeys) end + def journeys(conn, _) do + DotcomWeb.ControllerHelpers.return_invalid_arguments_error(conn) + # Phoenix.Controller.text(conn, "Invalid parameters") + end + # Use alternative JourneyList constructor to only return trips with predictions @spec departures(Plug.Conn.t(), map) :: Plug.Conn.t() def departures(conn, %{"stop" => stop_id} = params) do From 6de0e14dbea0cc824a2ac3374194d337ec35cdc4 Mon Sep 17 00:00:00 2001 From: Luc Vachon Date: Thu, 13 Aug 2026 10:28:26 -0400 Subject: [PATCH 2/3] Code cleanup --- lib/dotcom_web/controllers/schedule/finder_api.ex | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lib/dotcom_web/controllers/schedule/finder_api.ex b/lib/dotcom_web/controllers/schedule/finder_api.ex index 327b772c3a..71bdd28c26 100644 --- a/lib/dotcom_web/controllers/schedule/finder_api.ex +++ b/lib/dotcom_web/controllers/schedule/finder_api.ex @@ -79,7 +79,6 @@ defmodule DotcomWeb.ScheduleController.FinderApi do def journeys(conn, _) do DotcomWeb.ControllerHelpers.return_invalid_arguments_error(conn) - # Phoenix.Controller.text(conn, "Invalid parameters") end # Use alternative JourneyList constructor to only return trips with predictions @@ -101,7 +100,7 @@ defmodule DotcomWeb.ScheduleController.FinderApi do end def departures(conn, _) do - ControllerHelpers.return_invalid_arguments_error(conn) + return_invalid_arguments_error(conn) end @spec get_trip_info(Plug.Conn.t(), Trip.id_t(), Route.t(), String.t(), String.t(), String.t()) :: From b2b37f1a9aacd31c19bab28d53f09e12e00d066a Mon Sep 17 00:00:00 2001 From: Luc Vachon Date: Thu, 13 Aug 2026 12:41:56 -0400 Subject: [PATCH 3/3] Code cleanup --- lib/dotcom_web/controllers/schedule/finder_api.ex | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/dotcom_web/controllers/schedule/finder_api.ex b/lib/dotcom_web/controllers/schedule/finder_api.ex index 71bdd28c26..27cc2d4635 100644 --- a/lib/dotcom_web/controllers/schedule/finder_api.ex +++ b/lib/dotcom_web/controllers/schedule/finder_api.ex @@ -78,7 +78,7 @@ defmodule DotcomWeb.ScheduleController.FinderApi do end def journeys(conn, _) do - DotcomWeb.ControllerHelpers.return_invalid_arguments_error(conn) + return_invalid_arguments_error(conn) end # Use alternative JourneyList constructor to only return trips with predictions @@ -184,7 +184,7 @@ defmodule DotcomWeb.ScheduleController.FinderApi do end def trip(conn, _) do - ControllerHelpers.return_invalid_arguments_error(conn) + return_invalid_arguments_error(conn) end # Use internal API to generate list of relevant schedules and predictions