11package com.thoo.api.endpoints
22
3+ import com.google.gson.Gson
4+ import com.thoo.api.FortniteAPI
35import com.thoo.api.enums.Language
6+ import com.thoo.api.models.BaseModel
7+ import com.thoo.api.models.Cosmetic
48import com.thoo.api.models.CosmeticSearchProperties
59import com.thoo.api.services.CosmeticService
610import com.thoo.api.utils.send
11+ import com.thoo.api.utils.sendOkHttp
12+ import okhttp3.HttpUrl
13+ import okhttp3.OkHttpClient
14+ import okhttp3.Request
715import retrofit2.Retrofit
816
917@SuppressWarnings(" unused" )
1018class CosmeticEndpoints (
1119 retrofit : Retrofit ,
1220 clazz : Class <out CosmeticService >,
13- private val language : Language
21+ private val language : Language ,
22+ private val httpClient : OkHttpClient
1423): EndpointBase<CosmeticService>(retrofit, clazz) {
1524
1625 @JvmOverloads fun getCosmetics (language : Language = this.language) =
@@ -20,15 +29,53 @@ class CosmeticEndpoints(
2029 service.getNewCosmetics(language.code).send()
2130
2231 @JvmOverloads
23- fun searchCosmetic (language : Language = this.language, propertiesReceiver : CosmeticSearchProperties .() -> Unit ) {
32+ fun searchCosmetic (language : Language = this.language, propertiesReceiver : CosmeticSearchProperties .() -> Unit ): BaseModel < Cosmetic > {
2433 val properties = CosmeticSearchProperties ()
2534 propertiesReceiver.invoke(properties)
2635 val clazz = properties.javaClass
36+ val queries = hashMapOf<String , Any >()
2737 clazz.declaredFields.forEach {
2838 it.isAccessible = true
2939 val value = it.get(properties) ? : return @forEach
30- println ( it.name + " : " + value)
40+ queries[ it.name] = value
3141 }
42+ val urlBuilder = HttpUrl .Builder ()
43+ .scheme(" https" )
44+ .host(" fortnite-api.com" )
45+ .addPathSegments(" v2/cosmetics/br/search" )
46+ .addEncodedQueryParameter(" language" , language.code)
47+ queries.forEach { (k, v) ->
48+ urlBuilder.addEncodedQueryParameter(k, v.toString())
49+ }
50+ val request = Request .Builder ()
51+ .url(urlBuilder.build())
52+ .build()
53+ return request.sendOkHttp(httpClient)
54+ }
55+
56+ @JvmOverloads
57+ fun searchCosmetics (language : Language = this.language, propertiesReceiver : CosmeticSearchProperties .() -> Unit ): BaseModel <List <Cosmetic >> {
58+ val properties = CosmeticSearchProperties ()
59+ propertiesReceiver.invoke(properties)
60+ val clazz = properties.javaClass
61+ val queries = hashMapOf<String , Any >()
62+ clazz.declaredFields.forEach {
63+ it.isAccessible = true
64+ val value = it.get(properties) ? : return @forEach
65+ queries[it.name] = value
66+ }
67+ val urlBuilder = HttpUrl .Builder ()
68+ .scheme(" https" )
69+ .host(" fortnite-api.com" )
70+ .addPathSegments(" v2/cosmetics/br/search/all" )
71+ .addEncodedQueryParameter(" language" , language.code)
72+ queries.forEach { (k, v) ->
73+ urlBuilder.addEncodedQueryParameter(k, v.toString())
74+ }
75+ val request = Request .Builder ()
76+ .url(urlBuilder.build())
77+ .build()
78+ return request.sendOkHttp(httpClient)
3279 }
3380
3481}
0 commit comments