package handlers import ( "log" "math" "net/http" "strconv" "time" "gitlab.hamburg.ccc.de/ccchh/spaceapid/config" "gitlab.hamburg.ccc.de/ccchh/spaceapid/types" ) func EnvironmentSensor( authDB config.HTTPBACredentials, validCredentials []config.HTTPBACredentialID, resp *types.EnvironmentSensor, ) func(http.ResponseWriter, *http.Request) { return func(w http.ResponseWriter, r *http.Request) { body, err := updateEndpointValidator(authDB, validCredentials, w, r) if err != nil { log.Println(err) return } // Parse request body newState, err := strconv.ParseFloat(string(body), 64) if err != nil || math.IsInf(newState, 0) { log.Println("Failed to parse request body from", r.RemoteAddr, "with error:", err) http.Error(w, "HTTP request body has to be a valid float64 value != +/-Inf", http.StatusBadRequest) return } // Set SpaceAPI response values resp.Value = newState resp.LastChange = time.Now().Unix() } }