60 lines
1.3 KiB
Go
60 lines
1.3 KiB
Go
package groupmeext
|
|
|
|
import (
|
|
log "maunium.net/go/maulogger/v2"
|
|
|
|
"github.com/karmanyaahm/wray"
|
|
|
|
"github.com/beeper/groupme-lib"
|
|
)
|
|
|
|
type fayeLogger struct {
|
|
log.Logger
|
|
}
|
|
|
|
func (f fayeLogger) Debugf(i string, a ...interface{}) {
|
|
f.Logger.Debugfln(i, a...)
|
|
}
|
|
func (f fayeLogger) Errorf(i string, a ...interface{}) {
|
|
f.Logger.Errorfln(i, a...)
|
|
}
|
|
func (f fayeLogger) Warnf(i string, a ...interface{}) {
|
|
f.Logger.Warnfln(i, a...)
|
|
}
|
|
func (f fayeLogger) Infof(i string, a ...interface{}) {
|
|
f.Logger.Infofln(i, a...)
|
|
}
|
|
|
|
type FayeClient struct {
|
|
*wray.FayeClient
|
|
}
|
|
|
|
func (fc FayeClient) WaitSubscribe(channel string, msgChannel chan groupme.PushMessage) {
|
|
c_new := make(chan wray.Message)
|
|
fc.FayeClient.WaitSubscribe(channel, c_new)
|
|
//converting between types because channels don't support interfaces well
|
|
go func() {
|
|
for i := range c_new {
|
|
msgChannel <- i
|
|
}
|
|
}()
|
|
}
|
|
|
|
// for authentication, specific implementation will vary based on faye library
|
|
type AuthExt struct{}
|
|
|
|
func (a *AuthExt) In(wray.Message) {}
|
|
func (a *AuthExt) Out(m wray.Message) {
|
|
groupme.OutMsgProc(m)
|
|
}
|
|
|
|
func NewFayeClient(logger log.Logger) *FayeClient {
|
|
|
|
fc := &FayeClient{wray.NewFayeClient(groupme.PushServer)}
|
|
fc.SetLogger(fayeLogger{logger.Sub("FayeClient")})
|
|
fc.AddExtension(&AuthExt{})
|
|
fc.AddExtension(fc.FayeClient)
|
|
|
|
return fc
|
|
}
|