package apiservice_state import ( "bytes" "encoding/json" "errors" "fmt" "io" "net/http" ) func patch(url string, cmd string) error { req, err := http.NewRequest(http.MethodPatch, url, bytes.NewReader([]byte(cmd))) if err != nil { return err } _, err = http.DefaultClient.Do(req) if err != nil { return err } return nil } func get(url string) (state, error) { resp, err := http.Get(url) if err != nil { return StateOff, err } if resp.StatusCode != http.StatusOK { return StateOff, fmt.Errorf("error: received status code: %d", resp.StatusCode) } res, err := io.ReadAll(resp.Body) if err != nil { return StateOff, err } var dev map[string]any err = json.Unmarshal(res, &dev) if err != nil { return StateOff, err } tmp := dev["Value"] if tmp != nil { return state(tmp.(string)), nil } tmp = dev["data"] if tmp != nil { if tmp.(bool) { return StateOn, nil } else { return StateOff, nil } } return StateOff, errors.New("unknown result") }