aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/com/pina/Holodex.java
diff options
context:
space:
mode:
authorPinapelz <donaldshan1@outlook.com>2023-04-15 01:26:25 -0700
committerPinapelz <donaldshan1@outlook.com>2023-04-15 01:26:25 -0700
commit802defe063ae34a349eb0f59da1100ddb50ea22a (patch)
tree37d25107ec2abac76740df69544eadbe6882304e /src/main/java/com/pina/Holodex.java
parent5cc27f5560c05befdee8cbd6db24fc0eaab87cb3 (diff)
Implemented VideoSearch Post Request
Diffstat (limited to 'src/main/java/com/pina/Holodex.java')
-rw-r--r--src/main/java/com/pina/Holodex.java55
1 files changed, 47 insertions, 8 deletions
diff --git a/src/main/java/com/pina/Holodex.java b/src/main/java/com/pina/Holodex.java
index 9e7ef39..793e64f 100644
--- a/src/main/java/com/pina/Holodex.java
+++ b/src/main/java/com/pina/Holodex.java
@@ -1,21 +1,29 @@
package com.pina;
-import com.pina.datatypes.Channel;
-import com.pina.datatypes.SimpleVideo;
-import com.pina.datatypes.Video;
-import com.pina.query.ChannelQueryBuilder;
-import com.pina.query.VideoByVideoIdQueryBuilder;
-import com.pina.query.VideoQueryBuilder;
-import com.pina.query.VideosByChannelIDQueryBuilder;
+import com.google.gson.Gson;
+import com.pina.datatypes.*;
+import com.pina.query.*;
+import okhttp3.MediaType;
import okhttp3.OkHttpClient;
import okhttp3.Request;
+import okhttp3.RequestBody;
import retrofit2.Call;
import retrofit2.Response;
import retrofit2.Retrofit;
import retrofit2.converter.jackson.JacksonConverterFactory;
+import javax.xml.transform.Result;
import java.io.IOException;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
+import java.lang.reflect.Field;
+import java.util.concurrent.TimeUnit;
+
/**
* The class for interacting with the Holodex API
@@ -43,7 +51,9 @@ public class Holodex {
}
private void initializeHolodexService(String apiKey, String baseUrl){
- OkHttpClient.Builder httpClient = new OkHttpClient.Builder();
+ OkHttpClient.Builder httpClient = new OkHttpClient.Builder()
+ .writeTimeout(35, TimeUnit.SECONDS)
+ .readTimeout(35, TimeUnit.SECONDS);
httpClient.addInterceptor(chain -> {
Request original = chain.request();
Request request = original.newBuilder()
@@ -166,6 +176,34 @@ public class Holodex {
return executeCall(call);
}
+ public Object searchVideo(VideoSearchQueryBuilder query) throws HolodexException {
+ Map<String, Object> payload = toMap(query);
+ RequestBody body = RequestBody.create(MediaType.parse("application/json; charset=utf-8"),
+ new Gson().toJson(payload));
+ if(query.isPaginated()) {
+ Call<VideoSearchResult> call = service.postPaginatedVideoSearch(body);
+ return executeCall(call);
+ }
+ Call<List<SimpleVideo>> call = service.postVideoSearch(body);
+ return executeCall(call);
+
+ }
+
+ public static Map<String, Object> toMap(Object obj) throws HolodexException {
+ Map<String, Object> map = new HashMap<>();
+ Field[] fields = obj.getClass().getDeclaredFields();
+ for (Field field : fields) {
+ field.setAccessible(true);
+ try {
+ Object value = field.get(obj);
+ map.put(field.getName(), value);
+ } catch (IllegalAccessException e) {
+ throw new HolodexException("Failed to execute API call", e);
+ }
+ }
+ return map;
+ }
+
private <T> T executeCall(Call<T> call) throws HolodexException {
try {
@@ -180,4 +218,5 @@ public class Holodex {
throw new HolodexException("Failed to execute API call", e);
}
}
+
}
send patches to the email below
yukais@pinapelz.com
include the subject [PATCH repo_name]
pinapelz.com
homepage