refactor: Add Go 1.22 HTTP method matching
This commit is contained in:
parent
bd94b295ac
commit
74a8db7d2b
2
go.mod
2
go.mod
|
@ -1,3 +1,3 @@
|
||||||
module git.hamburg.ccc.de/ccchh/spaceapid
|
module git.hamburg.ccc.de/ccchh/spaceapid
|
||||||
|
|
||||||
go 1.21
|
go 1.22
|
||||||
|
|
|
@ -10,8 +10,7 @@ import (
|
||||||
"git.hamburg.ccc.de/ccchh/spaceapid/util"
|
"git.hamburg.ccc.de/ccchh/spaceapid/util"
|
||||||
)
|
)
|
||||||
|
|
||||||
// updateEndpointValidator checks BasicAuth credentials,
|
// updateEndpointValidator checks BasicAuth credentials and then returns the request body
|
||||||
// checks for correct HTTP method and then returns the request body
|
|
||||||
func updateEndpointValidator(
|
func updateEndpointValidator(
|
||||||
authDB config.HTTPBACredentials, validCredentials []config.HTTPBACredentialID,
|
authDB config.HTTPBACredentials, validCredentials []config.HTTPBACredentialID,
|
||||||
w http.ResponseWriter, r *http.Request,
|
w http.ResponseWriter, r *http.Request,
|
||||||
|
@ -24,13 +23,6 @@ func updateEndpointValidator(
|
||||||
return []byte{}, errors.New(fmt.Sprintf("Unauthorized request from %s Username: %s Password: %s", r.RemoteAddr, username, password))
|
return []byte{}, errors.New(fmt.Sprintf("Unauthorized request from %s Username: %s Password: %s", r.RemoteAddr, username, password))
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check if PUT method
|
|
||||||
if r.Method != http.MethodPut {
|
|
||||||
w.Header().Set("Allow", http.MethodPut)
|
|
||||||
http.Error(w, "", http.StatusMethodNotAllowed)
|
|
||||||
return []byte{}, errors.New(fmt.Sprintf("Wrong Method: %s from %s at %s", r.Method, r.RemoteAddr, r.RequestURI))
|
|
||||||
}
|
|
||||||
|
|
||||||
// Read request body
|
// Read request body
|
||||||
body, err := io.ReadAll(r.Body)
|
body, err := io.ReadAll(r.Body)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
10
main.go
10
main.go
|
@ -51,20 +51,20 @@ func main() {
|
||||||
}(&conf.Response)
|
}(&conf.Response)
|
||||||
|
|
||||||
// Register HTTP handlers
|
// Register HTTP handlers
|
||||||
http.HandleFunc("/",
|
http.HandleFunc("GET /{$}",
|
||||||
handlers.Root(&conf.Response),
|
handlers.Root(&conf.Response),
|
||||||
)
|
)
|
||||||
http.HandleFunc("/state/open",
|
http.HandleFunc("PUT /state/open",
|
||||||
handlers.StateOpen(conf.Credentials, conf.Dynamic.State.Open.AllowedCredentials, &conf.Response.State),
|
handlers.StateOpen(conf.Credentials, conf.Dynamic.State.Open.AllowedCredentials, &conf.Response.State),
|
||||||
)
|
)
|
||||||
// Register handlers for environmental sensors
|
// Register handler for environmental sensors
|
||||||
for sensorType, envSensorConfigs := range conf.Dynamic.Sensors {
|
for sensorType, envSensorConfigs := range conf.Dynamic.Sensors {
|
||||||
for i, envSensorConfig := range envSensorConfigs {
|
for i, envSensorConfig := range envSensorConfigs {
|
||||||
urlPath := util.GetSensorURLPath(
|
urlPattern := "PUT " + util.GetSensorURLPath(
|
||||||
sensorType, envSensorConfig.SensorData.Location, envSensorConfig.SensorData.Name,
|
sensorType, envSensorConfig.SensorData.Location, envSensorConfig.SensorData.Name,
|
||||||
)
|
)
|
||||||
http.HandleFunc(
|
http.HandleFunc(
|
||||||
urlPath,
|
urlPattern,
|
||||||
handlers.EnvironmentSensor(
|
handlers.EnvironmentSensor(
|
||||||
conf.Credentials, envSensorConfig.AllowedCredentials, &conf.Response.Sensors[sensorType][i],
|
conf.Credentials, envSensorConfig.AllowedCredentials, &conf.Response.Sensors[sensorType][i],
|
||||||
),
|
),
|
||||||
|
|
Loading…
Reference in a new issue