func addDriver(c echo.Context) error {
p := &Payload{}
if err := c.Bind(p); err != nil {
return c.JSON(http.StatusUnsupportedMediaType, &DefaultResponse{
Success: false,
Message: "Set content-type application/json or check your payload data",
})
}
return c.JSON(http.StatusOK, &DefaultResponse{
Success: false,
Message: "Added",
})
}
As you can see here, there is an incomprehensible method c.Bind
. This method links the data, which we receive to the structure. We always need to pass a pointer to the structure.
func getDriver(c echo.Context) error {
driverID := c.Param("id")
id, err := strconv.Atoi(driverID)
if err != nil {
return c.JSON(http.StatusBadRequest, &DefaultResponse{
Success: false,
Message: "could not convert string to integer",
})
}
return c.JSON(http.StatusOK, &DriverResponse{
Success: true,
Message: "found",
Driver: id,
})
}
func deleteDriver(c echo.Context) error {
driverID := c.Param("id")
_, err := strconv.Atoi(driverID)
if err != nil {
return c.JSON(http.StatusBadRequest, &DefaultResponse{
Success: false,
Message: "could not convert string to integer",
})
}
return c.JSON(http.StatusOK, &DefaultResponse{
Success: true,
Message: "removed",
})
}
func nearestDrivers(c echo.Context) error {
lat := c.Param("lat")
lon := c.Param("lon")
if lat == "" || lon == "" {
return c.JSON(http.StatusBadRequest, &DefaultResponse{
Success: false,
Message: "empty coordinates",
})
}
_, err := strconv.ParseFloat(lat, 64)
if err != nil {
return c.JSON(http.StatusBadRequest, &DefaultResponse{
Success: false,
Message: "failed convert float",
})
}
_, err = strconv.ParseFloat(lon, 64)
if err != nil {
return c.JSON(http.StatusBadRequest, &DefaultResponse{
Success: false,
Message: "failed convert float",
})
}
// TODO: Add nearest
return c.JSON(http.StatusOK, &NearestDriverResponse{
Success: false,
Message: "found",
})
}
We have implemented the "stub" methods. Considering that we don't have storage currently, we will begin to implement in the next steps.