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("[]") } } }