32 lines
780 B
Go
32 lines
780 B
Go
package httpapi
|
|
|
|
import (
|
|
"errors"
|
|
"github.com/gin-gonic/gin"
|
|
"github.com/sundynix/pets-be/internal/environment"
|
|
"net/http"
|
|
"strconv"
|
|
)
|
|
|
|
func (a *API) environment(c *gin.Context) {
|
|
lat, latErr := strconv.ParseFloat(c.Query("latitude"), 64)
|
|
lon, lonErr := strconv.ParseFloat(c.Query("longitude"), 64)
|
|
if latErr != nil || lonErr != nil {
|
|
fail(c, http.StatusBadRequest, "请提供有效的定位坐标")
|
|
return
|
|
}
|
|
result, err := a.env.Lookup(c.Request.Context(), lat, lon)
|
|
if err != nil {
|
|
status := http.StatusBadGateway
|
|
if errors.Is(err, environment.ErrCoordinates) {
|
|
status = http.StatusBadRequest
|
|
}
|
|
if errors.Is(err, environment.ErrNotConfigured) {
|
|
status = http.StatusServiceUnavailable
|
|
}
|
|
fail(c, status, err.Error())
|
|
return
|
|
}
|
|
ok(c, result)
|
|
}
|