2026-03-11 22:06:44 +01:00
|
|
|
// Copyright (C) 2026 saces@c-base.org
|
|
|
|
|
// SPDX-License-Identifier: AGPL-3.0-only
|
2026-01-31 08:13:53 +01:00
|
|
|
package mxapi
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"context"
|
|
|
|
|
"encoding/json"
|
|
|
|
|
|
|
|
|
|
"maunium.net/go/mautrix"
|
|
|
|
|
"maunium.net/go/mautrix/id"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
func Discover(mxid string) (string, error) {
|
|
|
|
|
|
|
|
|
|
localpart, hs, err := id.UserID(mxid).ParseAndValidateRelaxed()
|
|
|
|
|
if err != nil {
|
|
|
|
|
return "", err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
wk, err := mautrix.DiscoverClientAPI(context.Background(), hs)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return "", err
|
|
|
|
|
}
|
|
|
|
|
if wk != nil {
|
|
|
|
|
hs = wk.Homeserver.BaseURL
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
out, err := json.Marshal(map[string]string{"mxid": mxid, "homeserver": hs, "loginname": localpart})
|
|
|
|
|
if err != nil {
|
|
|
|
|
return "", err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return string(out), nil
|
|
|
|
|
}
|