api: rework discover & login

This commit is contained in:
saces 2026-04-29 00:35:12 +02:00
parent 5d02e28a51
commit 5c29242109
6 changed files with 82 additions and 92 deletions

View file

@ -4,31 +4,33 @@ package mxapi
import (
"context"
"encoding/json"
"maunium.net/go/mautrix"
"maunium.net/go/mautrix/id"
)
func Discover(mxid string) (string, error) {
type DiscoverInfo struct {
Homeserver string `json:"homeserver"`
UserID id.UserID `json:"user_id"`
LoginName string `json:"login_name"`
}
localpart, hs, err := id.UserID(mxid).ParseAndValidateRelaxed()
// Discover tries to guess the homeserver from the given matrix id
func Discover(userID id.UserID) (di *DiscoverInfo, err error) {
var tmp_di DiscoverInfo
tmp_di.LoginName, tmp_di.Homeserver, err = userID.ParseAndValidateRelaxed()
if err != nil {
return "", err
return
}
wk, err := mautrix.DiscoverClientAPI(context.Background(), hs)
wk, err := mautrix.DiscoverClientAPI(context.Background(), tmp_di.Homeserver)
if err != nil {
return "", err
return
}
if wk != nil {
hs = wk.Homeserver.BaseURL
tmp_di.Homeserver = 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
tmp_di.UserID = userID
di = &tmp_di
return
}