feat: allow searching for the youtube page
diff --git a/oauth/core/src/main/java/org/apache/sling/samples/oauth_demo/YoutubeVideosModel.java b/oauth/core/src/main/java/org/apache/sling/samples/oauth_demo/YoutubeVideosModel.java
index f4178ac..22ffc75 100644
--- a/oauth/core/src/main/java/org/apache/sling/samples/oauth_demo/YoutubeVideosModel.java
+++ b/oauth/core/src/main/java/org/apache/sling/samples/oauth_demo/YoutubeVideosModel.java
@@ -29,4 +29,8 @@
public YoutubeSearchResponse getResponse() {
return (YoutubeSearchResponse) request.getAttribute("ytResponse");
}
+
+ public String getSearch() {
+ return request.getParameter("search");
+ }
}
diff --git a/oauth/core/src/main/java/org/apache/sling/samples/oauth_demo/impl/YoutubeHttpClient.java b/oauth/core/src/main/java/org/apache/sling/samples/oauth_demo/impl/YoutubeHttpClient.java
index 43e2789..fe153ce 100644
--- a/oauth/core/src/main/java/org/apache/sling/samples/oauth_demo/impl/YoutubeHttpClient.java
+++ b/oauth/core/src/main/java/org/apache/sling/samples/oauth_demo/impl/YoutubeHttpClient.java
@@ -18,10 +18,12 @@
import java.io.IOException;
import java.net.URI;
+import java.net.URLEncoder;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.http.HttpResponse.BodyHandlers;
+import java.nio.charset.StandardCharsets;
import org.apache.sling.samples.oauth_demo.YoutubeSearchResponse;
@@ -34,6 +36,7 @@
public YoutubeSearchResponse searchVideos(String query, String accessToken) throws IOException, InterruptedException {
try ( HttpClient client = HttpClient.newHttpClient() ) {
+ query = URLEncoder.encode(query.trim(), StandardCharsets.UTF_8);
HttpRequest searchRequest = HttpRequest.newBuilder()
.uri(URI.create(API_BASE + "/search?part=snippet&maxResults=20&q=" + query + "&type=video"))
.header("Authorization", "Bearer " + accessToken)
diff --git a/oauth/core/src/main/java/org/apache/sling/samples/oauth_demo/impl/YoutubeSearchServlet.java b/oauth/core/src/main/java/org/apache/sling/samples/oauth_demo/impl/YoutubeSearchServlet.java
index cec6692..beac6e4 100644
--- a/oauth/core/src/main/java/org/apache/sling/samples/oauth_demo/impl/YoutubeSearchServlet.java
+++ b/oauth/core/src/main/java/org/apache/sling/samples/oauth_demo/impl/YoutubeSearchServlet.java
@@ -78,25 +78,18 @@
OidcToken token) throws IOException, ServletException {
try {
- YoutubeHttpClient client = new YoutubeHttpClient();
- YoutubeSearchResponse youtubeResponse = client.searchVideos("adaptTo", token.getValue());
+ String search = request.getParameter("search");
+ if (search != null && !search.isBlank()) {
+ YoutubeHttpClient client = new YoutubeHttpClient();
+ YoutubeSearchResponse youtubeResponse = client.searchVideos(search, token.getValue());
+ request.setAttribute("ytResponse", youtubeResponse);
+ }
RequestDispatcherOptions opts = new RequestDispatcherOptions();
opts.setReplaceSelectors("show");
- request.setAttribute("ytResponse", youtubeResponse);
response.setContentType("text/html");
request.getRequestDispatcher(request.getResource(), opts).include(request, response);
-
-// response.setStatus(HttpServletResponse.SC_OK);
-// response.setContentType("text/html");
-// response.getWriter().write(String.format("<p>Got %s results out of total %s</p>", youtubeResponse.items().size(), youtubeResponse.pageInfo().totalResults()));
-// response.getWriter().write("<ul>");
-// for (Item item : youtubeResponse.items()) {
-// response.getWriter().write(String.format("<li><a href=\"https://www.youtube.com/watch?v=%s\">%s</a></li>",
-// item.id().videoId(), item.snippet().title()));
-// }
-// response.getWriter().write("</ul>");
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "Please retry later");
diff --git a/oauth/ui.apps/src/main/content/jcr_root/apps/oauth-demo/components/youtube-videos/show.html b/oauth/ui.apps/src/main/content/jcr_root/apps/oauth-demo/components/youtube-videos/show.html
index 57c4cf1..451da12 100644
--- a/oauth/ui.apps/src/main/content/jcr_root/apps/oauth-demo/components/youtube-videos/show.html
+++ b/oauth/ui.apps/src/main/content/jcr_root/apps/oauth-demo/components/youtube-videos/show.html
@@ -7,7 +7,12 @@
</head>
<body data-sly-use.youtube="org.apache.sling.samples.oauth_demo.YoutubeVideosModel">
<main>
- <h1>Search results</h1>
+ <h1>Youtube Videos</h1>
+ <form>
+ <label for="search">Search:</label>
+ <input type="text" id="search" name="search" value="${youtube.search}">
+ <button type="submit">Search</button>
+ </form>
<p>ERROR? ${youtube.response.error.message}</p>
<p>Got ${youtube.response.items.size} results of out total ${youtube.response.pageInfo.totalResults}</p>
<div data-sly-list.item="${youtube.response.items}"