From edd1b793324401b88a60af371e1e90ab80f47ffc Mon Sep 17 00:00:00 2001 From: andig Date: Sun, 17 Jan 2021 20:25:36 +0100 Subject: [PATCH] Use NewDecoder instead of read/unmarshal --- hems/semp/semp.go | 8 +------- util/request/functions.go | 7 +++---- 2 files changed, 4 insertions(+), 11 deletions(-) diff --git a/hems/semp/semp.go b/hems/semp/semp.go index a5877e2a6..495af2019 100644 --- a/hems/semp/semp.go +++ b/hems/semp/semp.go @@ -3,7 +3,6 @@ package semp import ( "encoding/xml" "fmt" - "io/ioutil" "net" "net/http" "os" @@ -452,12 +451,7 @@ func (s *SEMP) allPlanningRequest() (res []PlanningRequest) { func (s *SEMP) deviceControlHandler(w http.ResponseWriter, r *http.Request) { var msg EM2Device - body, err := ioutil.ReadAll(r.Body) - if err == nil { - defer r.Body.Close() - err = xml.Unmarshal(body, &msg) - } - + err := xml.NewDecoder(r.Body).Decode(&msg) s.log.TRACE.Printf("recv: %+v", msg) if err != nil { diff --git a/util/request/functions.go b/util/request/functions.go index efcb43a9d..58350aaee 100644 --- a/util/request/functions.go +++ b/util/request/functions.go @@ -72,12 +72,11 @@ func ReadBody(resp *http.Response) ([]byte, error) { // DecodeJSON reads HTTP response and decodes JSON body if error is nil func DecodeJSON(resp *http.Response, res interface{}) error { - b, err := ReadBody(resp) - if err == nil { - err = json.Unmarshal(b, &res) + if resp.StatusCode < 200 || resp.StatusCode >= 300 { + return StatusError{resp: resp} } - return err + return json.NewDecoder(resp.Body).Decode(&res) } // New builds and executes HTTP request and returns the response