aboutsummaryrefslogtreecommitdiff
path: root/roomserver/api
diff options
context:
space:
mode:
authorTill <2353100+S7evinK@users.noreply.github.com>2023-04-28 17:46:01 +0200
committerGitHub <noreply@github.com>2023-04-28 17:46:01 +0200
commit6b47cf0f6ac9176b7e5a5bd6f357722ee0f5e384 (patch)
tree484c0133034ec1968e66d69b58c4f90486b1c5ae /roomserver/api
parent1432743d1ad669718e8f70f4dc1f29a9762e3fc4 (diff)
Remove `PerformError` (#3066)
This removes `PerformError`, which was needed when we still had polylith. This removes quite a bunch of ```go if err != nil { return err } if err := res.Error; err != nil { return err.JSONResponse() } ``` Hopefully can be read commit by commit. [skip ci]
Diffstat (limited to 'roomserver/api')
-rw-r--r--roomserver/api/api.go45
-rw-r--r--roomserver/api/perform.go154
2 files changed, 33 insertions, 166 deletions
diff --git a/roomserver/api/api.go b/roomserver/api/api.go
index ae67a3d7..2aaecbbf 100644
--- a/roomserver/api/api.go
+++ b/roomserver/api/api.go
@@ -11,6 +11,25 @@ import (
userapi "github.com/matrix-org/dendrite/userapi/api"
)
+// ErrInvalidID is an error returned if the userID is invalid
+type ErrInvalidID struct {
+ Err error
+}
+
+func (e ErrInvalidID) Error() string {
+ return e.Err.Error()
+}
+
+// ErrNotAllowed is an error returned if the user is not allowed
+// to execute some action (e.g. invite)
+type ErrNotAllowed struct {
+ Err error
+}
+
+func (e ErrNotAllowed) Error() string {
+ return e.Err.Error()
+}
+
// RoomserverInputAPI is used to write events to the room server.
type RoomserverInternalAPI interface {
SyncRoomserverAPI
@@ -150,17 +169,17 @@ type ClientRoomserverAPI interface {
GetAliasesForRoomID(ctx context.Context, req *GetAliasesForRoomIDRequest, res *GetAliasesForRoomIDResponse) error
// PerformRoomUpgrade upgrades a room to a newer version
- PerformRoomUpgrade(ctx context.Context, req *PerformRoomUpgradeRequest, resp *PerformRoomUpgradeResponse) error
- PerformAdminEvacuateRoom(ctx context.Context, req *PerformAdminEvacuateRoomRequest, res *PerformAdminEvacuateRoomResponse) error
- PerformAdminEvacuateUser(ctx context.Context, req *PerformAdminEvacuateUserRequest, res *PerformAdminEvacuateUserResponse) error
- PerformAdminPurgeRoom(ctx context.Context, req *PerformAdminPurgeRoomRequest, res *PerformAdminPurgeRoomResponse) error
- PerformAdminDownloadState(ctx context.Context, req *PerformAdminDownloadStateRequest, res *PerformAdminDownloadStateResponse) error
- PerformPeek(ctx context.Context, req *PerformPeekRequest, res *PerformPeekResponse) error
- PerformUnpeek(ctx context.Context, req *PerformUnpeekRequest, res *PerformUnpeekResponse) error
- PerformInvite(ctx context.Context, req *PerformInviteRequest, res *PerformInviteResponse) error
- PerformJoin(ctx context.Context, req *PerformJoinRequest, res *PerformJoinResponse) error
+ PerformRoomUpgrade(ctx context.Context, roomID, userID string, roomVersion gomatrixserverlib.RoomVersion) (newRoomID string, err error)
+ PerformAdminEvacuateRoom(ctx context.Context, roomID string) (affected []string, err error)
+ PerformAdminEvacuateUser(ctx context.Context, userID string) (affected []string, err error)
+ PerformAdminPurgeRoom(ctx context.Context, roomID string) error
+ PerformAdminDownloadState(ctx context.Context, roomID, userID string, serverName spec.ServerName) error
+ PerformPeek(ctx context.Context, req *PerformPeekRequest) (roomID string, err error)
+ PerformUnpeek(ctx context.Context, roomID, userID, deviceID string) error
+ PerformInvite(ctx context.Context, req *PerformInviteRequest) error
+ PerformJoin(ctx context.Context, req *PerformJoinRequest) (roomID string, joinedVia spec.ServerName, err error)
PerformLeave(ctx context.Context, req *PerformLeaveRequest, res *PerformLeaveResponse) error
- PerformPublish(ctx context.Context, req *PerformPublishRequest, res *PerformPublishResponse) error
+ PerformPublish(ctx context.Context, req *PerformPublishRequest) error
// PerformForget forgets a rooms history for a specific user
PerformForget(ctx context.Context, req *PerformForgetRequest, resp *PerformForgetResponse) error
SetRoomAlias(ctx context.Context, req *SetRoomAliasRequest, res *SetRoomAliasResponse) error
@@ -172,8 +191,8 @@ type UserRoomserverAPI interface {
KeyserverRoomserverAPI
QueryCurrentState(ctx context.Context, req *QueryCurrentStateRequest, res *QueryCurrentStateResponse) error
QueryMembershipsForRoom(ctx context.Context, req *QueryMembershipsForRoomRequest, res *QueryMembershipsForRoomResponse) error
- PerformAdminEvacuateUser(ctx context.Context, req *PerformAdminEvacuateUserRequest, res *PerformAdminEvacuateUserResponse) error
- PerformJoin(ctx context.Context, req *PerformJoinRequest, res *PerformJoinResponse) error
+ PerformAdminEvacuateUser(ctx context.Context, userID string) (affected []string, err error)
+ PerformJoin(ctx context.Context, req *PerformJoinRequest) (roomID string, joinedVia spec.ServerName, err error)
}
type FederationRoomserverAPI interface {
@@ -202,7 +221,7 @@ type FederationRoomserverAPI interface {
QueryRoomsForUser(ctx context.Context, req *QueryRoomsForUserRequest, res *QueryRoomsForUserResponse) error
QueryRestrictedJoinAllowed(ctx context.Context, req *QueryRestrictedJoinAllowedRequest, res *QueryRestrictedJoinAllowedResponse) error
PerformInboundPeek(ctx context.Context, req *PerformInboundPeekRequest, res *PerformInboundPeekResponse) error
- PerformInvite(ctx context.Context, req *PerformInviteRequest, res *PerformInviteResponse) error
+ PerformInvite(ctx context.Context, req *PerformInviteRequest) error
// Query a given amount (or less) of events prior to a given set of events.
PerformBackfill(ctx context.Context, req *PerformBackfillRequest, res *PerformBackfillResponse) error
}
diff --git a/roomserver/api/perform.go b/roomserver/api/perform.go
index 218a39a0..c6e5f5a1 100644
--- a/roomserver/api/perform.go
+++ b/roomserver/api/perform.go
@@ -1,81 +1,11 @@
package api
import (
- "encoding/json"
- "fmt"
- "net/http"
-
+ "github.com/matrix-org/dendrite/roomserver/types"
"github.com/matrix-org/gomatrixserverlib"
"github.com/matrix-org/gomatrixserverlib/fclient"
"github.com/matrix-org/gomatrixserverlib/spec"
"github.com/matrix-org/util"
-
- "github.com/matrix-org/dendrite/clientapi/jsonerror"
- "github.com/matrix-org/dendrite/roomserver/types"
-)
-
-type PerformErrorCode int
-
-type PerformError struct {
- Msg string
- RemoteCode int // remote HTTP status code, for PerformErrRemote
- Code PerformErrorCode
-}
-
-func (p *PerformError) Error() string {
- return fmt.Sprintf("%d : %s", p.Code, p.Msg)
-}
-
-// JSONResponse maps error codes to suitable HTTP error codes, defaulting to 500.
-func (p *PerformError) JSONResponse() util.JSONResponse {
- switch p.Code {
- case PerformErrorBadRequest:
- return util.JSONResponse{
- Code: http.StatusBadRequest,
- JSON: jsonerror.Unknown(p.Msg),
- }
- case PerformErrorNoRoom:
- return util.JSONResponse{
- Code: http.StatusNotFound,
- JSON: jsonerror.NotFound(p.Msg),
- }
- case PerformErrorNotAllowed:
- return util.JSONResponse{
- Code: http.StatusForbidden,
- JSON: jsonerror.Forbidden(p.Msg),
- }
- case PerformErrorNoOperation:
- return util.JSONResponse{
- Code: http.StatusForbidden,
- JSON: jsonerror.Forbidden(p.Msg),
- }
- case PerformErrRemote:
- // if the code is 0 then something bad happened and it isn't
- // a remote HTTP error being encapsulated, e.g network error to remote.
- if p.RemoteCode == 0 {
- return util.ErrorResponse(fmt.Errorf("%s", p.Msg))
- }
- return util.JSONResponse{
- Code: p.RemoteCode,
- // TODO: Should we assert this is in fact JSON? E.g gjson parse?
- JSON: json.RawMessage(p.Msg),
- }
- default:
- return util.ErrorResponse(p)
- }
-}
-
-const (
- // PerformErrorNotAllowed means the user is not allowed to invite/join/etc this room (e.g join_rule:invite or banned)
- PerformErrorNotAllowed PerformErrorCode = 1
- // PerformErrorBadRequest means the request was wrong in some way (invalid user ID, wrong server, etc)
- PerformErrorBadRequest PerformErrorCode = 2
- // PerformErrorNoRoom means that the room being joined doesn't exist.
- PerformErrorNoRoom PerformErrorCode = 3
- // PerformErrorNoOperation means that the request resulted in nothing happening e.g invite->invite or leave->leave.
- PerformErrorNoOperation PerformErrorCode = 4
- // PerformErrRemote means that the request failed and the PerformError.Msg is the raw remote JSON error response
- PerformErrRemote PerformErrorCode = 5
)
type PerformJoinRequest struct {
@@ -87,14 +17,6 @@ type PerformJoinRequest struct {
Unsigned map[string]interface{} `json:"unsigned"`
}
-type PerformJoinResponse struct {
- // The room ID, populated on success.
- RoomID string `json:"room_id"`
- JoinedVia spec.ServerName
- // If non-nil, the join request failed. Contains more information why it failed.
- Error *PerformError
-}
-
type PerformLeaveRequest struct {
RoomID string `json:"room_id"`
UserID string `json:"user_id"`
@@ -113,10 +35,6 @@ type PerformInviteRequest struct {
TransactionID *TransactionID `json:"transaction_id"`
}
-type PerformInviteResponse struct {
- Error *PerformError
-}
-
type PerformPeekRequest struct {
RoomIDOrAlias string `json:"room_id_or_alias"`
UserID string `json:"user_id"`
@@ -124,24 +42,6 @@ type PerformPeekRequest struct {
ServerNames []spec.ServerName `json:"server_names"`
}
-type PerformPeekResponse struct {
- // The room ID, populated on success.
- RoomID string `json:"room_id"`
- // If non-nil, the join request failed. Contains more information why it failed.
- Error *PerformError
-}
-
-type PerformUnpeekRequest struct {
- RoomID string `json:"room_id"`
- UserID string `json:"user_id"`
- DeviceID string `json:"device_id"`
-}
-
-type PerformUnpeekResponse struct {
- // If non-nil, the join request failed. Contains more information why it failed.
- Error *PerformError
-}
-
// PerformBackfillRequest is a request to PerformBackfill.
type PerformBackfillRequest struct {
// The room to backfill
@@ -180,11 +80,6 @@ type PerformPublishRequest struct {
NetworkID string
}
-type PerformPublishResponse struct {
- // If non-nil, the publish request failed. Contains more information why it failed.
- Error *PerformError
-}
-
type PerformInboundPeekRequest struct {
UserID string `json:"user_id"`
RoomID string `json:"room_id"`
@@ -214,50 +109,3 @@ type PerformForgetRequest struct {
}
type PerformForgetResponse struct{}
-
-type PerformRoomUpgradeRequest struct {
- RoomID string `json:"room_id"`
- UserID string `json:"user_id"`
- RoomVersion gomatrixserverlib.RoomVersion `json:"room_version"`
-}
-
-type PerformRoomUpgradeResponse struct {
- NewRoomID string
- Error *PerformError
-}
-
-type PerformAdminEvacuateRoomRequest struct {
- RoomID string `json:"room_id"`
-}
-
-type PerformAdminEvacuateRoomResponse struct {
- Affected []string `json:"affected"`
- Error *PerformError
-}
-
-type PerformAdminEvacuateUserRequest struct {
- UserID string `json:"user_id"`
-}
-
-type PerformAdminEvacuateUserResponse struct {
- Affected []string `json:"affected"`
- Error *PerformError
-}
-
-type PerformAdminPurgeRoomRequest struct {
- RoomID string `json:"room_id"`
-}
-
-type PerformAdminPurgeRoomResponse struct {
- Error *PerformError `json:"error,omitempty"`
-}
-
-type PerformAdminDownloadStateRequest struct {
- RoomID string `json:"room_id"`
- UserID string `json:"user_id"`
- ServerName spec.ServerName `json:"server_name"`
-}
-
-type PerformAdminDownloadStateResponse struct {
- Error *PerformError `json:"error,omitempty"`
-}