PKGBUILD/pkg/types/types.go

59 lines
1.5 KiB
Go
Raw Normal View History

2018-11-19 21:36:21 +00:00
package types
import (
"bytes"
"encoding/json"
"fmt"
"io"
2018-11-28 17:07:20 +00:00
stypes "git.cryptic.systems/fh-trier/go-flucky-server/pkg/types"
2018-11-19 21:36:21 +00:00
)
type Config struct {
DeviceID string `json:"device_id"`
DeviceName string `json:"device_name"`
DeviceLocation string `json:"device_location"`
TemperatureLogfile string `json:"temperature_logfile"`
HumidityLogfile string `json:"humiditiy_logfile"`
Remotes []*Remote `json:"remotes"`
Sensors []*stypes.Sensor `json:"sensors"`
2018-11-19 21:36:21 +00:00
}
func (c *Config) ToJSON() (string, error) {
var b bytes.Buffer
err := c.JSONWriter(&b)
if err != nil {
return "", err
}
return b.String(), nil
}
// JSONWriter needs a writer to write the struct into json string
func (c *Config) JSONWriter(w io.Writer) error {
encoder := json.NewEncoder(w)
encoder.SetIndent("", " ")
err := encoder.Encode(&c)
if err != nil {
return fmt.Errorf("Error in encoding struct to json: %v", err)
}
return nil
}
// JSONDecoder decode a json string from a reader into a struct
func (c *Config) JSONDecoder(r io.Reader) error {
jsonDecoder := json.NewDecoder(r)
if err := jsonDecoder.Decode(&c); err != nil {
return fmt.Errorf("Can not unmarshal JSON: %v", err)
}
return nil
}
2018-11-28 17:07:20 +00:00
// Remote ...
2018-11-19 21:36:21 +00:00
type Remote struct {
Name string `json:"remote_name"`
Address string `json:"remote_address"`
Registered bool `json:"remote_registered"`
2018-11-28 17:07:20 +00:00
Enabled bool `json:"remote_enabled"`
}