forked from genofire/unified-push-xmpp
66 lines
1.6 KiB
Go
66 lines
1.6 KiB
Go
|
package main
|
||
|
|
||
|
import (
|
||
|
"github.com/godbus/dbus/v5"
|
||
|
"github.com/bdlm/log"
|
||
|
)
|
||
|
|
||
|
|
||
|
type Distributor struct {
|
||
|
dbus *dbus.Conn
|
||
|
}
|
||
|
|
||
|
func NewDistributor(dbus *dbus.Conn) *Distributor {
|
||
|
return &Distributor{
|
||
|
dbus: dbus,
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func (d Distributor) Register(name, token string) (thing, reason string, err *dbus.Error) {
|
||
|
logger:= log.WithFields(map[string]interface{}{
|
||
|
"name": name,
|
||
|
"token": token,
|
||
|
})
|
||
|
|
||
|
endpoint := "https://up.chat.sum7.eu/UP?appid="+name+"&token="+token
|
||
|
|
||
|
c := NewConector(d.dbus, name)
|
||
|
if err := c.NewEndpoint(token, endpoint); err != nil {
|
||
|
logger.Errorf("distributor-register error on NewEndpoint: %v", err)
|
||
|
return "REGISTRATION_FAILED", err.Error(), nil
|
||
|
}
|
||
|
|
||
|
logger.Info("distributor-register")
|
||
|
return "NEW_ENDPOINT", "", nil
|
||
|
}
|
||
|
|
||
|
func (d Distributor) Unregister(token string) *dbus.Error {
|
||
|
log.WithFields(map[string]interface{}{
|
||
|
"token": token,
|
||
|
}).Info("distributor-unregister")
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
type Connector struct {
|
||
|
obj dbus.BusObject
|
||
|
}
|
||
|
|
||
|
func NewConector(dbus *dbus.Conn,appid string) *Connector {
|
||
|
obj := dbus.Object(appid, DBUSConnectorPath)
|
||
|
return &Connector{
|
||
|
obj: obj,
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func (c Connector) Message(token, contents, id string) error {
|
||
|
return c.obj.Call(DBUSConnectorInterface+".Message", dbus.FlagNoReplyExpected, token, contents, id).Err
|
||
|
}
|
||
|
|
||
|
func (c Connector) NewEndpoint(token, endpoint string) error {
|
||
|
return c.obj.Call(DBUSConnectorInterface+".NewEndpoint", dbus.FlagNoReplyExpected, token, endpoint).Err
|
||
|
}
|
||
|
|
||
|
func (c Connector) Unregistered(token string) error {
|
||
|
return c.obj.Call(DBUSConnectorInterface+".Unregistered", dbus.FlagNoReplyExpected, token).Err
|
||
|
}
|