pygomx/libmxclient/mxapi/discover.go

36 lines
810 B
Go

// Copyright (C) 2026 saces@c-base.org
// SPDX-License-Identifier: AGPL-3.0-only
package mxapi
import (
"context"
"maunium.net/go/mautrix"
"maunium.net/go/mautrix/id"
)
type DiscoverInfo struct {
Homeserver string `json:"homeserver"`
UserID id.UserID `json:"user_id"`
LoginName string `json:"login_name"`
}
// 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
}
wk, err := mautrix.DiscoverClientAPI(context.Background(), tmp_di.Homeserver)
if err != nil {
return
}
if wk != nil {
tmp_di.Homeserver = wk.Homeserver.BaseURL
}
tmp_di.UserID = userID
di = &tmp_di
return
}