cml04-mediciones/internal/handlers/tolerance.go

60 lines
1.5 KiB
Go
Raw Permalink Normal View History

2024-08-20 09:11:15 +02:00
package handlers
import (
"encoding/json"
"io"
"net/http"
"time"
"git.espin.casa/albert/cml04-mediciones/internal/client"
"git.espin.casa/albert/cml04-mediciones/internal/types"
"github.com/julienschmidt/httprouter"
)
func TolerancesGetHandler(client client.IMediciones) httprouter.Handle {
return func(w http.ResponseWriter, r *http.Request, ps httprouter.Params) {
// request data struct
type ToleranciaRequestData struct {
Medida string `json:"medida"`
}
// request data holder
req := &ToleranciaRequestData{}
// read body request
data, err := io.ReadAll(r.Body)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
defer r.Body.Close()
if err := json.Unmarshal(data, req); err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
medida := req.Medida
// request mediciones by po
res, err := client.GetTolerancia(r.Context(), types.GetToleranciaReq{
Sender: "mediciones-ui",
Medida: medida,
TimeStamp: time.Now().UTC().Format(time.RFC3339),
})
// handle error
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
// encode response
resp, err := json.Marshal(&res)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
// write header 200
w.WriteHeader(http.StatusOK)
// set header content type
w.Header().Set("Content-type", "application/json")
// write response
w.Write(resp)
}
}