aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkegsay <kegan@matrix.org>2022-05-05 09:56:03 +0100
committerGitHub <noreply@github.com>2022-05-05 09:56:03 +0100
commitd86dcbef66dad344bc38c58762a9634ff126d5c7 (patch)
treea8c95692a64a6303e02911c9a2d6b00fec3c84c8
parent3c940c428d529476b6fa2cbf1ba28d53ec011584 (diff)
syncapi: define specific interfaces for internal HTTP communications (#2416)
* syncapi: use finer-grained interfaces when making the syncapi * Use specific interfaces for syncapi-roomserver interactions * Define query access token api for shared http auth code
-rw-r--r--clientapi/auth/auth.go2
-rw-r--r--cmd/dendrite-polylith-multi/personalities/syncapi.go2
-rw-r--r--internal/httputil/httpapi.go2
-rw-r--r--keyserver/api/api.go9
-rw-r--r--roomserver/api/api.go81
-rw-r--r--setup/monolith.go2
-rw-r--r--syncapi/consumers/keychange.go7
-rw-r--r--syncapi/consumers/presence.go4
-rw-r--r--syncapi/consumers/roomserver.go4
-rw-r--r--syncapi/internal/keychange.go8
-rw-r--r--syncapi/routing/context.go2
-rw-r--r--syncapi/routing/messages.go9
-rw-r--r--syncapi/routing/routing.go6
-rw-r--r--syncapi/streams/stream_accountdata.go2
-rw-r--r--syncapi/streams/stream_devicelist.go4
-rw-r--r--syncapi/streams/stream_pdu.go2
-rw-r--r--syncapi/streams/streams.go4
-rw-r--r--syncapi/sync/requestpool.go10
-rw-r--r--syncapi/syncapi.go12
-rw-r--r--userapi/api/api.go14
20 files changed, 95 insertions, 91 deletions
diff --git a/clientapi/auth/auth.go b/clientapi/auth/auth.go
index 575c5377..93345f4b 100644
--- a/clientapi/auth/auth.go
+++ b/clientapi/auth/auth.go
@@ -51,7 +51,7 @@ type AccountDatabase interface {
// Note: For an AS user, AS dummy device is returned.
// On failure returns an JSON error response which can be sent to the client.
func VerifyUserFromRequest(
- req *http.Request, userAPI api.UserInternalAPI,
+ req *http.Request, userAPI api.QueryAcccessTokenAPI,
) (*api.Device, *util.JSONResponse) {
// Try to find the Application Service user
token, err := ExtractAccessToken(req)
diff --git a/cmd/dendrite-polylith-multi/personalities/syncapi.go b/cmd/dendrite-polylith-multi/personalities/syncapi.go
index 2245b9b5..41637fe1 100644
--- a/cmd/dendrite-polylith-multi/personalities/syncapi.go
+++ b/cmd/dendrite-polylith-multi/personalities/syncapi.go
@@ -22,7 +22,6 @@ import (
func SyncAPI(base *basepkg.BaseDendrite, cfg *config.Dendrite) {
userAPI := base.UserAPIClient()
- federation := base.CreateFederationClient()
rsAPI := base.RoomserverHTTPClient()
@@ -30,7 +29,6 @@ func SyncAPI(base *basepkg.BaseDendrite, cfg *config.Dendrite) {
base,
userAPI, rsAPI,
base.KeyServerHTTPClient(),
- federation,
)
base.SetupAndServeHTTP(
diff --git a/internal/httputil/httpapi.go b/internal/httputil/httpapi.go
index 5fcacd2a..3a818cc5 100644
--- a/internal/httputil/httpapi.go
+++ b/internal/httputil/httpapi.go
@@ -49,7 +49,7 @@ type BasicAuth struct {
// MakeAuthAPI turns a util.JSONRequestHandler function into an http.Handler which authenticates the request.
func MakeAuthAPI(
- metricsName string, userAPI userapi.UserInternalAPI,
+ metricsName string, userAPI userapi.QueryAcccessTokenAPI,
f func(*http.Request, *userapi.Device) util.JSONResponse,
) http.Handler {
h := func(req *http.Request) util.JSONResponse {
diff --git a/keyserver/api/api.go b/keyserver/api/api.go
index 429617b1..ce651ba4 100644
--- a/keyserver/api/api.go
+++ b/keyserver/api/api.go
@@ -27,6 +27,7 @@ import (
)
type KeyInternalAPI interface {
+ SyncKeyAPI
// SetUserAPI assigns a user API to query when extracting device names.
SetUserAPI(i userapi.UserInternalAPI)
// InputDeviceListUpdate from a federated server EDU
@@ -38,12 +39,16 @@ type KeyInternalAPI interface {
PerformUploadDeviceKeys(ctx context.Context, req *PerformUploadDeviceKeysRequest, res *PerformUploadDeviceKeysResponse)
PerformUploadDeviceSignatures(ctx context.Context, req *PerformUploadDeviceSignaturesRequest, res *PerformUploadDeviceSignaturesResponse)
QueryKeys(ctx context.Context, req *QueryKeysRequest, res *QueryKeysResponse)
- QueryKeyChanges(ctx context.Context, req *QueryKeyChangesRequest, res *QueryKeyChangesResponse)
- QueryOneTimeKeys(ctx context.Context, req *QueryOneTimeKeysRequest, res *QueryOneTimeKeysResponse)
QueryDeviceMessages(ctx context.Context, req *QueryDeviceMessagesRequest, res *QueryDeviceMessagesResponse)
QuerySignatures(ctx context.Context, req *QuerySignaturesRequest, res *QuerySignaturesResponse)
}
+// API functions required by the syncapi
+type SyncKeyAPI interface {
+ QueryKeyChanges(ctx context.Context, req *QueryKeyChangesRequest, res *QueryKeyChangesResponse)
+ QueryOneTimeKeys(ctx context.Context, req *QueryOneTimeKeysRequest, res *QueryOneTimeKeysResponse)
+}
+
// KeyError is returned if there was a problem performing/querying the server
type KeyError struct {
Err string `json:"error"`
diff --git a/roomserver/api/api.go b/roomserver/api/api.go
index f0ca8a61..2e4ec3ff 100644
--- a/roomserver/api/api.go
+++ b/roomserver/api/api.go
@@ -12,6 +12,8 @@ import (
// RoomserverInputAPI is used to write events to the room server.
type RoomserverInternalAPI interface {
+ SyncRoomserverAPI
+
// needed to avoid chicken and egg scenario when setting up the
// interdependencies between the roomserver and other input APIs
SetFederationAPI(fsAPI fsAPI.FederationInternalAPI, keyRing *gomatrixserverlib.KeyRing)
@@ -78,34 +80,6 @@ type RoomserverInternalAPI interface {
res *QueryPublishedRoomsResponse,
) 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,
@@ -157,22 +131,11 @@ type RoomserverInternalAPI interface {
QueryCurrentState(ctx context.Context, req *QueryCurrentStateRequest, res *QueryCurrentStateResponse) error
// QueryRoomsForUser retrieves a list of room IDs matching the given query.
QueryRoomsForUser(ctx context.Context, req *QueryRoomsForUserRequest, res *QueryRoomsForUserResponse) error
- // QueryBulkStateContent does a bulk query for state event content in the given rooms.
- QueryBulkStateContent(ctx context.Context, req *QueryBulkStateContentRequest, res *QueryBulkStateContentResponse) error
- // QuerySharedUsers returns a list of users who share at least 1 room in common with the given user.
- QuerySharedUsers(ctx context.Context, req *QuerySharedUsersRequest, res *QuerySharedUsersResponse) error
// QueryKnownUsers returns a list of users that we know about from our joined rooms.
QueryKnownUsers(ctx context.Context, req *QueryKnownUsersRequest, res *QueryKnownUsersResponse) error
// QueryServerBannedFromRoom returns whether a server is banned from a room by server ACLs.
QueryServerBannedFromRoom(ctx context.Context, req *QueryServerBannedFromRoomRequest, res *QueryServerBannedFromRoomResponse) error
- // Query a given amount (or less) of events prior to a given set of events.
- PerformBackfill(
- ctx context.Context,
- request *PerformBackfillRequest,
- response *PerformBackfillResponse,
- ) error
-
// PerformForget forgets a rooms history for a specific user
PerformForget(ctx context.Context, req *PerformForgetRequest, resp *PerformForgetResponse) error
@@ -228,3 +191,43 @@ type RoomserverInternalAPI interface {
response *RemoveRoomAliasResponse,
) error
}
+
+// API functions required by the syncapi
+type SyncRoomserverAPI interface {
+ // Query the latest events and state for a room from the room server.
+ QueryLatestEventsAndState(
+ ctx context.Context,
+ request *QueryLatestEventsAndStateRequest,
+ response *QueryLatestEventsAndStateResponse,
+ ) error
+ // QueryBulkStateContent does a bulk query for state event content in the given rooms.
+ QueryBulkStateContent(ctx context.Context, req *QueryBulkStateContentRequest, res *QueryBulkStateContentResponse) error
+ // QuerySharedUsers returns a list of users who share at least 1 room in common with the given user.
+ QuerySharedUsers(ctx context.Context, req *QuerySharedUsersRequest, res *QuerySharedUsersResponse) 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 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 given amount (or less) of events prior to a given set of events.
+ PerformBackfill(
+ ctx context.Context,
+ request *PerformBackfillRequest,
+ response *PerformBackfillResponse,
+ ) error
+}
diff --git a/setup/monolith.go b/setup/monolith.go
index 23bd2fb5..e033c14d 100644
--- a/setup/monolith.go
+++ b/setup/monolith.go
@@ -69,6 +69,6 @@ func (m *Monolith) AddAllPublicRoutes(base *base.BaseDendrite) {
base, m.UserAPI, m.Client,
)
syncapi.AddPublicRoutes(
- base, m.UserAPI, m.RoomserverAPI, m.KeyAPI, m.FedClient,
+ base, m.UserAPI, m.RoomserverAPI, m.KeyAPI,
)
}
diff --git a/syncapi/consumers/keychange.go b/syncapi/consumers/keychange.go
index e806f76e..c8d88dda 100644
--- a/syncapi/consumers/keychange.go
+++ b/syncapi/consumers/keychange.go
@@ -42,8 +42,7 @@ type OutputKeyChangeEventConsumer struct {
notifier *notifier.Notifier
stream types.StreamProvider
serverName gomatrixserverlib.ServerName // our server name
- rsAPI roomserverAPI.RoomserverInternalAPI
- keyAPI api.KeyInternalAPI
+ rsAPI roomserverAPI.SyncRoomserverAPI
}
// NewOutputKeyChangeEventConsumer creates a new OutputKeyChangeEventConsumer.
@@ -53,8 +52,7 @@ func NewOutputKeyChangeEventConsumer(
cfg *config.SyncAPI,
topic string,
js nats.JetStreamContext,
- keyAPI api.KeyInternalAPI,
- rsAPI roomserverAPI.RoomserverInternalAPI,
+ rsAPI roomserverAPI.SyncRoomserverAPI,
store storage.Database,
notifier *notifier.Notifier,
stream types.StreamProvider,
@@ -66,7 +64,6 @@ func NewOutputKeyChangeEventConsumer(
topic: topic,
db: store,
serverName: cfg.Matrix.ServerName,
- keyAPI: keyAPI,
rsAPI: rsAPI,
notifier: notifier,
stream: stream,
diff --git a/syncapi/consumers/presence.go b/syncapi/consumers/presence.go
index 6bcca48f..388c08ff 100644
--- a/syncapi/consumers/presence.go
+++ b/syncapi/consumers/presence.go
@@ -41,7 +41,7 @@ type PresenceConsumer struct {
db storage.Database
stream types.StreamProvider
notifier *notifier.Notifier
- deviceAPI api.UserDeviceAPI
+ deviceAPI api.SyncUserAPI
cfg *config.SyncAPI
}
@@ -55,7 +55,7 @@ func NewPresenceConsumer(
db storage.Database,
notifier *notifier.Notifier,
stream types.StreamProvider,
- deviceAPI api.UserDeviceAPI,
+ deviceAPI api.SyncUserAPI,
) *PresenceConsumer {
return &PresenceConsumer{
ctx: process.Context(),
diff --git a/syncapi/consumers/roomserver.go b/syncapi/consumers/roomserver.go
index 5bdc0fad..7712c840 100644
--- a/syncapi/consumers/roomserver.go
+++ b/syncapi/consumers/roomserver.go
@@ -38,7 +38,7 @@ import (
type OutputRoomEventConsumer struct {
ctx context.Context
cfg *config.SyncAPI
- rsAPI api.RoomserverInternalAPI
+ rsAPI api.SyncRoomserverAPI
jetstream nats.JetStreamContext
durable string
topic string
@@ -58,7 +58,7 @@ func NewOutputRoomEventConsumer(
notifier *notifier.Notifier,
pduStream types.StreamProvider,
inviteStream types.StreamProvider,
- rsAPI api.RoomserverInternalAPI,
+ rsAPI api.SyncRoomserverAPI,
producer *producers.UserAPIStreamEventProducer,
) *OutputRoomEventConsumer {
return &OutputRoomEventConsumer{
diff --git a/syncapi/internal/keychange.go b/syncapi/internal/keychange.go
index dc4acd8d..d96718d2 100644
--- a/syncapi/internal/keychange.go
+++ b/syncapi/internal/keychange.go
@@ -29,7 +29,7 @@ import (
const DeviceListLogName = "dl"
// DeviceOTKCounts adds one-time key counts to the /sync response
-func DeviceOTKCounts(ctx context.Context, keyAPI keyapi.KeyInternalAPI, userID, deviceID string, res *types.Response) error {
+func DeviceOTKCounts(ctx context.Context, keyAPI keyapi.SyncKeyAPI, userID, deviceID string, res *types.Response) error {
var queryRes keyapi.QueryOneTimeKeysResponse
keyAPI.QueryOneTimeKeys(ctx, &keyapi.QueryOneTimeKeysRequest{
UserID: userID,
@@ -46,7 +46,7 @@ func DeviceOTKCounts(ctx context.Context, keyAPI keyapi.KeyInternalAPI, userID,
// was filled in, else false if there are no new device list changes because there is nothing to catch up on. The response MUST
// be already filled in with join/leave information.
func DeviceListCatchup(
- ctx context.Context, keyAPI keyapi.KeyInternalAPI, rsAPI roomserverAPI.RoomserverInternalAPI,
+ ctx context.Context, keyAPI keyapi.SyncKeyAPI, rsAPI roomserverAPI.SyncRoomserverAPI,
userID string, res *types.Response, from, to types.StreamPosition,
) (newPos types.StreamPosition, hasNew bool, err error) {
@@ -130,7 +130,7 @@ func DeviceListCatchup(
// TrackChangedUsers calculates the values of device_lists.changed|left in the /sync response.
func TrackChangedUsers(
- ctx context.Context, rsAPI roomserverAPI.RoomserverInternalAPI, userID string, newlyJoinedRooms, newlyLeftRooms []string,
+ ctx context.Context, rsAPI roomserverAPI.SyncRoomserverAPI, userID string, newlyJoinedRooms, newlyLeftRooms []string,
) (changed, left []string, err error) {
// process leaves first, then joins afterwards so if we join/leave/join/leave we err on the side of including users.
@@ -216,7 +216,7 @@ func TrackChangedUsers(
}
func filterSharedUsers(
- ctx context.Context, rsAPI roomserverAPI.RoomserverInternalAPI, userID string, usersWithChangedKeys []string,
+ ctx context.Context, rsAPI roomserverAPI.SyncRoomserverAPI, userID string, usersWithChangedKeys []string,
) (map[string]int, []string) {
var result []string
var sharedUsersRes roomserverAPI.QuerySharedUsersResponse
diff --git a/syncapi/routing/context.go b/syncapi/routing/context.go
index 17215b66..f5f4b2dd 100644
--- a/syncapi/routing/context.go
+++ b/syncapi/routing/context.go
@@ -42,7 +42,7 @@ type ContextRespsonse struct {
func Context(
req *http.Request, device *userapi.Device,
- rsAPI roomserver.RoomserverInternalAPI,
+ rsAPI roomserver.SyncRoomserverAPI,
syncDB storage.Database,
roomID, eventID string,
lazyLoadCache *caching.LazyLoadCache,
diff --git a/syncapi/routing/messages.go b/syncapi/routing/messages.go
index f34901bf..f19dfaed 100644
--- a/syncapi/routing/messages.go
+++ b/syncapi/routing/messages.go
@@ -36,8 +36,7 @@ import (
type messagesReq struct {
ctx context.Context
db storage.Database
- rsAPI api.RoomserverInternalAPI
- federation *gomatrixserverlib.FederationClient
+ rsAPI api.SyncRoomserverAPI
cfg *config.SyncAPI
roomID string
from *types.TopologyToken
@@ -61,8 +60,7 @@ type messagesResp struct {
// See: https://matrix.org/docs/spec/client_server/latest.html#get-matrix-client-r0-rooms-roomid-messages
func OnIncomingMessagesRequest(
req *http.Request, db storage.Database, roomID string, device *userapi.Device,
- federation *gomatrixserverlib.FederationClient,
- rsAPI api.RoomserverInternalAPI,
+ rsAPI api.SyncRoomserverAPI,
cfg *config.SyncAPI,
srp *sync.RequestPool,
lazyLoadCache *caching.LazyLoadCache,
@@ -180,7 +178,6 @@ func OnIncomingMessagesRequest(
ctx: req.Context(),
db: db,
rsAPI: rsAPI,
- federation: federation,
cfg: cfg,
roomID: roomID,
from: &from,
@@ -247,7 +244,7 @@ func OnIncomingMessagesRequest(
}
}
-func checkIsRoomForgotten(ctx context.Context, roomID, userID string, rsAPI api.RoomserverInternalAPI) (bool, error) {
+func checkIsRoomForgotten(ctx context.Context, roomID, userID string, rsAPI api.SyncRoomserverAPI) (bool, error) {
req := api.QueryMembershipForUserRequest{
RoomID: roomID,
UserID: userID,
diff --git a/syncapi/routing/routing.go b/syncapi/routing/routing.go
index 4102cf07..245ee5b6 100644
--- a/syncapi/routing/routing.go
+++ b/syncapi/routing/routing.go
@@ -36,8 +36,8 @@ import (
// nolint: gocyclo
func Setup(
csMux *mux.Router, srp *sync.RequestPool, syncDB storage.Database,
- userAPI userapi.UserInternalAPI, federation *gomatrixserverlib.FederationClient,
- rsAPI api.RoomserverInternalAPI,
+ userAPI userapi.SyncUserAPI,
+ rsAPI api.SyncRoomserverAPI,
cfg *config.SyncAPI,
lazyLoadCache *caching.LazyLoadCache,
) {
@@ -53,7 +53,7 @@ func Setup(
if err != nil {
return util.ErrorResponse(err)
}
- return OnIncomingMessagesRequest(req, syncDB, vars["roomID"], device, federation, rsAPI, cfg, srp, lazyLoadCache)
+ return OnIncomingMessagesRequest(req, syncDB, vars["roomID"], device, rsAPI, cfg, srp, lazyLoadCache)
})).Methods(http.MethodGet, http.MethodOptions)
v3mux.Handle("/user/{userId}/filter",
diff --git a/syncapi/streams/stream_accountdata.go b/syncapi/streams/stream_accountdata.go
index 2cddbcf0..9c19b846 100644
--- a/syncapi/streams/stream_accountdata.go
+++ b/syncapi/streams/stream_accountdata.go
@@ -10,7 +10,7 @@ import (
type AccountDataStreamProvider struct {
StreamProvider
- userAPI userapi.UserInternalAPI
+ userAPI userapi.SyncUserAPI
}
func (p *AccountDataStreamProvider) Setup() {
diff --git a/syncapi/streams/stream_devicelist.go b/syncapi/streams/stream_devicelist.go
index 6ff8a7fd..f4209951 100644
--- a/syncapi/streams/stream_devicelist.go
+++ b/syncapi/streams/stream_devicelist.go
@@ -11,8 +11,8 @@ import (
type DeviceListStreamProvider struct {
StreamProvider
- rsAPI api.RoomserverInternalAPI
- keyAPI keyapi.KeyInternalAPI
+ rsAPI api.SyncRoomserverAPI
+ keyAPI keyapi.SyncKeyAPI
}
func (p *DeviceListStreamProvider) CompleteSync(
diff --git a/syncapi/streams/stream_pdu.go b/syncapi/streams/stream_pdu.go
index 0d033095..f774a1af 100644
--- a/syncapi/streams/stream_pdu.go
+++ b/syncapi/streams/stream_pdu.go
@@ -33,7 +33,7 @@ type PDUStreamProvider struct {
workers atomic.Int32
// userID+deviceID -> lazy loading cache
lazyLoadCache *caching.LazyLoadCache
- rsAPI roomserverAPI.RoomserverInternalAPI
+ rsAPI roomserverAPI.SyncRoomserverAPI
}
func (p *PDUStreamProvider) worker() {
diff --git a/syncapi/streams/streams.go b/syncapi/streams/streams.go
index a18a0cc4..af2a0387 100644
--- a/syncapi/streams/streams.go
+++ b/syncapi/streams/streams.go
@@ -25,8 +25,8 @@ type Streams struct {
}
func NewSyncStreamProviders(
- d storage.Database, userAPI userapi.UserInternalAPI,
- rsAPI rsapi.RoomserverInternalAPI, keyAPI keyapi.KeyInternalAPI,
+ d storage.Database, userAPI userapi.SyncUserAPI,
+ rsAPI rsapi.SyncRoomserverAPI, keyAPI keyapi.SyncKeyAPI,
eduCache *caching.EDUCache, lazyLoadCache *caching.LazyLoadCache, notifier *notifier.Notifier,
) *Streams {
streams := &Streams{
diff --git a/syncapi/sync/requestpool.go b/syncapi/sync/requestpool.go
index f8e502d2..99d1e40c 100644
--- a/syncapi/sync/requestpool.go
+++ b/syncapi/sync/requestpool.go
@@ -45,9 +45,9 @@ import (
type RequestPool struct {
db storage.Database
cfg *config.SyncAPI
- userAPI userapi.UserInternalAPI
- keyAPI keyapi.KeyInternalAPI
- rsAPI roomserverAPI.RoomserverInternalAPI
+ userAPI userapi.SyncUserAPI
+ keyAPI keyapi.SyncKeyAPI
+ rsAPI roomserverAPI.SyncRoomserverAPI
lastseen *sync.Map
presence *sync.Map
streams *streams.Streams
@@ -62,8 +62,8 @@ type PresencePublisher interface {
// NewRequestPool makes a new RequestPool
func NewRequestPool(
db storage.Database, cfg *config.SyncAPI,
- userAPI userapi.UserInternalAPI, keyAPI keyapi.KeyInternalAPI,
- rsAPI roomserverAPI.RoomserverInternalAPI,
+ userAPI userapi.SyncUserAPI, keyAPI keyapi.SyncKeyAPI,
+ rsAPI roomserverAPI.SyncRoomserverAPI,
streams *streams.Streams, notifier *notifier.Notifier,
producer PresencePublisher,
) *RequestPool {
diff --git a/syncapi/syncapi.go b/syncapi/syncapi.go
index d8becb6e..686e2044 100644
--- a/syncapi/syncapi.go
+++ b/syncapi/syncapi.go
@@ -25,7 +25,6 @@ import (
"github.com/matrix-org/dendrite/setup/base"
"github.com/matrix-org/dendrite/setup/jetstream"
userapi "github.com/matrix-org/dendrite/userapi/api"
- "github.com/matrix-org/gomatrixserverlib"
"github.com/matrix-org/dendrite/syncapi/consumers"
"github.com/matrix-org/dendrite/syncapi/notifier"
@@ -40,10 +39,9 @@ import (
// component.
func AddPublicRoutes(
base *base.BaseDendrite,
- userAPI userapi.UserInternalAPI,
- rsAPI api.RoomserverInternalAPI,
- keyAPI keyapi.KeyInternalAPI,
- federation *gomatrixserverlib.FederationClient,
+ userAPI userapi.SyncUserAPI,
+ rsAPI api.SyncRoomserverAPI,
+ keyAPI keyapi.SyncKeyAPI,
) {
cfg := &base.Cfg.SyncAPI
@@ -85,7 +83,7 @@ func AddPublicRoutes(
keyChangeConsumer := consumers.NewOutputKeyChangeEventConsumer(
base.ProcessContext, cfg, cfg.Matrix.JetStream.Prefixed(jetstream.OutputKeyChangeEvent),
- js, keyAPI, rsAPI, syncDB, notifier,
+ js, rsAPI, syncDB, notifier,
streams.DeviceListStreamProvider,
)
if err = keyChangeConsumer.Start(); err != nil {
@@ -148,6 +146,6 @@ func AddPublicRoutes(
routing.Setup(
base.PublicClientAPIMux, requestPool, syncDB, userAPI,
- federation, rsAPI, cfg, lazyLoadCache,
+ rsAPI, cfg, lazyLoadCache,
)
}
diff --git a/userapi/api/api.go b/userapi/api/api.go
index 6ab68fa0..6f00fe44 100644
--- a/userapi/api/api.go
+++ b/userapi/api/api.go
@@ -31,7 +31,8 @@ type UserInternalAPI interface {
UserRegisterAPI
UserAccountAPI
UserThreePIDAPI
- UserDeviceAPI
+ QueryAcccessTokenAPI
+ SyncUserAPI
InputAccountData(ctx context.Context, req *InputAccountDataRequest, res *InputAccountDataResponse) error
@@ -42,15 +43,20 @@ type UserInternalAPI interface {
PerformPushRulesPut(ctx context.Context, req *PerformPushRulesPutRequest, res *struct{}) error
QueryKeyBackup(ctx context.Context, req *QueryKeyBackupRequest, res *QueryKeyBackupResponse)
- QueryAccessToken(ctx context.Context, req *QueryAccessTokenRequest, res *QueryAccessTokenResponse) error
- QueryAccountData(ctx context.Context, req *QueryAccountDataRequest, res *QueryAccountDataResponse) error
+
QueryOpenIDToken(ctx context.Context, req *QueryOpenIDTokenRequest, res *QueryOpenIDTokenResponse) error
QueryPushers(ctx context.Context, req *QueryPushersRequest, res *QueryPushersResponse) error
QueryPushRules(ctx context.Context, req *QueryPushRulesRequest, res *QueryPushRulesResponse) error
QueryNotifications(ctx context.Context, req *QueryNotificationsRequest, res *QueryNotificationsResponse) error
}
-type UserDeviceAPI interface {
+type QueryAcccessTokenAPI interface {
+ QueryAccessToken(ctx context.Context, req *QueryAccessTokenRequest, res *QueryAccessTokenResponse) error
+}
+
+type SyncUserAPI interface {
+ QueryAccountData(ctx context.Context, req *QueryAccountDataRequest, res *QueryAccountDataResponse) error
+ QueryAccessToken(ctx context.Context, req *QueryAccessTokenRequest, res *QueryAccessTokenResponse) error
PerformDeviceDeletion(ctx context.Context, req *PerformDeviceDeletionRequest, res *PerformDeviceDeletionResponse) error
PerformLastSeenUpdate(ctx context.Context, req *PerformLastSeenUpdateRequest, res *PerformLastSeenUpdateResponse) error
PerformDeviceUpdate(ctx context.Context, req *PerformDeviceUpdateRequest, res *PerformDeviceUpdateResponse) error