mirror of
https://github.com/matrix-org/dendrite.git
synced 2026-01-10 15:43:09 -06:00
Remove unnecessary error handling for invites
This commit is contained in:
parent
29759ea4db
commit
05e5837800
|
|
@ -42,73 +42,59 @@ func InviteV3(
|
||||||
) util.JSONResponse {
|
) util.JSONResponse {
|
||||||
inviteReq := fclient.InviteV3Request{}
|
inviteReq := fclient.InviteV3Request{}
|
||||||
err := json.Unmarshal(request.Content(), &inviteReq)
|
err := json.Unmarshal(request.Content(), &inviteReq)
|
||||||
switch e := err.(type) {
|
if err != nil {
|
||||||
case gomatrixserverlib.UnsupportedRoomVersionError:
|
|
||||||
return util.JSONResponse{
|
|
||||||
Code: http.StatusBadRequest,
|
|
||||||
JSON: spec.UnsupportedRoomVersion(
|
|
||||||
fmt.Sprintf("Room version %q is not supported by this server.", e.Version),
|
|
||||||
),
|
|
||||||
}
|
|
||||||
case gomatrixserverlib.BadJSONError:
|
|
||||||
return util.JSONResponse{
|
return util.JSONResponse{
|
||||||
Code: http.StatusBadRequest,
|
Code: http.StatusBadRequest,
|
||||||
JSON: spec.BadJSON(err.Error()),
|
JSON: spec.BadJSON(err.Error()),
|
||||||
}
|
}
|
||||||
case nil:
|
}
|
||||||
if !cfg.Matrix.IsLocalServerName(invitedUser.Domain()) {
|
if !cfg.Matrix.IsLocalServerName(invitedUser.Domain()) {
|
||||||
return util.JSONResponse{
|
|
||||||
Code: http.StatusBadRequest,
|
|
||||||
JSON: spec.InvalidParam("The invited user domain does not belong to this server"),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
input := gomatrixserverlib.HandleInviteV3Input{
|
|
||||||
HandleInviteInput: gomatrixserverlib.HandleInviteInput{
|
|
||||||
RoomVersion: inviteReq.RoomVersion(),
|
|
||||||
RoomID: roomID,
|
|
||||||
InvitedUser: invitedUser,
|
|
||||||
KeyID: cfg.Matrix.KeyID,
|
|
||||||
PrivateKey: cfg.Matrix.PrivateKey,
|
|
||||||
Verifier: keys,
|
|
||||||
RoomQuerier: rsAPI,
|
|
||||||
MembershipQuerier: &api.MembershipQuerier{Roomserver: rsAPI},
|
|
||||||
StateQuerier: rsAPI.StateQuerier(),
|
|
||||||
InviteEvent: nil,
|
|
||||||
StrippedState: inviteReq.InviteRoomState(),
|
|
||||||
UserIDQuerier: func(roomID spec.RoomID, senderID spec.SenderID) (*spec.UserID, error) {
|
|
||||||
return rsAPI.QueryUserIDForSender(httpReq.Context(), roomID, senderID)
|
|
||||||
},
|
|
||||||
},
|
|
||||||
InviteProtoEvent: inviteReq.Event(),
|
|
||||||
GetOrCreateSenderID: func(ctx context.Context, userID spec.UserID, roomID spec.RoomID, roomVersion string) (spec.SenderID, ed25519.PrivateKey, error) {
|
|
||||||
// assign a roomNID, otherwise we can't create a private key for the user
|
|
||||||
_, nidErr := rsAPI.AssignRoomNID(ctx, roomID, gomatrixserverlib.RoomVersion(roomVersion))
|
|
||||||
if nidErr != nil {
|
|
||||||
return "", nil, nidErr
|
|
||||||
}
|
|
||||||
key, keyErr := rsAPI.GetOrCreateUserRoomPrivateKey(ctx, userID, roomID)
|
|
||||||
if keyErr != nil {
|
|
||||||
return "", nil, keyErr
|
|
||||||
}
|
|
||||||
|
|
||||||
return spec.SenderIDFromPseudoIDKey(key), key, nil
|
|
||||||
},
|
|
||||||
}
|
|
||||||
event, jsonErr := handleInviteV3(httpReq.Context(), input, rsAPI)
|
|
||||||
if jsonErr != nil {
|
|
||||||
return *jsonErr
|
|
||||||
}
|
|
||||||
return util.JSONResponse{
|
|
||||||
Code: http.StatusOK,
|
|
||||||
JSON: fclient.RespInviteV2{Event: event.JSON()},
|
|
||||||
}
|
|
||||||
default:
|
|
||||||
return util.JSONResponse{
|
return util.JSONResponse{
|
||||||
Code: http.StatusBadRequest,
|
Code: http.StatusBadRequest,
|
||||||
JSON: spec.NotJSON("The request body could not be decoded into an invite request. " + err.Error()),
|
JSON: spec.InvalidParam("The invited user domain does not belong to this server"),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
input := gomatrixserverlib.HandleInviteV3Input{
|
||||||
|
HandleInviteInput: gomatrixserverlib.HandleInviteInput{
|
||||||
|
RoomVersion: inviteReq.RoomVersion(),
|
||||||
|
RoomID: roomID,
|
||||||
|
InvitedUser: invitedUser,
|
||||||
|
KeyID: cfg.Matrix.KeyID,
|
||||||
|
PrivateKey: cfg.Matrix.PrivateKey,
|
||||||
|
Verifier: keys,
|
||||||
|
RoomQuerier: rsAPI,
|
||||||
|
MembershipQuerier: &api.MembershipQuerier{Roomserver: rsAPI},
|
||||||
|
StateQuerier: rsAPI.StateQuerier(),
|
||||||
|
InviteEvent: nil,
|
||||||
|
StrippedState: inviteReq.InviteRoomState(),
|
||||||
|
UserIDQuerier: func(roomID spec.RoomID, senderID spec.SenderID) (*spec.UserID, error) {
|
||||||
|
return rsAPI.QueryUserIDForSender(httpReq.Context(), roomID, senderID)
|
||||||
|
},
|
||||||
|
},
|
||||||
|
InviteProtoEvent: inviteReq.Event(),
|
||||||
|
GetOrCreateSenderID: func(ctx context.Context, userID spec.UserID, roomID spec.RoomID, roomVersion string) (spec.SenderID, ed25519.PrivateKey, error) {
|
||||||
|
// assign a roomNID, otherwise we can't create a private key for the user
|
||||||
|
_, nidErr := rsAPI.AssignRoomNID(ctx, roomID, gomatrixserverlib.RoomVersion(roomVersion))
|
||||||
|
if nidErr != nil {
|
||||||
|
return "", nil, nidErr
|
||||||
|
}
|
||||||
|
key, keyErr := rsAPI.GetOrCreateUserRoomPrivateKey(ctx, userID, roomID)
|
||||||
|
if keyErr != nil {
|
||||||
|
return "", nil, keyErr
|
||||||
|
}
|
||||||
|
|
||||||
|
return spec.SenderIDFromPseudoIDKey(key), key, nil
|
||||||
|
},
|
||||||
|
}
|
||||||
|
event, jsonErr := handleInviteV3(httpReq.Context(), input, rsAPI)
|
||||||
|
if jsonErr != nil {
|
||||||
|
return *jsonErr
|
||||||
|
}
|
||||||
|
return util.JSONResponse{
|
||||||
|
Code: http.StatusOK,
|
||||||
|
JSON: fclient.RespInviteV2{Event: event.JSON()},
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// InviteV2 implements /_matrix/federation/v2/invite/{roomID}/{eventID}
|
// InviteV2 implements /_matrix/federation/v2/invite/{roomID}/{eventID}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue