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 {
|
2018-11-28 17:07:20 +00:00
|
|
|
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 []*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 {
|
2018-11-20 21:55:06 +00:00
|
|
|
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"`
|
2018-11-20 21:55:06 +00:00
|
|
|
}
|
|
|
|
|
2018-11-28 17:07:20 +00:00
|
|
|
type Sensor struct {
|
|
|
|
RemoteSensor *stypes.Sensor `json:"sensor"`
|
|
|
|
Enabled bool `json:"sensor_enabled"`
|
2018-11-19 21:36:21 +00:00
|
|
|
}
|