From 802defe063ae34a349eb0f59da1100ddb50ea22a Mon Sep 17 00:00:00 2001 From: Pinapelz Date: Sat, 15 Apr 2023 01:26:25 -0700 Subject: Implemented VideoSearch Post Request --- .../factory/VideoSearchResultConverterFactory.java | 51 ++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 src/main/java/com/pina/factory/VideoSearchResultConverterFactory.java (limited to 'src/main/java/com/pina/factory/VideoSearchResultConverterFactory.java') diff --git a/src/main/java/com/pina/factory/VideoSearchResultConverterFactory.java b/src/main/java/com/pina/factory/VideoSearchResultConverterFactory.java new file mode 100644 index 0000000..de47303 --- /dev/null +++ b/src/main/java/com/pina/factory/VideoSearchResultConverterFactory.java @@ -0,0 +1,51 @@ +package com.pina.factory; + +import com.pina.datatypes.Paginated; +import com.pina.datatypes.SimpleVideo; +import com.pina.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 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); + } + } +} -- cgit v1.2.3