11package com.thoo.api.endpoints
22
3+ import com.google.gson.Gson
4+ import com.google.gson.reflect.TypeToken
35import com.thoo.api.enums.Language
6+ import com.thoo.api.models.BaseModel
7+ import com.thoo.api.models.Cosmetic
48import com.thoo.api.services.CosmeticService
9+ import com.thoo.api.utils.QueryBuilder
510import com.thoo.api.utils.send
11+ import okhttp3.OkHttpClient
12+ import okhttp3.Request
613import retrofit2.Retrofit
714
8- class CosmeticEndpoint (retrofit : Retrofit , private val defaultLang : Language ) :
15+ class CosmeticEndpoint (retrofit : Retrofit , private val client : OkHttpClient , private val defaultLang : Language ) :
916 Endpoint <CosmeticService >(retrofit, CosmeticService ::class .java) {
1017
18+ private val gson = Gson ()
19+
1120 @JvmOverloads fun getCosmetics (language : Language = defaultLang) = service.cosmetics(language.code).send()
1221 @JvmOverloads fun getCosmeticByID (id : String , language : Language = defaultLang) = service.cosmeticByID(id, language.code).send()
1322 @JvmOverloads fun getCosmeticsByID (vararg ids : String , language : Language = defaultLang) = service.cosmeticsByID(language.code, * ids).send()
1423
24+ @JvmOverloads
25+ fun searchCosmetic (query : QueryBuilder , language : Language = defaultLang): BaseModel <Cosmetic > {
26+ var url = " https://fortnite-api.com/v2/cosmetics/br/search"
27+ for (field in query::class .java.declaredFields){
28+ field.isAccessible = true
29+ val value = field.get(query)
30+ if (value != null ) url + = " ?${field.name} =$value "
31+ }
32+ println (url)
33+ val requestBuilder = Request .Builder ().url(url)
34+ val type = object : TypeToken <BaseModel <Cosmetic >>(){}.type
35+ return gson.fromJson<BaseModel <Cosmetic >>(client.newCall(requestBuilder.build()).execute().body?.string(), type)
36+ }
37+
38+ @JvmOverloads
39+ fun searchAllCosmetic (query : QueryBuilder , language : Language = defaultLang): BaseModel <Array <Cosmetic >> {
40+ var url = " https://fortnite-api.com/v2/cosmetics/br/search/all"
41+ for (field in query::class .java.declaredFields){
42+ field.isAccessible = true
43+ val value = field.get(query)
44+ if (value != null ) url + = " ?${field.name} =$value "
45+ }
46+ println (url)
47+ val requestBuilder = Request .Builder ().url(url)
48+ val type = object : TypeToken <BaseModel <Cosmetic >>(){}.type
49+ return gson.fromJson<BaseModel <Array <Cosmetic >>>(client.newCall(requestBuilder.build()).execute().body?.string(), type)
50+ }
51+
1552}
0 commit comments