From d791a70ade4a427229d6010da667e590dcb34eb6 Mon Sep 17 00:00:00 2001 From: Tulir Asokan Date: Wed, 14 Aug 2024 14:16:09 +0300 Subject: [PATCH] federation: add query profile and directory wrappers --- federation/client.go | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/federation/client.go b/federation/client.go index d49ba560..098df095 100644 --- a/federation/client.go +++ b/federation/client.go @@ -198,6 +198,28 @@ func (c *Client) TimestampToEvent(ctx context.Context, serverName string, roomID return } +func (c *Client) QueryProfile(ctx context.Context, serverName string, userID id.UserID) (resp *mautrix.RespUserProfile, err error) { + err = c.Query(ctx, serverName, "profile", url.Values{"user_id": {userID.String()}}, &resp) + return +} + +func (c *Client) QueryDirectory(ctx context.Context, serverName string, roomAlias id.RoomAlias) (resp *mautrix.RespAliasResolve, err error) { + err = c.Query(ctx, serverName, "directory", url.Values{"room_alias": {roomAlias.String()}}, &resp) + return +} + +func (c *Client) Query(ctx context.Context, serverName, queryType string, queryParams url.Values, respStruct any) (err error) { + _, _, err = c.MakeFullRequest(ctx, RequestParams{ + ServerName: serverName, + Method: http.MethodGet, + Path: URLPath{"v1", "query", queryType}, + Query: queryParams, + Authenticate: true, + ResponseJSON: respStruct, + }) + return +} + type RespOpenIDUserInfo struct { Sub id.UserID `json:"sub"` }