package appservice import ( "fmt" "unicode" 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 := "" for _, c := range in { if c == '@' { id2 += "__" } else if c == ':' { id2 += "_" } else if unicode.IsDigit(c) || unicode.IsLetter(c) { id2 += string(c) } } return id2 }