mirror of
https://github.com/Xevion/go-ha.git
synced 2025-12-09 06:07:19 -06:00
figured out how to get conn/ctx into users method calls - by passing a configured service object to their callback functions
This commit is contained in:
56
entitylistener.go
Normal file
56
entitylistener.go
Normal file
@@ -0,0 +1,56 @@
|
||||
package gomeassistant
|
||||
|
||||
type entityListener struct {
|
||||
entityId string
|
||||
callback entityListenerCallback
|
||||
fromState string
|
||||
toState string
|
||||
betweenStart hourMinute
|
||||
betweenEnd hourMinute
|
||||
}
|
||||
|
||||
type entityListenerCallback func(Service, Data)
|
||||
|
||||
type Data struct{}
|
||||
|
||||
func EntityListenerBuilder() elBuilder1 {
|
||||
return elBuilder1{entityListener{}}
|
||||
}
|
||||
|
||||
type elBuilder1 struct {
|
||||
entityListener
|
||||
}
|
||||
|
||||
func (b elBuilder1) EntityId(eid string) elBuilder2 {
|
||||
b.entityListener.entityId = eid
|
||||
return elBuilder2(b)
|
||||
}
|
||||
|
||||
type elBuilder2 struct {
|
||||
entityListener
|
||||
}
|
||||
|
||||
func (b elBuilder2) Call(callback entityListenerCallback) elBuilder3 {
|
||||
b.entityListener.callback = callback
|
||||
return elBuilder3(b)
|
||||
}
|
||||
|
||||
type elBuilder3 struct {
|
||||
entityListener
|
||||
}
|
||||
|
||||
func (b elBuilder3) OnlyBetween(start hourMinute, end hourMinute) elBuilder3 {
|
||||
b.entityListener.betweenStart = start
|
||||
b.entityListener.betweenEnd = end
|
||||
return b
|
||||
}
|
||||
|
||||
func (b elBuilder3) FromState(s string) elBuilder3 {
|
||||
b.entityListener.fromState = s
|
||||
return b
|
||||
}
|
||||
|
||||
func (b elBuilder3) ToState(s string) elBuilder3 {
|
||||
b.entityListener.toState = s
|
||||
return b
|
||||
}
|
||||
Reference in New Issue
Block a user