diff --git a/pom.xml b/pom.xml
index feeb487..f63f466 100644
--- a/pom.xml
+++ b/pom.xml
@@ -18,21 +18,23 @@
18
18
+
+
org.springframework.boot
spring-boot-starter-web
+
org.springframework.boot
- spring-boot-starter-test
- test
+ spring-boot-starter-data-jpa
- org.springframework.boot
- spring-boot-starter-data-jpa
+ jakarta.persistence
+ jakarta.persistence-api
@@ -41,9 +43,10 @@
runtime
+
- jakarta.persistence
- jakarta.persistence-api
+ org.springframework.boot
+ spring-boot-starter-hateoas
diff --git a/src/main/java/VeraxFeather/controleurs/ArticlesControleur.java b/src/main/java/VeraxFeather/controleurs/ArticlesControleur.java
index 9e518e5..4215bbb 100644
--- a/src/main/java/VeraxFeather/controleurs/ArticlesControleur.java
+++ b/src/main/java/VeraxFeather/controleurs/ArticlesControleur.java
@@ -1,13 +1,33 @@
package VeraxFeather.controleurs;
import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;
+import VeraxFeather.modele.articles.IArticlesDataManager;
+import VeraxFeather.modele.articles.stub.StubArticles;
+import VeraxFeather.modele.articles.Article;
+
+import java.util.List;
@RestController
public class ArticlesControleur {
+ private final IArticlesDataManager articlesDataManager = new StubArticles();
+
+ @GetMapping(value="/articles", produces="application/json")
+ public List getAllArticles() {
+ return articlesDataManager.getAllArticles();
+ }
+
+ @GetMapping(value="/articles/{id}", produces="application/json")
+ public Article getArticle(@PathVariable int id) {
+
+ System.out.println("Id renseigné : " + id);
+ return articlesDataManager.getArticle(id);
+ }
+
@GetMapping(value="/test")
- public String testAPI(){
+ public String testAPI() {
return "L'API fonctionne correctement!";
}
-}
\ No newline at end of file
+}
diff --git a/src/main/java/VeraxFeather/modele/articles/Article.java b/src/main/java/VeraxFeather/modele/articles/Article.java
index 384fa07..d80a906 100644
--- a/src/main/java/VeraxFeather/modele/articles/Article.java
+++ b/src/main/java/VeraxFeather/modele/articles/Article.java
@@ -18,6 +18,7 @@ public class Article {
public Article(int id, String titre, String description, String temps, String date, String auteur, String imagePrincipale) {
+ this.id = id;
this.titre = titre;
this.description = description;
this.temps = temps;
diff --git a/src/main/java/VeraxFeather/modele/articles/stub/StubArticles.java b/src/main/java/VeraxFeather/modele/articles/stub/StubArticles.java
new file mode 100644
index 0000000..a5138af
--- /dev/null
+++ b/src/main/java/VeraxFeather/modele/articles/stub/StubArticles.java
@@ -0,0 +1,111 @@
+package VeraxFeather.modele.articles.stub;
+
+import VeraxFeather.modele.articles.IArticlesDataManager;
+import VeraxFeather.modele.articles.Article;
+import VeraxFeather.modele.articles.contenus.Contenu;
+import VeraxFeather.modele.articles.contenus.ContenuParagraphe;
+import VeraxFeather.modele.articles.contenus.ContenuMedia;
+
+import java.time.LocalDate;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class StubArticles implements IArticlesDataManager {
+ private List lArticles;
+
+ public StubArticles() {
+ chargerArticles();
+ }
+
+ private void chargerArticles() {
+ lArticles = new ArrayList<>();
+ Map> contenuMap = chargerContenuParagraphe();
+
+ // Article 1
+ Article article1 = new Article(1, "Thinkerview", "Thinkerview est une chaîne youtube d'interview-débat...",
+ "3", LocalDate.now().toString(), "Siwa", "assets/img/mainThinkerview.webp");
+ article1.remplirArticle(contenuMap.get("article1"));
+ lArticles.add(article1);
+
+ // Article 2
+ Article article2 = new Article(2, "Guerre en Ukraine : Les troupes ukrainiennes reprennent-elles du terrain ?",
+ "Les troupes ukrainiennes reprennent-elles du territoire ?...",
+ "7", LocalDate.now().toString(), "Siwa", "https://images.ladepeche.fr/api/v1/images/view/64e31dd60f90f526a4234177/large/image.jpg?v=1");
+ article2.remplirArticle(contenuMap.get("article2"));
+ lArticles.add(article2);
+
+ }
+
+ private Map> chargerContenuParagraphe() {
+ Map> contenuMap = new HashMap<>();
+ List article1Contenus = new ArrayList<>();
+ List article2Contenus = new ArrayList<>();
+ List article3Contenus = new ArrayList<>();
+
+ // Contenu de l'article 1
+ article1Contenus.add(new ContenuParagraphe(1, "Le mystérieux cygne noir.",
+ "Sous les traits d’un mystérieux cygne noir, un objet vidéo non identifié plane dans la galaxie médiatique. Ambiance Star Wars..."));
+ article1Contenus.add(new ContenuMedia(0, "Des sujets majeurs abordés", "https://www.systext.org/sites/default/files/styles/large/public/Ill_Thinkerview_Janv2022.png?itok=JvlFQmCH"));
+ article1Contenus.add(new ContenuParagraphe(2, "Penser, réfléchir et s'exprimer librement.",
+ "Dernier carton en date : un entretien de deux heures avec Juan Branco..."));
+ article1Contenus.add(new ContenuMedia(1, "De prestigieux et fascinants invités", "https://i.ytimg.com/vi/_D-AnsdbnRI/maxresdefault.jpg"));
+ article1Contenus.add(new ContenuParagraphe(3, "Une alternative dans un monde aux informations formatées",
+ "\"Nous faisons des interviews aux perspectives alternatives dans un monde aux informations formatées\"..."));
+ article1Contenus.add(new ContenuMedia(2, "Prendre le temps d'écouter les experts dans leurs domaines.", "https://www.youtube.com/embed/1tTksQL2kqs"));
+
+ // Contenu de l'article 2
+ article2Contenus.add(new ContenuParagraphe(1, "Oui les Ukrainiens reprennent du terrain",
+ "Timéo demande à Eric Biegala, grand reporter à la rédaction internationale de Radio France..."));
+ article2Contenus.add(new ContenuMedia(1, "Des violents affrontements", "https://images.ladepeche.fr/api/v1/images/view/655a496a7097bc144658af8c/large/image.jpg?v=1"));
+ article2Contenus.add(new ContenuParagraphe(2, "Non les rayons ne seront pas vides cet hiver",
+ "Lorenzo se demande s'il est vrai \"qu'il y aura une pénurie de produits étrangers cet hiver\"..."));
+ article2Contenus.add(new ContenuMedia(2, "Une carte en perpétuelle évolution",
+ "https://ds1.static.rtbf.be/image/media/object/default/16x9/1920x1080/4/e/6/4e67668ff30a378cbf0a9172f92712a7.jpg"));
+ article2Contenus.add(new ContenuParagraphe(3, "Le gaz va augmenter en 2023, mais l'Etat va continuer à aider",
+ "Isra se demande s'il est vrai \"que le gaz va être plus cher cet hiver\"..."));
+
+ // Contenu de l'article 3
+ article3Contenus.add(new ContenuParagraphe(1, "Une certaine \"tempête Jinette\" en Guyane",
+ "Ne vous laissez pas convaincre par les nuages et les pluies au-dessus de l'île de Cayenne ce matin..."));
+ article3Contenus.add(new ContenuMedia(1, "Pour aujourd'hui, la vigilance est au vert en Guyane.",
+ "https://medias.franceantilles.fr/api/v1/images/view/6560a041c9b8a232734f9fda/width_1000/image.jpg"));
+ article3Contenus.add(new ContenuParagraphe(2, "De simples petites averses en prévision !",
+ "Les quelques averses qui passent actuellement au-dessus de l'île de Cayenne et des savanes ne sont que passagères..."));
+ article3Contenus.add(new ContenuMedia(2, "Le faux document en question. Diffusé depuis hier soir.",
+ "https://medias.franceantilles.fr/api/v1/images/view/6560b08a04eeb6664b7f5488/width_1000/image.jpg"));
+
+ contenuMap.put("article1", article1Contenus);
+ contenuMap.put("article2", article2Contenus);
+ contenuMap.put("article3", article3Contenus);
+
+ return contenuMap;
+ }
+
+
+ @Override
+ public List getAllArticles() {
+ return lArticles;
+ }
+
+ @Override
+ public Article getArticle(int id) {
+
+ System.out.println("Passage dans getArticle avec comme id : " + id);
+ System.out.println("Nombre d'articles disponibles : " + lArticles.size());
+
+ Article articleARenvoyer = lArticles.stream().filter(article -> article.getId() == id).findFirst().orElse(null);
+
+ System.out.println(articleARenvoyer);
+
+ // Article articleARenvoyer = this.lArticles.get(id);
+
+ return articleARenvoyer;
+ }
+
+ @Override
+ public List getDerniersArticles(int nbArticles) {
+ return lArticles.subList(0, Math.min(nbArticles, lArticles.size()));
+ }
+}