67 lines
1.9 KiB
Kotlin
67 lines
1.9 KiB
Kotlin
|
package io.xdrm.lebonprix.api
|
||
|
|
||
|
import android.app.Activity
|
||
|
import android.app.AlertDialog
|
||
|
import android.app.Dialog
|
||
|
import android.content.Context
|
||
|
import android.content.DialogInterface
|
||
|
import android.graphics.Color
|
||
|
import android.support.v4.content.res.ResourcesCompat
|
||
|
import android.util.Log
|
||
|
import android.widget.ImageView
|
||
|
import android.widget.TextView
|
||
|
import android.widget.Toast
|
||
|
import io.xdrm.lebonprix.HomeActivity
|
||
|
import io.xdrm.lebonprix.R
|
||
|
import io.xdrm.lebonprix.anim.UnderlineAnimation
|
||
|
import io.xdrm.lebonprix.extensions.await
|
||
|
import kotlinx.android.synthetic.main.activity_home.*
|
||
|
import kotlinx.coroutines.CancellationException
|
||
|
import kotlinx.coroutines.Dispatchers
|
||
|
import kotlinx.coroutines.GlobalScope
|
||
|
import kotlinx.coroutines.launch
|
||
|
import okhttp3.OkHttpClient
|
||
|
import okhttp3.Request
|
||
|
import org.json.JSONArray
|
||
|
import java.net.URLEncoder
|
||
|
|
||
|
class CategoryFetcher(
|
||
|
var act: Activity,
|
||
|
val anim_target: ImageView,
|
||
|
val anim: UnderlineAnimation,
|
||
|
val httpClient: OkHttpClient
|
||
|
) {
|
||
|
|
||
|
|
||
|
suspend fun fetch(keywords: String) : JSONArray {
|
||
|
if( keywords.isEmpty() )
|
||
|
return JSONArray("[]")
|
||
|
|
||
|
GlobalScope.launch(Dispatchers.Main){ anim.animate(0F,0.5F).during(500).start() }
|
||
|
|
||
|
// 1. Prepare URL
|
||
|
val url = "https://www.lebonprix.info/api/categorizer?q=${ URLEncoder.encode(keywords, "UTF-8") }"
|
||
|
Log.i("API-Request", url)
|
||
|
|
||
|
// 2. Get response
|
||
|
return try{
|
||
|
|
||
|
httpClient.newCall( Request.Builder().url(url).build() )
|
||
|
.await()
|
||
|
.body()
|
||
|
?.string()
|
||
|
.let{ raw -> JSONArray(raw) }
|
||
|
|
||
|
}catch(e: Exception){
|
||
|
if( e !is CancellationException) {
|
||
|
act.runOnUiThread {
|
||
|
Toast.makeText(act.applicationContext, "Erreur: impossible de récupérer les catégories", Toast.LENGTH_LONG).show()
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return JSONArray("[]")
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
}
|