Last active
December 17, 2020 16:26
-
-
Save tofl/1c9b07c983071a6552deb75ea0544cc9 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package main | |
import ( | |
"bytes" | |
"net/http" | |
"github.com/labstack/echo/v4" | |
"encoding/json" | |
"os" | |
) | |
// La structure de données `Infraction` recevra le contenu de la requête, | |
// soit les infractions envoyées par les radars. Les données peuvent être | |
// au format JSON, XML, form-data, x-www-form-urlencoded ou même au sein | |
// de l'url (via des query parameters). | |
// L'image envoyée doit être encodée au format base64url | |
type Infraction struct { | |
RadarId int `json:"radarId" xml:"radarId" form:"radarId" query:"radarId"` | |
Speed float64 `json:"speed" xml:"speed" form:"speed" query:"speed"` | |
HasPhone bool `json:"hasPhone" xml:"hasPhone" form:"hasPhone" query:"hasPhone"` | |
Image string `json:"image" xml:"image" form:"image" query:"image"` | |
} | |
func formatData(c echo.Context) error { | |
// On récupère les éléments du corps de la requête | |
body := new(Infraction) | |
if err := c.Bind(body); err != nil { | |
return err | |
} | |
// On convertit l'infraction au format JSON | |
infractionJson, err := json.Marshal(body) | |
if err != nil { | |
return err | |
} | |
// Sauvegarde des données en base. | |
// Les données sont passées au microservice base de données à l'aide | |
// d'une requête HTTP. L'url du microservice base de données est contenu | |
// dans une variable d'environnement. | |
http.Post(os.Getenv("DATABASE_MS_URL"), "application/json", bytes.NewBuffer(infractionJson)) | |
// Réponse OK, on retourne le contenu de la requête au format JSON | |
return c.String(http.StatusOK, string(infractionJson)) | |
} | |
func main() { | |
e := echo.New() | |
// Ici, le routeur ne contient qu'une seule route | |
e.POST("/format", formatData) | |
e.Logger.Fatal(e.Start(":1323")) | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment