aboutsummaryrefslogtreecommitdiff
path: root/appservice/api/query.go
diff options
context:
space:
mode:
Diffstat (limited to 'appservice/api/query.go')
-rw-r--r--appservice/api/query.go36
1 files changed, 10 insertions, 26 deletions
diff --git a/appservice/api/query.go b/appservice/api/query.go
index eb567b2e..472266d9 100644
--- a/appservice/api/query.go
+++ b/appservice/api/query.go
@@ -22,8 +22,6 @@ import (
"encoding/json"
"errors"
- "github.com/matrix-org/gomatrixserverlib"
-
"github.com/matrix-org/dendrite/clientapi/auth/authtypes"
userapi "github.com/matrix-org/dendrite/userapi/api"
)
@@ -150,6 +148,10 @@ type ASLocationResponse struct {
Fields json.RawMessage `json:"fields"`
}
+// ErrProfileNotExists is returned when trying to lookup a user's profile that
+// doesn't exist locally.
+var ErrProfileNotExists = errors.New("no known profile for given user ID")
+
// RetrieveUserProfile is a wrapper that queries both the local database and
// application services for a given user's profile
// TODO: Remove this, it's called from federationapi and clientapi but is a pure function
@@ -157,25 +159,11 @@ func RetrieveUserProfile(
ctx context.Context,
userID string,
asAPI AppServiceInternalAPI,
- profileAPI userapi.ClientUserAPI,
+ profileAPI userapi.ProfileAPI,
) (*authtypes.Profile, error) {
- localpart, _, err := gomatrixserverlib.SplitID('@', userID)
- if err != nil {
- return nil, err
- }
-
// Try to query the user from the local database
- res := &userapi.QueryProfileResponse{}
- err = profileAPI.QueryProfile(ctx, &userapi.QueryProfileRequest{UserID: userID}, res)
- if err != nil {
- return nil, err
- }
- profile := &authtypes.Profile{
- Localpart: localpart,
- DisplayName: res.DisplayName,
- AvatarURL: res.AvatarURL,
- }
- if res.UserExists {
+ profile, err := profileAPI.QueryProfile(ctx, userID)
+ if err == nil {
return profile, nil
}
@@ -188,19 +176,15 @@ func RetrieveUserProfile(
// If no user exists, return
if !userResp.UserIDExists {
- return nil, errors.New("no known profile for given user ID")
+ return nil, ErrProfileNotExists
}
// Try to query the user from the local database again
- err = profileAPI.QueryProfile(ctx, &userapi.QueryProfileRequest{UserID: userID}, res)
+ profile, err = profileAPI.QueryProfile(ctx, userID)
if err != nil {
return nil, err
}
// profile should not be nil at this point
- return &authtypes.Profile{
- Localpart: localpart,
- DisplayName: res.DisplayName,
- AvatarURL: res.AvatarURL,
- }, nil
+ return profile, nil
}