diff --git a/src/main/java/me/kavin/piped/ServerLauncher.java b/src/main/java/me/kavin/piped/ServerLauncher.java index 32b9546..8128673 100644 --- a/src/main/java/me/kavin/piped/ServerLauncher.java +++ b/src/main/java/me/kavin/piped/ServerLauncher.java @@ -145,6 +145,7 @@ public class ServerLauncher extends MultithreadedHttpServerLauncher { } catch (Exception e) { return getErrorResponse(e, request.getPath()); } + // TODO: Replace with opensearch, below, for caching reasons. })).map(GET, "/suggestions", AsyncServlet.ofBlocking(executor, request -> { try { return getJsonResponse(ResponseHelper.suggestionsResponse(request.getQueryParameter("query")), @@ -152,6 +153,14 @@ public class ServerLauncher extends MultithreadedHttpServerLauncher { } catch (Exception e) { return getErrorResponse(e, request.getPath()); } + })).map(GET, "/opensearch/suggestions", AsyncServlet.ofBlocking(executor, request -> { + try { + return getJsonResponse( + ResponseHelper.opensearchSuggestionsResponse(request.getQueryParameter("query")), + "public, max-age=600"); + } catch (Exception e) { + return getErrorResponse(e, request.getPath()); + } })).map(GET, "/search", AsyncServlet.ofBlocking(executor, request -> { try { return getJsonResponse(ResponseHelper.searchResponse(request.getQueryParameter("q"), diff --git a/src/main/java/me/kavin/piped/utils/ResponseHelper.java b/src/main/java/me/kavin/piped/utils/ResponseHelper.java index bc3ab4e..b4b6752 100644 --- a/src/main/java/me/kavin/piped/utils/ResponseHelper.java +++ b/src/main/java/me/kavin/piped/utils/ResponseHelper.java @@ -382,6 +382,14 @@ public class ResponseHelper { } + public static final byte[] opensearchSuggestionsResponse(String query) + throws JsonProcessingException, IOException, ExtractionException { + + return Constants.mapper.writeValueAsBytes( + Arrays.asList(query, YOUTUBE_SERVICE.getSuggestionExtractor().suggestionList(query))); + + } + public static final byte[] searchResponse(String q, String filter) throws IOException, ExtractionException, InterruptedException {