diff --git a/src/Controller/SearchController.php b/src/Controller/SearchController.php index 9e94696..f81499b 100644 --- a/src/Controller/SearchController.php +++ b/src/Controller/SearchController.php @@ -40,40 +40,25 @@ class SearchController extends AbstractController } } - private static function getEmojiName(string $emoji): string - { - switch ($emoji) { - case "🍎": - return "apple"; - case "🍐": - return "pear"; - case "🍊": - return "orange"; - case "🍋": - return "lemon"; - case "🍌": - return "banana"; - case "🍉": - return "watermelon"; - case "🍇": - return "grape"; - case "🍓": - return "strawberry"; - case "🫐": - return "blueberry"; - case "🍈": - return "melon"; - case "🍒": - return "cherry"; - case "🍑": - return "peach"; - case "🍍": - return "pineapple"; - case "🥝": - return "kiwi"; - case "🥥": - return "coconut"; - } + private static function getEmojiName(string | null $emoji) : string | null { + return match ($emoji) { + "🍎" => "apple", + "🍐" => "pear", + "🍊" => "orange", + "🍋" => "lemon", + "🍌" => "banana", + "🍉" => "watermelon", + "🍇" => "grape", + "🍓" => "strawberry", + "🫐" => "blueberry", + "🍈" => "melon", + "🍒" => "cherry", + "🍑" => "peach", + "🍍" => "pineapple", + "🥝" => "kiwi", + "🥥" => "coconut", + default => null, + }; } @@ -116,25 +101,36 @@ class SearchController extends AbstractController { $page = $request->query->get('page'); $fruit = $request->query->get('fruit'); - $fruit_querry = $request->query->get('q') . " " . SearchController::getEmojiName($fruit); - $result = SearchController::makeRequest("GET", "search", [ - "q" => $fruit_querry, + $user_query = $request->query->get('q'); + + $fruit_emoji = SearchController::getEmojiName($fruit); + if ($fruit_emoji == null) { + // We do not support requests without a fruit or with an invalid one + // Redirect to the homepage in this case + return $this->redirect('/'); + } + + $fruit_query = $user_query . " " . $fruit_emoji; + $page_str = strval($page); + $response = SearchController::makeRequest("GET", "search", [ + "q" => $fruit_query, "type" => "release", - "page" => strval($page), + "page" => $page_str, "per_page" => "15", ]); - SearchController::addFruitToAlbums($result["results"], $fruit, $entityManager); + $results = $response["results"]; + SearchController::addFruitToAlbums($results, $fruit, $entityManager); return $this->render('search/search.html.twig', [ 'controller_name' => 'SearchController', - 'query' => $request->query->get('q'), - 'fruit_emoji' => $request->query->get('fruit'), + 'query' => $user_query, + 'fruit_emoji' => $fruit_emoji, 'fruit_name' => SearchController::getEmojiName($fruit), - 'page' => $request->query->get('page'), - "next_page" => $page < $result["pagination"]["pages"] ? strval($page + 1) : strval($page), - "previous_page" => $page > 1 ? strval($page - 1) : strval($page), - 'results' => $result["results"] + 'page' => $page, + "next_page" => $page < $response["pagination"]["pages"] ? strval($page + 1) : $page_str, + "previous_page" => $page > 1 ? strval($page - 1) : $page_str, + 'results' => $results ]); } }