Merge remote-tracking branch 'origin/Android' into Android

RepositoryAndroid
Victor SOULIER 1 year ago
commit ca2ae68925

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<module version="4">
<component name="ModuleClassLoaderOverlays">
<paths>
<option value="/tmp/overlay10633925828874165666" />
<option value="/tmp/overlay8943318448700809082" />
<option value="/tmp/overlay8977085641070230858" />
</paths>
</component>
</module>

@ -1,18 +1,21 @@
package fr.iut.sciencequest package fr.iut.sciencequest
import android.os.Bundle import android.os.Bundle
import android.util.Log
import androidx.activity.ComponentActivity import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent import androidx.activity.compose.setContent
import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Surface import androidx.compose.material3.Surface
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import fr.iut.sciencequest.model.buisness.fetchScientifiqueById
import fr.iut.sciencequest.navigation.NavHost import fr.iut.sciencequest.navigation.NavHost
import fr.iut.sciencequest.ui.theme.ScienceQuestTheme import fr.iut.sciencequest.ui.theme.ScienceQuestTheme
class MainActivity : ComponentActivity() { class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
fetchScientifiqueById(1)
setContent { setContent {
ScienceQuestTheme { ScienceQuestTheme {
// A surface container using the 'background' color from the theme // A surface container using the 'background' color from the theme

@ -1,4 +1,4 @@
package fr.iut.sciencequest.model package fr.iut.sciencequest.model.buisness
import com.jakewharton.retrofit2.converter.kotlinx.serialization.asConverterFactory import com.jakewharton.retrofit2.converter.kotlinx.serialization.asConverterFactory
import fr.iut.sciencequest.model.dto.ScientifiqueDTO import fr.iut.sciencequest.model.dto.ScientifiqueDTO
@ -11,16 +11,16 @@ import retrofit2.http.GET
import retrofit2.http.Path import retrofit2.http.Path
// a remplir // a remplir
private const val API_BASE_URL = "" private const val API_BASE_URL = "https://sae-java.alix-jdlm.fr/api/v1"
val httpClient = OkHttpClient() val httpClient = OkHttpClient()
interface RequestService { interface ScientifiqueRequestService {
@GET("scientifiques/{index}/{count}") @GET("scientifiques/{index}/{count}")
fun getScientifiques(@Path("index") index: Int, @Path("count") count: Int): Call<List<ScientifiqueDTO>> fun getScientifiques(@Path("index") index: Int, @Path("count") count: Int): Call<List<ScientifiqueDTO>>
@GET("scientifiques/{id}") @GET("scientifiques/{id}")
fun getScientifique(@Path("id") id: Int) fun getScientifique(@Path("id") id: Int): Call<ScientifiqueDTO>
} }
fun createRequestService(): Retrofit = fun createRequestService(): Retrofit =

@ -0,0 +1,67 @@
package fr.iut.sciencequest.model.buisness
import android.util.Log
import fr.iut.sciencequest.model.dto.ScientifiqueDTO
import retrofit2.Call
import retrofit2.Callback
import retrofit2.Response
import retrofit2.create
import java.lang.IllegalArgumentException
fun fetchScientifiqueById(id: Int) {
val serviceClient = createRequestService().create<ScientifiqueRequestService>()
Log.d("Requete API","Fetch un scientifique")
serviceClient.getScientifique(id).enqueue(
object: Callback<ScientifiqueDTO> {
override fun onResponse(
call: Call<ScientifiqueDTO>,
response: Response<ScientifiqueDTO>
) {
// NOTE : il faudrait probablement utiliser une autre exception
// exception personnalisée ?
val data = response.body() ?:
throw IllegalArgumentException("ERREUR : l'api a donné une réponse vide")
// Devrait appeler le ModelView, la méthode onResponse ne renvoit rien
// Pour le moment des print pour vérifier que la requêtre fonctionne
// sans avoir besoin des vues.
Log.d("Requete API",data.id.toString())
Log.d("Requete API", data.nom)
}
override fun onFailure(call: Call<ScientifiqueDTO>, t: Throwable) {
Log.e("Requete API","Erreur lors d'une requete api")
throw t
}
}
)
}
fun fetchScientifiquesById(index: Int, count: Int) {
val serviceClient = createRequestService().create<ScientifiqueRequestService>()
Log.d("Requete API","Fetch plusieurs scientifiques")
serviceClient.getScientifiques(index, count).enqueue(
object: Callback<List<ScientifiqueDTO>> {
override fun onResponse(
call: Call<List<ScientifiqueDTO>>,
response: Response<List<ScientifiqueDTO>>
) {
// NOTE : il faudrait probablement utiliser une autre exception
// exception personnalisée ?
val data = response.body() ?:
throw IllegalArgumentException("ERREUR : l'api a donné une réponse vide")
// Devrait appeler le ModelView, la méthode onResponse ne renvoit rien
// Pour le moment des print pour vérifier que la requêtre fonctionne
// sans avoir besoin des vues.
for (scientifique in data) {
Log.d("Requete API",scientifique.id.toString())
Log.d("Requete API", scientifique.nom)
}
}
override fun onFailure(call: Call<List<ScientifiqueDTO>>, t: Throwable) {
Log.e("Requete API","Erreur lors d'une requete api")
throw t
}
}
)
}

@ -13,5 +13,6 @@ data class ScientifiqueDTO (
@SerialName("ratiotrouve") @SerialName("ratiotrouve")
val ratioTrouve: Float, val ratioTrouve: Float,
val sexe: Char, val sexe: Char,
val difficulte: DifficulteDTO val difficulteId: Int,
val thematiqueId: Int
) )
Loading…
Cancel
Save