diff --git a/.idea/modules/app/ScienceQuest.app.iml b/.idea/modules/app/ScienceQuest.app.iml new file mode 100644 index 0000000..d048db3 --- /dev/null +++ b/.idea/modules/app/ScienceQuest.app.iml @@ -0,0 +1,10 @@ + + + + + + + \ No newline at end of file diff --git a/android/app/src/main/java/fr/iut/sciencequest/MainActivity.kt b/android/app/src/main/java/fr/iut/sciencequest/MainActivity.kt index bd86650..284f64e 100644 --- a/android/app/src/main/java/fr/iut/sciencequest/MainActivity.kt +++ b/android/app/src/main/java/fr/iut/sciencequest/MainActivity.kt @@ -1,18 +1,21 @@ package fr.iut.sciencequest import android.os.Bundle +import android.util.Log import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Surface import androidx.compose.ui.Modifier +import fr.iut.sciencequest.model.buisness.fetchScientifiqueById import fr.iut.sciencequest.navigation.NavHost import fr.iut.sciencequest.ui.theme.ScienceQuestTheme class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) + fetchScientifiqueById(1) setContent { ScienceQuestTheme { // A surface container using the 'background' color from the theme diff --git a/android/app/src/main/java/fr/iut/sciencequest/model/RequestService.kt b/android/app/src/main/java/fr/iut/sciencequest/model/buisness/ScientifiqueRequestService.kt similarity index 77% rename from android/app/src/main/java/fr/iut/sciencequest/model/RequestService.kt rename to android/app/src/main/java/fr/iut/sciencequest/model/buisness/ScientifiqueRequestService.kt index f302816..d6b381f 100644 --- a/android/app/src/main/java/fr/iut/sciencequest/model/RequestService.kt +++ b/android/app/src/main/java/fr/iut/sciencequest/model/buisness/ScientifiqueRequestService.kt @@ -1,4 +1,4 @@ -package fr.iut.sciencequest.model +package fr.iut.sciencequest.model.buisness import com.jakewharton.retrofit2.converter.kotlinx.serialization.asConverterFactory import fr.iut.sciencequest.model.dto.ScientifiqueDTO @@ -11,16 +11,16 @@ import retrofit2.http.GET import retrofit2.http.Path // 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() -interface RequestService { +interface ScientifiqueRequestService { @GET("scientifiques/{index}/{count}") fun getScientifiques(@Path("index") index: Int, @Path("count") count: Int): Call> @GET("scientifiques/{id}") - fun getScientifique(@Path("id") id: Int) + fun getScientifique(@Path("id") id: Int): Call } fun createRequestService(): Retrofit = diff --git a/android/app/src/main/java/fr/iut/sciencequest/model/buisness/ScientifiquesRequestor.kt b/android/app/src/main/java/fr/iut/sciencequest/model/buisness/ScientifiquesRequestor.kt new file mode 100644 index 0000000..0d242e1 --- /dev/null +++ b/android/app/src/main/java/fr/iut/sciencequest/model/buisness/ScientifiquesRequestor.kt @@ -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() + Log.d("Requete API","Fetch un scientifique") + serviceClient.getScientifique(id).enqueue( + object: Callback { + override fun onResponse( + call: Call, + response: Response + ) { + // 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, t: Throwable) { + Log.e("Requete API","Erreur lors d'une requete api") + throw t + } + } + ) +} + +fun fetchScientifiquesById(index: Int, count: Int) { + val serviceClient = createRequestService().create() + Log.d("Requete API","Fetch plusieurs scientifiques") + serviceClient.getScientifiques(index, count).enqueue( + object: Callback> { + override fun onResponse( + call: Call>, + response: Response> + ) { + // 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>, t: Throwable) { + Log.e("Requete API","Erreur lors d'une requete api") + throw t + } + } + ) +} \ No newline at end of file diff --git a/android/app/src/main/java/fr/iut/sciencequest/model/dto/ScientifiqueDTO.kt b/android/app/src/main/java/fr/iut/sciencequest/model/dto/ScientifiqueDTO.kt index 605b44c..10ca167 100644 --- a/android/app/src/main/java/fr/iut/sciencequest/model/dto/ScientifiqueDTO.kt +++ b/android/app/src/main/java/fr/iut/sciencequest/model/dto/ScientifiqueDTO.kt @@ -13,5 +13,6 @@ data class ScientifiqueDTO ( @SerialName("ratiotrouve") val ratioTrouve: Float, val sexe: Char, - val difficulte: DifficulteDTO + val difficulteId: Int, + val thematiqueId: Int ) \ No newline at end of file