From 019c7717af93491ad070c547d32c2eb11d33db2a Mon Sep 17 00:00:00 2001
From: "ivan.rigo" <ivan.rigo@etu.hesge.ch>
Date: Thu, 1 Dec 2022 15:19:56 +0100
Subject: [PATCH] Final with showRes

---
 README.md                   | 23 +++++++++++++++++++++++
 web-service-gin/Gnutella.go | 21 ++++++++++++++++++---
 2 files changed, 41 insertions(+), 3 deletions(-)

diff --git a/README.md b/README.md
index fea4b90..1ace57d 100644
--- a/README.md
+++ b/README.md
@@ -69,6 +69,29 @@ Représente la ressource cherché
 ##### Retour
 Renvoie OK si tout se passe bien. La requête n'est traité qu'une fois et tout appel successive avec le même msgID renvoie OK sans exécuter le reste de la requête. Vérifie lors de la première requête s'il possède la ressource et l'envoie à son transmitter. Broadcast ensuite la requête avec un TTL décrémenté à ses voisins ormis transmitter
 
+#### Affiché le résultat de la recherche (GET)
+http://localhost:NodePort/showRes
+A utilisé après avoir utilisé la route précédente
+
+##### Retour
+Affiche dans le terminal les noeuds contenant la ressource recherché. Un message différent est insèrer si le noeud initial possède aussi la ressource
+
+### Côté noeud
+Ces fonctions sont utilisé entre les noeuds et ne doivent pas être appelé par l'user
+#### Envoyé la recherche au voisins (GET)
+http://localhost:NodePort/req/transmitter/ttl/msgid/ressource
+
+##### transmiter
+Correspond à l'id du noeud ayant envoyé la requête
+##### ttl
+Correspond au Time To Live, il est décremente avant de l'envoyé aux voisins autre que transmitter
+##### msgId
+Correspond à l'id de la recherche. Elle change à chaque fois que la route initReq est appelé
+##### ressource
+Représente la ressource cherché
+##### Retour
+Renvoie OK si tout se passe bien. La requête n'est traité qu'une fois et tout appel successive avec le même msgID renvoie OK sans exécuter le reste de la requête. Vérifie lors de la première requête s'il possède la ressource et l'envoie à son transmitter. Broadcast ensuite la requête avec un TTL décrémenté à ses voisins ormis transmitter
+
 #### Découverte de la ressource (GET)
 http://localhost:NodePort/foundReq/:finder/:ressource
 
diff --git a/web-service-gin/Gnutella.go b/web-service-gin/Gnutella.go
index 45965cf..6fcc032 100644
--- a/web-service-gin/Gnutella.go
+++ b/web-service-gin/Gnutella.go
@@ -31,6 +31,7 @@ var transmitter int
 var msgId = 0
 var err error
 var assignTransM sync.Mutex
+var endResult string
 
 func getRequest(urlTxt string) {
 	resp, err := http.Get(urlTxt)
@@ -38,13 +39,19 @@ func getRequest(urlTxt string) {
 	fmt.Println(resp.Status)
 }
 
+func showReq(c *gin.Context) {
+	fmt.Println(endResult)
+	c.IndentedJSON(http.StatusOK, endResult)
+}
+
 func initReq(c *gin.Context) {
 	msgId = rand.Intn(100) + data.ID
 	transmitter = -1
-	fmt.Println("\n Start of new research      ")
+	endResult = ""
 	for _, x := range storage {
 		if x == c.Param("ressource") {
-			fmt.Println("\n Ressource exist in Client ")
+			fmt.Println("\nRessource exist in Client")
+			endResult = "Found ressource in node client  "
 			break
 		}
 	}
@@ -96,7 +103,14 @@ func receiveReq(c *gin.Context) {
 //Called by child when ressource is find
 func foundReq(c *gin.Context) {
 	if transmitter == -1 {
-		fmt.Println("\n Instance of " + c.Param("ressource") + " found on port " + c.Param("finder"))
+		if endResult == "" {
+			endResult = "Instance of " + c.Param("ressource") + " found on port " + c.Param("finder") + "  "
+			fmt.Println(endResult)
+		} else {
+			endResult += "Instance of " + c.Param("ressource") + " found on port " + c.Param("finder") + "  "
+			fmt.Println(endResult)
+		}
+		fmt.Println(endResult)
 	} else {
 		getRequest("http://" + data.Neighbors[transmitter].Address + "/foundReq/" + c.Param("finder") + "/" + c.Param("ressource"))
 	}
@@ -141,6 +155,7 @@ func main() {
 	router.GET("/initReq/:ttl/:ressource", initReq)
 	router.GET("/req/:transmitter/:ttl/:msgId/:ressource", receiveReq)
 	router.GET("/foundReq/:finder/:ressource", foundReq)
+	router.GET("/showRes", showReq)
 
 	router.Run(data.Address)
 
-- 
GitLab