From 22de81e373615b4492a167da5cc1d61cf368b029 Mon Sep 17 00:00:00 2001 From: tonyfages Date: Wed, 27 Mar 2024 17:32:31 +0100 Subject: [PATCH] API --- .../example/veraxapplication/MainActivity.kt | 10 ++-- .../veraxapplication/modele/ApiClient.kt | 22 -------- .../veraxapplication/modele/UserApiService.kt | 3 +- .../veraxapplication/modele/api/ArticleDTO.kt | 50 +++++++++++++++++++ .../modele/api/ArticleRepository.kt | 5 ++ .../{ApiService.kt => api/IArticleAPI.kt} | 5 +- .../modele/articles/Article.kt | 5 +- .../modele/articles/StubArticles.kt | 9 ++-- 8 files changed, 70 insertions(+), 39 deletions(-) delete mode 100644 Android/VeraxApplication/app/src/main/java/com/example/veraxapplication/modele/ApiClient.kt create mode 100644 Android/VeraxApplication/app/src/main/java/com/example/veraxapplication/modele/api/ArticleDTO.kt create mode 100644 Android/VeraxApplication/app/src/main/java/com/example/veraxapplication/modele/api/ArticleRepository.kt rename Android/VeraxApplication/app/src/main/java/com/example/veraxapplication/modele/{ApiService.kt => api/IArticleAPI.kt} (70%) diff --git a/Android/VeraxApplication/app/src/main/java/com/example/veraxapplication/MainActivity.kt b/Android/VeraxApplication/app/src/main/java/com/example/veraxapplication/MainActivity.kt index babcbb2..c60deca 100644 --- a/Android/VeraxApplication/app/src/main/java/com/example/veraxapplication/MainActivity.kt +++ b/Android/VeraxApplication/app/src/main/java/com/example/veraxapplication/MainActivity.kt @@ -3,13 +3,9 @@ package com.example.veraxapplication import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent -import androidx.compose.ui.graphics.Color import com.example.veraxapplication.articles.IArticlesDataManager import com.example.veraxapplication.articles.StubArticles -import com.example.veraxapplication.modele.ApiClient -import com.example.veraxapplication.modele.articles.Article import com.example.veraxapplication.navigation.VeraxNavHost -import com.example.veraxapplication.ui.article.AfficherArticle import com.example.veraxapplication.ui.topBar.TopBarVerax // doc navBar: https://developer.android.com/reference/kotlin/androidx/compose/material3/package-summary#TopAppBar(kotlin.Function0,androidx.compose.ui.Modifier,kotlin.Function0,kotlin.Function1,androidx.compose.foundation.layout.WindowInsets,androidx.compose.material3.TopAppBarColors,androidx.compose.material3.TopAppBarScrollBehavior) @@ -19,6 +15,7 @@ import com.example.veraxapplication.ui.topBar.TopBarVerax + class MainActivity : ComponentActivity() { // un truc vite fait pour avoir un visi @@ -27,7 +24,7 @@ class MainActivity : ComponentActivity() { var dataManager: IArticlesDataManager = StubArticles() var articles = dataManager.getDerniersArticles(4) - val articlesApi = ApiClient.apiService.getArticles() + //val reqresClient = IArticleRepository.create() var theme = listOf("Economique", "Culture", "Politique", "Faits divers") @@ -38,8 +35,7 @@ class MainActivity : ComponentActivity() { //TopBarVerax(theme = theme, articles = articlesApi) - // TopBarVerax(theme = theme, articles = articles) - + TopBarVerax(theme = theme, articles = articles) VeraxNavHost() } diff --git a/Android/VeraxApplication/app/src/main/java/com/example/veraxapplication/modele/ApiClient.kt b/Android/VeraxApplication/app/src/main/java/com/example/veraxapplication/modele/ApiClient.kt deleted file mode 100644 index c7c58f3..0000000 --- a/Android/VeraxApplication/app/src/main/java/com/example/veraxapplication/modele/ApiClient.kt +++ /dev/null @@ -1,22 +0,0 @@ -package com.example.veraxapplication.modele - -import retrofit2.Retrofit -import retrofit2.converter.gson.GsonConverterFactory - -object RetrofitClient { - - private const val BASE_URL = "http://181.214.189.133:9092/" - - val retrofit: Retrofit by lazy { - Retrofit.Builder() - .baseUrl(BASE_URL) - .addConverterFactory(GsonConverterFactory.create()) - .build() - } -} - -object ApiClient { - val apiService: ApiService by lazy { - RetrofitClient.retrofit.create(ApiService::class.java) - } -} \ No newline at end of file diff --git a/Android/VeraxApplication/app/src/main/java/com/example/veraxapplication/modele/UserApiService.kt b/Android/VeraxApplication/app/src/main/java/com/example/veraxapplication/modele/UserApiService.kt index 1051d12..1d37c15 100644 --- a/Android/VeraxApplication/app/src/main/java/com/example/veraxapplication/modele/UserApiService.kt +++ b/Android/VeraxApplication/app/src/main/java/com/example/veraxapplication/modele/UserApiService.kt @@ -1,12 +1,11 @@ package com.example.veraxapplication.modele -import com.example.veraxapplication.modele.articles.Article import com.example.veraxapplication.modele.user.User import retrofit2.Call import retrofit2.http.GET interface UserApiService { @GET("users/") - fun getUsers(): Call> + suspend fun getUsers(): Call> } \ No newline at end of file diff --git a/Android/VeraxApplication/app/src/main/java/com/example/veraxapplication/modele/api/ArticleDTO.kt b/Android/VeraxApplication/app/src/main/java/com/example/veraxapplication/modele/api/ArticleDTO.kt new file mode 100644 index 0000000..dc32e47 --- /dev/null +++ b/Android/VeraxApplication/app/src/main/java/com/example/veraxapplication/modele/api/ArticleDTO.kt @@ -0,0 +1,50 @@ +package com.example.veraxapplication.modele.api + +import com.example.veraxapplication.modele.articles.Article +import com.google.gson.annotations.SerializedName + +data class ArticleDTO ( + + @SerializedName("id") + val id: Int, + @SerializedName("titre") + val titre: String, + @SerializedName("description") + val description: String, + @SerializedName("imagePrincipale") + val imagePrincipale: String, + @SerializedName("date") + val date: String, + @SerializedName("auteur") + val auteur: String, + @SerializedName("contenu") + val contenu: List, + @SerializedName("temps") + val temps: String, + @SerializedName("note") + val note: String, + ) { + fun toModel(): Article { + return Article( + id, + titre, + description, + auteur, + date, + imagePrincipale, + temps, + note, + ) + } +} + +data class ContenuDTO ( + @SerializedName("id") + val id: Int, + @SerializedName("typeContenu") + val typeContenu: String, + @SerializedName("titre") + val titre: String, + @SerializedName("texte") + val texte: String, +) \ No newline at end of file diff --git a/Android/VeraxApplication/app/src/main/java/com/example/veraxapplication/modele/api/ArticleRepository.kt b/Android/VeraxApplication/app/src/main/java/com/example/veraxapplication/modele/api/ArticleRepository.kt new file mode 100644 index 0000000..d635093 --- /dev/null +++ b/Android/VeraxApplication/app/src/main/java/com/example/veraxapplication/modele/api/ArticleRepository.kt @@ -0,0 +1,5 @@ +package com.example.veraxapplication.modele.api + +class ArticleRepository { + +} \ No newline at end of file diff --git a/Android/VeraxApplication/app/src/main/java/com/example/veraxapplication/modele/ApiService.kt b/Android/VeraxApplication/app/src/main/java/com/example/veraxapplication/modele/api/IArticleAPI.kt similarity index 70% rename from Android/VeraxApplication/app/src/main/java/com/example/veraxapplication/modele/ApiService.kt rename to Android/VeraxApplication/app/src/main/java/com/example/veraxapplication/modele/api/IArticleAPI.kt index 432be0f..33f0822 100644 --- a/Android/VeraxApplication/app/src/main/java/com/example/veraxapplication/modele/ApiService.kt +++ b/Android/VeraxApplication/app/src/main/java/com/example/veraxapplication/modele/api/IArticleAPI.kt @@ -1,11 +1,10 @@ -package com.example.veraxapplication.modele +package com.example.veraxapplication.modele.api import com.example.veraxapplication.modele.articles.Article import retrofit2.Call import retrofit2.http.GET -interface ApiService { +interface IArticleAPI { @GET("articles/") fun getArticles(): Call> - } \ No newline at end of file diff --git a/Android/VeraxApplication/app/src/main/java/com/example/veraxapplication/modele/articles/Article.kt b/Android/VeraxApplication/app/src/main/java/com/example/veraxapplication/modele/articles/Article.kt index d5b26e9..34ff9f0 100644 --- a/Android/VeraxApplication/app/src/main/java/com/example/veraxapplication/modele/articles/Article.kt +++ b/Android/VeraxApplication/app/src/main/java/com/example/veraxapplication/modele/articles/Article.kt @@ -1,5 +1,6 @@ package com.example.veraxapplication.modele.articles +import com.example.veraxapplication.modele.api.ArticleDTO import com.example.veraxapplication.modele.articles.contenus.Contenu class Article( @@ -9,9 +10,9 @@ class Article( val temps: String, val date: String, val auteur: String, + val note: String, val imagePrincipale: String ) { - val note = 1.0 private val lContenus: MutableList = java.util.ArrayList() init { @@ -30,4 +31,6 @@ class Article( override fun toString(): String { return "Article(id=$id, titre='$titre', description='$description', temps='$temps', date='$date', auteur='$auteur', imagePrincipale='$imagePrincipale', note=$note, contenus=${lContenus.size} contenus)" } + + } diff --git a/Android/VeraxApplication/app/src/main/java/com/example/veraxapplication/modele/articles/StubArticles.kt b/Android/VeraxApplication/app/src/main/java/com/example/veraxapplication/modele/articles/StubArticles.kt index 3335819..1c604ac 100644 --- a/Android/VeraxApplication/app/src/main/java/com/example/veraxapplication/modele/articles/StubArticles.kt +++ b/Android/VeraxApplication/app/src/main/java/com/example/veraxapplication/modele/articles/StubArticles.kt @@ -1,13 +1,9 @@ package com.example.veraxapplication.articles -import android.os.Build -import androidx.annotation.RequiresApi import com.example.veraxapplication.modele.articles.Article import com.example.veraxapplication.modele.articles.contenus.Contenu import com.example.veraxapplication.modele.articles.contenus.ContenuMedia import com.example.veraxapplication.modele.articles.contenus.ContenuParagraphe -import java.time.LocalDate -import kotlin.math.min class StubArticles() : IArticlesDataManager { @@ -30,6 +26,7 @@ class StubArticles() : IArticlesDataManager { "3", "date a revoir", "Siwa", + "12", "https://cdn.discordapp.com/attachments/1150826798549049554/1219554341388816437/stub1.webp?ex=660bb97d&is=65f9447d&hm=3e1e8d3372ae897fa4e2aa1ec730d976d74b35fce96cb8d78d6f9239e2836564&" ) article1.remplirArticle(contenuMap["article1"]) @@ -43,6 +40,7 @@ class StubArticles() : IArticlesDataManager { "7", "date a revoir", "Siwa", + "12", "https://cdn.discordapp.com/attachments/1150826798549049554/1219555874339815454/stub2.webp?ex=660bbaea&is=65f945ea&hm=80aef945e8410b18395c716fdd19265608f7b1263731192d5c69f807fce9e944&" ) article2.remplirArticle(contenuMap["article5"]) @@ -56,6 +54,8 @@ class StubArticles() : IArticlesDataManager { "5", "date a revoir", "Siwa", + "12", + "https://cdn.discordapp.com/attachments/1150826798549049554/1219547864196317225/stub1.webp?ex=660bb374&is=65f93e74&hm=a9e5dd48faa3ae68c358309af8949c46dfd4dea9c4d6e3d845d707784e5341cf&" ) article3.remplirArticle(contenuMap["article4"]) @@ -69,6 +69,7 @@ class StubArticles() : IArticlesDataManager { "9", "date a revoir", "Luthen", + "12", "https://cdn.discordapp.com/attachments/1150826798549049554/1219560686254817290/stub1.webp?ex=660bbf65&is=65f94a65&hm=021bd8c90c89347f31373468cc7a03ae15f1d3f9988a5b4325149c6df938d7bb&" ) article4.remplirArticle(contenuMap["article6"])