aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/com/pinapelz/factory/VideoSearchResultConverterFactory.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/pinapelz/factory/VideoSearchResultConverterFactory.java')
-rw-r--r--src/main/java/com/pinapelz/factory/VideoSearchResultConverterFactory.java51
1 files changed, 51 insertions, 0 deletions
diff --git a/src/main/java/com/pinapelz/factory/VideoSearchResultConverterFactory.java b/src/main/java/com/pinapelz/factory/VideoSearchResultConverterFactory.java
new file mode 100644
index 0000000..0ab27c4
--- /dev/null
+++ b/src/main/java/com/pinapelz/factory/VideoSearchResultConverterFactory.java
@@ -0,0 +1,51 @@
+package com.pinapelz.factory;
+
+import com.pinapelz.datatypes.Paginated;
+import com.pinapelz.datatypes.SimpleVideo;
+import com.pinapelz.datatypes.VideoSearchResult;
+import okhttp3.ResponseBody;
+import retrofit2.Converter;
+import retrofit2.Retrofit;
+
+import java.lang.annotation.Annotation;
+import java.lang.reflect.ParameterizedType;
+import java.lang.reflect.Type;
+import java.util.List;
+
+public class VideoSearchResultConverterFactory extends Converter.Factory {
+
+ public static VideoSearchResultConverterFactory create() {
+ return new VideoSearchResultConverterFactory();
+ }
+
+ @Override
+ public Converter<ResponseBody, ?> responseBodyConverter(Type type, Annotation[] annotations, Retrofit retrofit) {
+ boolean isPaginated = false;
+ for (Annotation annotation : annotations) {
+ if (annotation instanceof Paginated) {
+ isPaginated = ((Paginated) annotation).value();
+ }
+ }
+ if (isPaginated) {
+ Type listType = new ParameterizedType() {
+ @Override
+ public Type[] getActualTypeArguments() {
+ return new Type[]{VideoSearchResult.class};
+ }
+
+ @Override
+ public Type getRawType() {
+ return List.class;
+ }
+
+ @Override
+ public Type getOwnerType() {
+ return null;
+ }
+ };
+ return retrofit.nextResponseBodyConverter(this, listType, annotations);
+ } else {
+ return retrofit.nextResponseBodyConverter(this, SimpleVideo.class, annotations);
+ }
+ }
+}
send patches to the email below
yukais@pinapelz.com
include the subject [PATCH repo_name]
pinapelz.com
homepage