refactor(api): make SearchConverter a singleton

This commit is contained in:
Harsh Shandilya 2023-07-18 17:11:06 +05:30
parent cf3ca27966
commit bad5bf5457
2 changed files with 6 additions and 8 deletions

View file

@ -10,7 +10,6 @@ import dev.msfjarvis.claw.api.LobstersApi
import dev.msfjarvis.claw.model.LobstersPost import dev.msfjarvis.claw.model.LobstersPost
import dev.msfjarvis.claw.model.User import dev.msfjarvis.claw.model.User
import java.lang.reflect.Type import java.lang.reflect.Type
import javax.inject.Inject
import okhttp3.ResponseBody import okhttp3.ResponseBody
import org.jsoup.Jsoup import org.jsoup.Jsoup
import org.jsoup.nodes.Element import org.jsoup.nodes.Element
@ -18,7 +17,7 @@ import org.jsoup.select.Elements
import retrofit2.Converter import retrofit2.Converter
import retrofit2.Retrofit import retrofit2.Retrofit
class SearchConverter @Inject constructor() : Converter<ResponseBody, List<LobstersPost>> { object SearchConverter : Converter<ResponseBody, List<LobstersPost>> {
override fun convert(value: ResponseBody): List<LobstersPost> { override fun convert(value: ResponseBody): List<LobstersPost> {
val elements = val elements =
Jsoup.parse(value.string(), LobstersApi.BASE_URL).select("div.story_liner.h-entry") Jsoup.parse(value.string(), LobstersApi.BASE_URL).select("div.story_liner.h-entry")
@ -74,13 +73,13 @@ class SearchConverter @Inject constructor() : Converter<ResponseBody, List<Lobst
) )
} }
class Factory @Inject constructor(private val converter: SearchConverter) : Converter.Factory() { object Factory : Converter.Factory() {
override fun responseBodyConverter( override fun responseBodyConverter(
type: Type, type: Type,
annotations: Array<out Annotation>, annotations: Array<out Annotation>,
retrofit: Retrofit retrofit: Retrofit
): Converter<ResponseBody, List<LobstersPost>> { ): Converter<ResponseBody, List<LobstersPost>> {
return converter return SearchConverter
} }
} }
} }

View file

@ -20,10 +20,9 @@ class SearchApiWrapper(controller: EitherNetController<LobstersSearchApi>) {
init { init {
controller.enqueue(LobstersSearchApi::searchPosts) { controller.enqueue(LobstersSearchApi::searchPosts) {
success( success(
SearchConverter() SearchConverter.convert(
.convert( ResponseBody.create(MediaType.get("text/html"), getResource("search_chatgpt_page.html"))
ResponseBody.create(MediaType.get("text/html"), getResource("search_chatgpt_page.html")) )
)
) )
} }
} }