diff --git a/lib/src/main/java/io/github/thoroldvix/api/YoutubeClient.java b/lib/src/main/java/io/github/thoroldvix/api/YoutubeClient.java index 317f8d1..7af3121 100644 --- a/lib/src/main/java/io/github/thoroldvix/api/YoutubeClient.java +++ b/lib/src/main/java/io/github/thoroldvix/api/YoutubeClient.java @@ -33,25 +33,5 @@ public interface YoutubeClient { * @throws TranscriptRetrievalException If the request to YouTube fails. */ String get(YtApiV3Endpoint endpoint, Map params) throws TranscriptRetrievalException; - - - /** - * Creates a string representation of the specified parameters. - * - * @param params A map of parameters to include in the request. - * - * @return A string representation of the specified parameters. - */ - default String createParamsString(Map params) { - StringBuilder paramString = new StringBuilder(); - - for (Map.Entry entry : params.entrySet()) { - String value = entry.getValue().replaceAll(" ", "%20"); - paramString.append(entry.getKey()).append("=").append(value).append("&"); - } - - paramString.deleteCharAt(paramString.length() - 1); - return paramString.toString(); - } } diff --git a/lib/src/main/java/io/github/thoroldvix/api/YtApiV3Endpoint.java b/lib/src/main/java/io/github/thoroldvix/api/YtApiV3Endpoint.java index bd2273e..7135501 100644 --- a/lib/src/main/java/io/github/thoroldvix/api/YtApiV3Endpoint.java +++ b/lib/src/main/java/io/github/thoroldvix/api/YtApiV3Endpoint.java @@ -1,5 +1,8 @@ package io.github.thoroldvix.api; +import java.util.Map; + + /** * The YouTube API V3 endpoints. Used by the {@link YoutubeClient}. */ @@ -17,10 +20,34 @@ public enum YtApiV3Endpoint { this.resource = resource; } + private static String createParamsString(Map params) { + StringBuilder paramString = new StringBuilder(); + + for (Map.Entry entry : params.entrySet()) { + String value = entry.getValue().replaceAll(" ", "%20"); + paramString.append(entry.getKey()).append("=").append(value).append("&"); + } + + paramString.deleteCharAt(paramString.length() - 1); + return paramString.toString(); + } + + /** + * @return The URL of the endpoint. + */ public String url() { return url; } + /** + * @param params A map of parameters to include in the request. + * + * @return The URL of the endpoint with the specified parameters. + */ + public String url(Map params) { + return url + "?" + createParamsString(params); + } + @Override public String toString() { return resource; diff --git a/lib/src/main/java/io/github/thoroldvix/internal/DefaultYoutubeClient.java b/lib/src/main/java/io/github/thoroldvix/internal/DefaultYoutubeClient.java index 4bf6745..999cb1a 100644 --- a/lib/src/main/java/io/github/thoroldvix/internal/DefaultYoutubeClient.java +++ b/lib/src/main/java/io/github/thoroldvix/internal/DefaultYoutubeClient.java @@ -1,9 +1,5 @@ package io.github.thoroldvix.internal; -import io.github.thoroldvix.api.TranscriptRetrievalException; -import io.github.thoroldvix.api.YoutubeClient; -import io.github.thoroldvix.api.YtApiV3Endpoint; - import java.io.IOException; import java.net.URI; import java.net.http.HttpClient; @@ -11,6 +7,11 @@ import java.net.http.HttpResponse; import java.util.Map; +import io.github.thoroldvix.api.TranscriptRetrievalException; +import io.github.thoroldvix.api.YoutubeClient; +import io.github.thoroldvix.api.YtApiV3Endpoint; + + /** * Default implementation of {@link YoutubeClient}. */ @@ -54,10 +55,9 @@ public String get(String url, Map headers) throws TranscriptRetr @Override public String get(YtApiV3Endpoint endpoint, Map params) throws TranscriptRetrievalException { - String paramsString = createParamsString(params); String errorMessage = String.format("Request to YouTube '%s' endpoint failed.", endpoint); HttpRequest request = HttpRequest.newBuilder() - .uri(URI.create(endpoint.url() + "?" + paramsString)) + .uri(URI.create(endpoint.url(params))) .build(); HttpResponse response;