5c894efd0e
* Add PerformJoin template * Try roomserver perform join * Send correct server name to FS API * Pass through content, try to handle multiple server names * Fix local server checks * Don't refer to non-existent error * Add directory lookups of aliases * Remove unneeded parameters * Don't repeat join events into the roomserver * Unmarshal the content, that would help * Check if the user is already in the room in the fedeationapi too * Return incompatible room version error * Use Membership, don't try more servers than needed * Review comments, make FS API take list of servernames, dedupe them, break out of loop properly on success * Tweaks
148 lines
3.9 KiB
Go
148 lines
3.9 KiB
Go
package api
|
|
|
|
import (
|
|
"context"
|
|
|
|
fsAPI "github.com/matrix-org/dendrite/federationsender/api"
|
|
)
|
|
|
|
// RoomserverInputAPI is used to write events to the room server.
|
|
type RoomserverInternalAPI interface {
|
|
// needed to avoid chicken and egg scenario when setting up the
|
|
// interdependencies between the roomserver and other input APIs
|
|
SetFederationSenderAPI(fsAPI fsAPI.FederationSenderInternalAPI)
|
|
|
|
InputRoomEvents(
|
|
ctx context.Context,
|
|
request *InputRoomEventsRequest,
|
|
response *InputRoomEventsResponse,
|
|
) error
|
|
|
|
PerformJoin(
|
|
ctx context.Context,
|
|
req *PerformJoinRequest,
|
|
res *PerformJoinResponse,
|
|
) error
|
|
|
|
// Query the latest events and state for a room from the room server.
|
|
QueryLatestEventsAndState(
|
|
ctx context.Context,
|
|
request *QueryLatestEventsAndStateRequest,
|
|
response *QueryLatestEventsAndStateResponse,
|
|
) error
|
|
|
|
// Query the state after a list of events in a room from the room server.
|
|
QueryStateAfterEvents(
|
|
ctx context.Context,
|
|
request *QueryStateAfterEventsRequest,
|
|
response *QueryStateAfterEventsResponse,
|
|
) error
|
|
|
|
// Query a list of events by event ID.
|
|
QueryEventsByID(
|
|
ctx context.Context,
|
|
request *QueryEventsByIDRequest,
|
|
response *QueryEventsByIDResponse,
|
|
) error
|
|
|
|
// Query the membership event for an user for a room.
|
|
QueryMembershipForUser(
|
|
ctx context.Context,
|
|
request *QueryMembershipForUserRequest,
|
|
response *QueryMembershipForUserResponse,
|
|
) error
|
|
|
|
// Query a list of membership events for a room
|
|
QueryMembershipsForRoom(
|
|
ctx context.Context,
|
|
request *QueryMembershipsForRoomRequest,
|
|
response *QueryMembershipsForRoomResponse,
|
|
) error
|
|
|
|
// Query a list of invite event senders for a user in a room.
|
|
QueryInvitesForUser(
|
|
ctx context.Context,
|
|
request *QueryInvitesForUserRequest,
|
|
response *QueryInvitesForUserResponse,
|
|
) error
|
|
|
|
// Query whether a server is allowed to see an event
|
|
QueryServerAllowedToSeeEvent(
|
|
ctx context.Context,
|
|
request *QueryServerAllowedToSeeEventRequest,
|
|
response *QueryServerAllowedToSeeEventResponse,
|
|
) error
|
|
|
|
// Query missing events for a room from roomserver
|
|
QueryMissingEvents(
|
|
ctx context.Context,
|
|
request *QueryMissingEventsRequest,
|
|
response *QueryMissingEventsResponse,
|
|
) error
|
|
|
|
// Query to get state and auth chain for a (potentially hypothetical) event.
|
|
// Takes lists of PrevEventIDs and AuthEventsIDs and uses them to calculate
|
|
// the state and auth chain to return.
|
|
QueryStateAndAuthChain(
|
|
ctx context.Context,
|
|
request *QueryStateAndAuthChainRequest,
|
|
response *QueryStateAndAuthChainResponse,
|
|
) error
|
|
|
|
// Query a given amount (or less) of events prior to a given set of events.
|
|
QueryBackfill(
|
|
ctx context.Context,
|
|
request *QueryBackfillRequest,
|
|
response *QueryBackfillResponse,
|
|
) error
|
|
|
|
// Asks for the default room version as preferred by the server.
|
|
QueryRoomVersionCapabilities(
|
|
ctx context.Context,
|
|
request *QueryRoomVersionCapabilitiesRequest,
|
|
response *QueryRoomVersionCapabilitiesResponse,
|
|
) error
|
|
|
|
// Asks for the room version for a given room.
|
|
QueryRoomVersionForRoom(
|
|
ctx context.Context,
|
|
request *QueryRoomVersionForRoomRequest,
|
|
response *QueryRoomVersionForRoomResponse,
|
|
) error
|
|
|
|
// Set a room alias
|
|
SetRoomAlias(
|
|
ctx context.Context,
|
|
req *SetRoomAliasRequest,
|
|
response *SetRoomAliasResponse,
|
|
) error
|
|
|
|
// Get the room ID for an alias
|
|
GetRoomIDForAlias(
|
|
ctx context.Context,
|
|
req *GetRoomIDForAliasRequest,
|
|
response *GetRoomIDForAliasResponse,
|
|
) error
|
|
|
|
// Get all known aliases for a room ID
|
|
GetAliasesForRoomID(
|
|
ctx context.Context,
|
|
req *GetAliasesForRoomIDRequest,
|
|
response *GetAliasesForRoomIDResponse,
|
|
) error
|
|
|
|
// Get the user ID of the creator of an alias
|
|
GetCreatorIDForAlias(
|
|
ctx context.Context,
|
|
req *GetCreatorIDForAliasRequest,
|
|
response *GetCreatorIDForAliasResponse,
|
|
) error
|
|
|
|
// Remove a room alias
|
|
RemoveRoomAlias(
|
|
ctx context.Context,
|
|
req *RemoveRoomAliasRequest,
|
|
response *RemoveRoomAliasResponse,
|
|
) error
|
|
}
|