diff options
author | Kegsay <kegan@matrix.org> | 2020-06-16 17:05:38 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-06-16 17:05:38 +0100 |
commit | 83391da0e04dda7a52589ee7ec6df2b615571894 (patch) | |
tree | 0a0ffcc5b7209600eaf042ee317a0681e0bd7f59 /userapi/internal/api.go | |
parent | 1942928ee5e0398beed45c8b1c63d7b13e89b646 (diff) |
Make syncapi use userapi (#1136)
* Make syncapi use userapi
* Unbreak things
* Fix tests
* Lint
Diffstat (limited to 'userapi/internal/api.go')
-rw-r--r-- | userapi/internal/api.go | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/userapi/internal/api.go b/userapi/internal/api.go index d8dec11a..6e737b81 100644 --- a/userapi/internal/api.go +++ b/userapi/internal/api.go @@ -73,6 +73,39 @@ func (a *UserInternalAPI) QueryDevices(ctx context.Context, req *api.QueryDevice return nil } +func (a *UserInternalAPI) QueryAccountData(ctx context.Context, req *api.QueryAccountDataRequest, res *api.QueryAccountDataResponse) error { + local, domain, err := gomatrixserverlib.SplitID('@', req.UserID) + if err != nil { + return err + } + if domain != a.ServerName { + return fmt.Errorf("cannot query account data of remote users: got %s want %s", domain, a.ServerName) + } + if req.DataType != "" { + var event *gomatrixserverlib.ClientEvent + event, err = a.AccountDB.GetAccountDataByType(ctx, local, req.RoomID, req.DataType) + if err != nil { + return err + } + if event != nil { + if req.RoomID != "" { + res.RoomAccountData = make(map[string][]gomatrixserverlib.ClientEvent) + res.RoomAccountData[req.RoomID] = []gomatrixserverlib.ClientEvent{*event} + } else { + res.GlobalAccountData = append(res.GlobalAccountData, *event) + } + } + return nil + } + global, rooms, err := a.AccountDB.GetAccountData(ctx, local) + if err != nil { + return err + } + res.RoomAccountData = rooms + res.GlobalAccountData = global + return nil +} + func (a *UserInternalAPI) QueryAccessToken(ctx context.Context, req *api.QueryAccessTokenRequest, res *api.QueryAccessTokenResponse) error { if req.AppServiceUserID != "" { appServiceDevice, err := a.queryAppServiceToken(ctx, req.AccessToken, req.AppServiceUserID) |