52 lines
1.3 KiB
Go
52 lines
1.3 KiB
Go
|
package appservice
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
"strings"
|
||
|
|
||
|
log "github.com/sirupsen/logrus"
|
||
|
|
||
|
. "git.deuxfleurs.fr/Deuxfleurs/easybridge/connector"
|
||
|
)
|
||
|
|
||
|
const EASYBRIDGE_SYSTEM_PROTOCOL string = "✯◡✯"
|
||
|
|
||
|
func ezbrMxId() string {
|
||
|
return fmt.Sprintf("@%s:%s", registration.SenderLocalpart, config.MatrixDomain)
|
||
|
}
|
||
|
|
||
|
func ezbrSystemRoom(user_mx_id string) (string, error) {
|
||
|
return dbGetMxPmRoom(EASYBRIDGE_SYSTEM_PROTOCOL, UserID("Easybridge"), ezbrMxId(), user_mx_id, "easybridge")
|
||
|
}
|
||
|
|
||
|
func ezbrSystemSend(user_mx_id string, msg string) {
|
||
|
mx_room_id, err := ezbrSystemRoom(user_mx_id)
|
||
|
if err == nil {
|
||
|
err = mx.SendMessageAs(mx_room_id, "m.text", msg, ezbrMxId())
|
||
|
}
|
||
|
if err != nil {
|
||
|
log.Warnf("(%s) %s", user_mx_id, msg)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func ezbrSystemSendf(user_mx_id string, format string, args ...interface{}) {
|
||
|
ezbrSystemSend(user_mx_id, fmt.Sprintf(format, args...))
|
||
|
}
|
||
|
|
||
|
// ----
|
||
|
|
||
|
func roomAlias(protocol string, id RoomID) string {
|
||
|
return fmt.Sprintf("_ezbr__%s__%s", safeStringForId(string(id)), protocol)
|
||
|
}
|
||
|
|
||
|
func userMxId(protocol string, id UserID) string {
|
||
|
return fmt.Sprintf("_ezbr__%s__%s", safeStringForId(string(id)), protocol)
|
||
|
}
|
||
|
|
||
|
func safeStringForId(in string) string {
|
||
|
id2 := strings.ReplaceAll(in, "#", "")
|
||
|
id2 = strings.ReplaceAll(id2, "@", "__")
|
||
|
id2 = strings.ReplaceAll(id2, ":", "_")
|
||
|
return id2
|
||
|
}
|