refactor: config and remote pkg

This commit is contained in:
2019-02-22 13:08:58 +01:00
parent c437127531
commit d6f41b8105
29 changed files with 247 additions and 1292 deletions

View File

@ -2,33 +2,12 @@ package config
import (
"fmt"
"io"
"os"
"regexp"
"git.cryptic.systems/fh-trier/go-flucky-server/pkg/types"
)
var validUUID = regexp.MustCompile("^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$")
type Config interface {
AddSensor(sensor *types.Sensor) error
AddRemote(remote *Remote) error
DisableRemote(nameOrUUID string) error
DisableSensor(nameOrUUID string) error
EnableRemote(nameOrUUID string) error
EnableSensor(nameOrUUID string) error
GetDevice() *Device
GetRemotes() []*Remote
GetSensors() []*types.Sensor
JSONDecoder(r io.Reader) error
JSONWriter(w io.Writer) error
RemoveSensor(nameOrUUID string) error
RemoveRemote(nameOrUUID string) error
SetDevice(device *Device)
ToJSON() (string, error)
}
// Read the configuration file
func Read(configFile string) (*FluckyConfig, error) {
@ -50,7 +29,7 @@ func Read(configFile string) (*FluckyConfig, error) {
}
// Write the configuration into a file, specified by the configuration filepath
func Write(cfg Config, configFile string) error {
func Write(cfg *FluckyConfig, configFile string) error {
f, err := os.Create(configFile)
if err != nil {

View File

@ -1,7 +0,0 @@
package config
type Device struct {
DeviceID string `json:"device_id"`
DeviceName string `json:"device_name"`
DeviceLocation string `json:"device_location"`
}

View File

@ -14,7 +14,7 @@ import (
// FluckyConfig dasd
type FluckyConfig struct {
Device *Device `json:"device"`
Device *types.Device `json:"device"`
Sensors []*types.Sensor `json:"sensors"`
Remotes []*Remote `json:"remotes"`
}
@ -34,7 +34,12 @@ func (fc *FluckyConfig) AddSensor(sensor *types.Sensor) error {
}
if s.SensorID == sensor.SensorID {
return fmt.Errorf("Remote %v with UUID %v already exists", s.SensorName, s.SensorID)
return fmt.Errorf("Sensor %v with UUID %v already exists", s.SensorName, s.SensorID)
}
if sensor.WireID != nil &&
s.WireID == sensor.WireID {
return fmt.Errorf("Sensor with 1wire-id %v already exists as %v", s.WireID, s.SensorName)
}
}
@ -91,7 +96,7 @@ func (fc *FluckyConfig) DisableRemote(nameOrUUID string) error {
}
if !found {
return fmt.Errorf("Can not found sensor %v", nameOrUUID)
return fmt.Errorf("Can not found remote name %v", nameOrUUID)
}
return nil
@ -187,21 +192,6 @@ func (fc *FluckyConfig) EnableSensor(nameOrUUID string) error {
return nil
}
// GetDevice returns device informations
func (fc *FluckyConfig) GetDevice() *Device {
return fc.Device
}
// GetRemotes returns an array if remote struct poniter
func (fc *FluckyConfig) GetRemotes() []*Remote {
return fc.Remotes
}
// GetSensors returns an array if remote struct poniter
func (fc *FluckyConfig) GetSensors() []*types.Sensor {
return fc.Sensors
}
// JSONDecoder decode a JSON string from a reader into a struct
func (fc *FluckyConfig) JSONDecoder(r io.Reader) error {
jsonDecoder := json.NewDecoder(r)
@ -222,6 +212,7 @@ func (fc *FluckyConfig) JSONWriter(w io.Writer) error {
return nil
}
// PrintRemotes displays a list with all configured remote addresses
func (fc *FluckyConfig) PrintRemotes(w io.Writer) error {
tw := tabwriter.NewWriter(w, 0, 0, 3, ' ', 0)
@ -237,6 +228,23 @@ func (fc *FluckyConfig) PrintRemotes(w io.Writer) error {
return nil
}
// PrintSensors displays a list with all configured sensors
func (fc *FluckyConfig) PrintSensors(w io.Writer) error {
// declar tabwriter
tw := tabwriter.NewWriter(w, 0, 0, 3, ' ', 0)
fmt.Fprint(tw, "id\tname\tlocation\ttype\twire-id\tgpio\tenabled\n")
for _, sensor := range fc.Sensors {
fmt.Fprintf(tw, "%v\t%v\t%v\t%v\t%v\t%v\t%v\n", sensor.SensorID, *sensor.SensorName, *sensor.SensorLocation, *sensor.SensorType, *sensor.WireID, *sensor.GPIONumber, *sensor.SensorEnabled)
}
tw.Flush()
return nil
}
// RemoveSensor deletes a sensor by its name or its unique UUID
func (fc *FluckyConfig) RemoveSensor(nameOrUUID string) error {
found := false
@ -295,11 +303,6 @@ func (fc *FluckyConfig) RemoveRemote(nameOrUUID string) error {
return nil
}
// SetDevice informations, like device name or device location
func (fc *FluckyConfig) SetDevice(device *Device) {
fc.Device = device
}
// ToJSON returns the struct as JSON string
func (fc *FluckyConfig) ToJSON() (string, error) {
var b bytes.Buffer

View File

@ -1,5 +1,7 @@
package config
import "git.cryptic.systems/fh-trier/go-flucky-server/pkg/types"
// Remote ...
type Remote struct {
RemoteID string `json:"remote_id"`
@ -8,3 +10,19 @@ type Remote struct {
Registered bool `json:"remote_registered"`
Enabled bool `json:"remote_enabled"`
}
func (r *Remote) AddSensor(s *types.Sensor) error {
return nil
}
func (r *Remote) RegisterDevice(d *types.Device) error {
return nil
}
func (r *Remote) RemoveSensor(s *types.Sensor) error {
return nil
}
func (r *Remote) UnregisterDevice(d *types.Device) error {
return nil
}