Skip to content

Commit 4887928

Browse files
committed
refactor: simplify api by moving url params creation to YtApiV3Endpoint
1 parent ca52fcd commit 4887928

File tree

3 files changed

+33
-26
lines changed

3 files changed

+33
-26
lines changed

lib/src/main/java/io/github/thoroldvix/api/YoutubeClient.java

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -33,25 +33,5 @@ public interface YoutubeClient {
3333
* @throws TranscriptRetrievalException If the request to YouTube fails.
3434
*/
3535
String get(YtApiV3Endpoint endpoint, Map<String, String> params) throws TranscriptRetrievalException;
36-
37-
38-
/**
39-
* Creates a string representation of the specified parameters.
40-
*
41-
* @param params A map of parameters to include in the request.
42-
*
43-
* @return A string representation of the specified parameters.
44-
*/
45-
default String createParamsString(Map<String, String> params) {
46-
StringBuilder paramString = new StringBuilder();
47-
48-
for (Map.Entry<String, String> entry : params.entrySet()) {
49-
String value = entry.getValue().replaceAll(" ", "%20");
50-
paramString.append(entry.getKey()).append("=").append(value).append("&");
51-
}
52-
53-
paramString.deleteCharAt(paramString.length() - 1);
54-
return paramString.toString();
55-
}
5636
}
5737

lib/src/main/java/io/github/thoroldvix/api/YtApiV3Endpoint.java

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
package io.github.thoroldvix.api;
22

3+
import java.util.Map;
4+
5+
36
/**
47
* The YouTube API V3 endpoints. Used by the {@link YoutubeClient}.
58
*/
@@ -17,10 +20,34 @@ public enum YtApiV3Endpoint {
1720
this.resource = resource;
1821
}
1922

23+
private static String createParamsString(Map<String, String> params) {
24+
StringBuilder paramString = new StringBuilder();
25+
26+
for (Map.Entry<String, String> entry : params.entrySet()) {
27+
String value = entry.getValue().replaceAll(" ", "%20");
28+
paramString.append(entry.getKey()).append("=").append(value).append("&");
29+
}
30+
31+
paramString.deleteCharAt(paramString.length() - 1);
32+
return paramString.toString();
33+
}
34+
35+
/**
36+
* @return The URL of the endpoint.
37+
*/
2038
public String url() {
2139
return url;
2240
}
2341

42+
/**
43+
* @param params A map of parameters to include in the request.
44+
*
45+
* @return The URL of the endpoint with the specified parameters.
46+
*/
47+
public String url(Map<String, String> params) {
48+
return url + "?" + createParamsString(params);
49+
}
50+
2451
@Override
2552
public String toString() {
2653
return resource;

lib/src/main/java/io/github/thoroldvix/internal/DefaultYoutubeClient.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,17 @@
11
package io.github.thoroldvix.internal;
22

3-
import io.github.thoroldvix.api.TranscriptRetrievalException;
4-
import io.github.thoroldvix.api.YoutubeClient;
5-
import io.github.thoroldvix.api.YtApiV3Endpoint;
6-
73
import java.io.IOException;
84
import java.net.URI;
95
import java.net.http.HttpClient;
106
import java.net.http.HttpRequest;
117
import java.net.http.HttpResponse;
128
import java.util.Map;
139

10+
import io.github.thoroldvix.api.TranscriptRetrievalException;
11+
import io.github.thoroldvix.api.YoutubeClient;
12+
import io.github.thoroldvix.api.YtApiV3Endpoint;
13+
14+
1415
/**
1516
* Default implementation of {@link YoutubeClient}.
1617
*/
@@ -54,10 +55,9 @@ public String get(String url, Map<String, String> headers) throws TranscriptRetr
5455

5556
@Override
5657
public String get(YtApiV3Endpoint endpoint, Map<String, String> params) throws TranscriptRetrievalException {
57-
String paramsString = createParamsString(params);
5858
String errorMessage = String.format("Request to YouTube '%s' endpoint failed.", endpoint);
5959
HttpRequest request = HttpRequest.newBuilder()
60-
.uri(URI.create(endpoint.url() + "?" + paramsString))
60+
.uri(URI.create(endpoint.url(params)))
6161
.build();
6262

6363
HttpResponse<String> response;

0 commit comments

Comments
 (0)