driver in bridgetest
This commit is contained in:
+13
-2
@@ -1,12 +1,23 @@
|
|||||||
package config
|
package config
|
||||||
|
|
||||||
import "git.aiterp.net/lucifer/new-server/models"
|
import (
|
||||||
|
"git.aiterp.net/lucifer/new-server/internal/drivers"
|
||||||
|
"git.aiterp.net/lucifer/new-server/internal/drivers/nanoleaf"
|
||||||
|
"git.aiterp.net/lucifer/new-server/models"
|
||||||
|
"sync"
|
||||||
|
)
|
||||||
|
|
||||||
var dp models.DriverProvider
|
var dp models.DriverProvider
|
||||||
|
var dpMutex sync.Mutex
|
||||||
|
|
||||||
func DriverProvider() models.DriverProvider {
|
func DriverProvider() models.DriverProvider {
|
||||||
|
dpMutex.Lock()
|
||||||
|
defer dpMutex.Unlock()
|
||||||
|
|
||||||
if dp == nil {
|
if dp == nil {
|
||||||
panic("not implemented yet")
|
dp = &drivers.MapBasedDriverProvider{Data: map[models.DriverKind]models.Driver{
|
||||||
|
models.DTNanoLeaf: &nanoleaf.Driver{},
|
||||||
|
}}
|
||||||
}
|
}
|
||||||
|
|
||||||
return dp
|
return dp
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
"flag"
|
"flag"
|
||||||
"fmt"
|
"fmt"
|
||||||
"git.aiterp.net/lucifer/new-server/internal/drivers/nanoleaf"
|
"git.aiterp.net/lucifer/new-server/app/config"
|
||||||
"git.aiterp.net/lucifer/new-server/models"
|
"git.aiterp.net/lucifer/new-server/models"
|
||||||
"log"
|
"log"
|
||||||
"os"
|
"os"
|
||||||
@@ -15,7 +15,7 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
var flagDriver = flag.String("driver", "Nanoleaf", "The bridge driver to use")
|
var flagDriver = flag.String("driver", string(models.DTNanoLeaf), "The bridge driver to use")
|
||||||
var flagAddress = flag.String("address", "127.0.0.1", "The bridge's address")
|
var flagAddress = flag.String("address", "127.0.0.1", "The bridge's address")
|
||||||
var flagToken = flag.String("token", "", "The bridge's access token / api key / login")
|
var flagToken = flag.String("token", "", "The bridge's access token / api key / login")
|
||||||
var flagPair = flag.Bool("pair", false, "Try to pair with the bridge.")
|
var flagPair = flag.Bool("pair", false, "Try to pair with the bridge.")
|
||||||
@@ -25,8 +25,11 @@ var flagSearchTimeout = flag.Duration("search-timeout", time.Second*3, "Timeout
|
|||||||
func main() {
|
func main() {
|
||||||
flag.Parse()
|
flag.Parse()
|
||||||
|
|
||||||
// TODO: Select driver
|
// Find drivers
|
||||||
driver := nanoleaf.Driver{}
|
driver, err := config.DriverProvider().Provide(models.DriverKind(*flagDriver))
|
||||||
|
if err != nil {
|
||||||
|
log.Fatalln("Failed to find driver:", err)
|
||||||
|
}
|
||||||
|
|
||||||
// Find bridge
|
// Find bridge
|
||||||
bridges, err := driver.SearchBridge(context.Background(), *flagAddress, !*flagPair)
|
bridges, err := driver.SearchBridge(context.Background(), *flagAddress, !*flagPair)
|
||||||
|
|||||||
@@ -0,0 +1,16 @@
|
|||||||
|
package drivers
|
||||||
|
|
||||||
|
import "git.aiterp.net/lucifer/new-server/models"
|
||||||
|
|
||||||
|
type MapBasedDriverProvider struct {
|
||||||
|
Data map[models.DriverKind]models.Driver
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *MapBasedDriverProvider) Provide(kind models.DriverKind) (models.Driver, error) {
|
||||||
|
if m.Data[kind] == nil {
|
||||||
|
return nil, models.ErrUnknownDriver
|
||||||
|
}
|
||||||
|
|
||||||
|
return m.Data[kind], nil
|
||||||
|
}
|
||||||
|
|
||||||
+1
-1
@@ -21,7 +21,7 @@ type DriverKind string
|
|||||||
|
|
||||||
var (
|
var (
|
||||||
DTHue DriverKind = "Hue"
|
DTHue DriverKind = "Hue"
|
||||||
DTNanoLeaf DriverKind = "NanoLeaf"
|
DTNanoLeaf DriverKind = "Nanoleaf"
|
||||||
)
|
)
|
||||||
|
|
||||||
var ValidDriverKinds = []DriverKind{
|
var ValidDriverKinds = []DriverKind{
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ var ErrBadInput = errors.New("bad input")
|
|||||||
var ErrBadColor = errors.New("bad color")
|
var ErrBadColor = errors.New("bad color")
|
||||||
var ErrInternal = errors.New("internal")
|
var ErrInternal = errors.New("internal")
|
||||||
var ErrUnknownColorFormat = errors.New("unknown color format")
|
var ErrUnknownColorFormat = errors.New("unknown color format")
|
||||||
|
var ErrUnknownDriver = errors.New("unknown driver")
|
||||||
|
|
||||||
var ErrMissingToken = errors.New("driver is missing authentication information")
|
var ErrMissingToken = errors.New("driver is missing authentication information")
|
||||||
var ErrIncorrectToken = errors.New("driver is not accepting authentication information")
|
var ErrIncorrectToken = errors.New("driver is not accepting authentication information")
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
$color-background: #111
|
$color-background: #111
|
||||||
$color-foreground: rgb(238, 238, 238)
|
$color-foreground: rgb(204, 204, 204)
|
||||||
$color-foreground-dark: rgba(238, 238, 238, 0.05)
|
$color-foreground-dark: rgba(238, 238, 238, 0.05)
|
||||||
|
|
||||||
body, html
|
body, html
|
||||||
|
|||||||
Reference in New Issue
Block a user