PKGBUILD/pkg/httpcall/temperature.go

53 lines
1.2 KiB
Go
Raw Normal View History

2018-11-21 19:48:10 +00:00
package httpcall
import (
"bytes"
"fmt"
"io/ioutil"
"net/http"
"git.cryptic.systems/fh-trier/go-flucky/pkg/config"
stypes "git.cryptic.systems/fh-trier/go-flucky-server/pkg/types"
)
// SendTemperature remote servers
func SendTemperatures(temperatures []*stypes.Temperature, configDir string) error {
con, err := config.Read(configDir)
if err != nil {
return err
}
var buffer bytes.Buffer
for _, temperature := range temperatures {
temperature.EncodeToJSON(&buffer)
}
for _, remote := range con.Remotes {
requestURL := fmt.Sprintf("%s%s", remote.Address, "/temperatures")
req, err := http.NewRequest("POST", requestURL, &buffer)
if err != nil {
return err
}
client := http.Client{}
resp, err := client.Do(req)
if err != nil {
return err
}
defer resp.Body.Close()
if resp.StatusCode < 200 || resp.StatusCode > 299 {
b, err := ioutil.ReadAll(resp.Body)
if err != nil {
return fmt.Errorf("Invalid HTTP-Statuscode - expected 200, got %d - can not read response body: %v", resp.StatusCode, err)
}
return fmt.Errorf("Invalid HTTP-Statuscode - expected 200, got %d: %v", resp.StatusCode, string(b))
}
}
return nil
}