aboutsummaryrefslogtreecommitdiff
path: root/clientapi
diff options
context:
space:
mode:
authorKegsay <kegan@matrix.org>2020-08-27 18:53:40 +0100
committerGitHub <noreply@github.com>2020-08-27 18:53:40 +0100
commit9af2f5f1f253a821cec660ef477c274d5cd13953 (patch)
tree998ff675429077b8db11142f15cb2fe1417f0194 /clientapi
parentc0f28845f8715b13b4df8728909c7a55e0a2c63a (diff)
Remove device DB from clientapi (#1352)
* Remove device DB from clientapi * Remove device DB from startup configuration It's all an impl detail now in user API
Diffstat (limited to 'clientapi')
-rw-r--r--clientapi/clientapi.go4
-rw-r--r--clientapi/routing/device.go50
-rw-r--r--clientapi/routing/logout.go33
-rw-r--r--clientapi/routing/routing.go10
4 files changed, 44 insertions, 53 deletions
diff --git a/clientapi/clientapi.go b/clientapi/clientapi.go
index 1a4307c1..fe6789fc 100644
--- a/clientapi/clientapi.go
+++ b/clientapi/clientapi.go
@@ -30,7 +30,6 @@ import (
roomserverAPI "github.com/matrix-org/dendrite/roomserver/api"
userapi "github.com/matrix-org/dendrite/userapi/api"
"github.com/matrix-org/dendrite/userapi/storage/accounts"
- "github.com/matrix-org/dendrite/userapi/storage/devices"
"github.com/matrix-org/gomatrixserverlib"
)
@@ -39,7 +38,6 @@ func AddPublicRoutes(
router *mux.Router,
cfg *config.ClientAPI,
producer sarama.SyncProducer,
- deviceDB devices.Database,
accountsDB accounts.Database,
federation *gomatrixserverlib.FederationClient,
rsAPI roomserverAPI.RoomserverInternalAPI,
@@ -59,7 +57,7 @@ func AddPublicRoutes(
routing.Setup(
router, cfg, eduInputAPI, rsAPI, asAPI,
- accountsDB, deviceDB, userAPI, federation,
+ accountsDB, userAPI, federation,
syncProducer, transactionsCache, fsAPI, stateAPI, keyAPI, extRoomsProvider,
)
}
diff --git a/clientapi/routing/device.go b/clientapi/routing/device.go
index d0b3bdbe..56886d57 100644
--- a/clientapi/routing/device.go
+++ b/clientapi/routing/device.go
@@ -15,7 +15,6 @@
package routing
import (
- "database/sql"
"encoding/json"
"io/ioutil"
"net/http"
@@ -23,7 +22,7 @@ import (
"github.com/matrix-org/dendrite/clientapi/auth"
"github.com/matrix-org/dendrite/clientapi/jsonerror"
"github.com/matrix-org/dendrite/userapi/api"
- "github.com/matrix-org/dendrite/userapi/storage/devices"
+ userapi "github.com/matrix-org/dendrite/userapi/api"
"github.com/matrix-org/gomatrixserverlib"
"github.com/matrix-org/util"
)
@@ -50,57 +49,56 @@ type devicesDeleteJSON struct {
// GetDeviceByID handles /devices/{deviceID}
func GetDeviceByID(
- req *http.Request, deviceDB devices.Database, device *api.Device,
+ req *http.Request, userAPI userapi.UserInternalAPI, device *api.Device,
deviceID string,
) util.JSONResponse {
- localpart, _, err := gomatrixserverlib.SplitID('@', device.UserID)
+ var queryRes userapi.QueryDevicesResponse
+ err := userAPI.QueryDevices(req.Context(), &userapi.QueryDevicesRequest{
+ UserID: device.UserID,
+ }, &queryRes)
if err != nil {
- util.GetLogger(req.Context()).WithError(err).Error("gomatrixserverlib.SplitID failed")
+ util.GetLogger(req.Context()).WithError(err).Error("QueryDevices failed")
return jsonerror.InternalServerError()
}
-
- ctx := req.Context()
- dev, err := deviceDB.GetDeviceByID(ctx, localpart, deviceID)
- if err == sql.ErrNoRows {
+ var targetDevice *userapi.Device
+ for _, device := range queryRes.Devices {
+ if device.ID == deviceID {
+ targetDevice = &device
+ break
+ }
+ }
+ if targetDevice == nil {
return util.JSONResponse{
Code: http.StatusNotFound,
JSON: jsonerror.NotFound("Unknown device"),
}
- } else if err != nil {
- util.GetLogger(req.Context()).WithError(err).Error("deviceDB.GetDeviceByID failed")
- return jsonerror.InternalServerError()
}
return util.JSONResponse{
Code: http.StatusOK,
JSON: deviceJSON{
- DeviceID: dev.ID,
- DisplayName: dev.DisplayName,
+ DeviceID: targetDevice.ID,
+ DisplayName: targetDevice.DisplayName,
},
}
}
// GetDevicesByLocalpart handles /devices
func GetDevicesByLocalpart(
- req *http.Request, deviceDB devices.Database, device *api.Device,
+ req *http.Request, userAPI userapi.UserInternalAPI, device *api.Device,
) util.JSONResponse {
- localpart, _, err := gomatrixserverlib.SplitID('@', device.UserID)
- if err != nil {
- util.GetLogger(req.Context()).WithError(err).Error("gomatrixserverlib.SplitID failed")
- return jsonerror.InternalServerError()
- }
-
- ctx := req.Context()
- deviceList, err := deviceDB.GetDevicesByLocalpart(ctx, localpart)
-
+ var queryRes userapi.QueryDevicesResponse
+ err := userAPI.QueryDevices(req.Context(), &userapi.QueryDevicesRequest{
+ UserID: device.UserID,
+ }, &queryRes)
if err != nil {
- util.GetLogger(req.Context()).WithError(err).Error("deviceDB.GetDevicesByLocalpart failed")
+ util.GetLogger(req.Context()).WithError(err).Error("QueryDevices failed")
return jsonerror.InternalServerError()
}
res := devicesJSON{}
- for _, dev := range deviceList {
+ for _, dev := range queryRes.Devices {
res.Devices = append(res.Devices, deviceJSON{
DeviceID: dev.ID,
DisplayName: dev.DisplayName,
diff --git a/clientapi/routing/logout.go b/clientapi/routing/logout.go
index 3ce47169..cb300e9f 100644
--- a/clientapi/routing/logout.go
+++ b/clientapi/routing/logout.go
@@ -19,23 +19,21 @@ import (
"github.com/matrix-org/dendrite/clientapi/jsonerror"
"github.com/matrix-org/dendrite/userapi/api"
- "github.com/matrix-org/dendrite/userapi/storage/devices"
- "github.com/matrix-org/gomatrixserverlib"
+ userapi "github.com/matrix-org/dendrite/userapi/api"
"github.com/matrix-org/util"
)
// Logout handles POST /logout
func Logout(
- req *http.Request, deviceDB devices.Database, device *api.Device,
+ req *http.Request, userAPI userapi.UserInternalAPI, device *api.Device,
) util.JSONResponse {
- localpart, _, err := gomatrixserverlib.SplitID('@', device.UserID)
+ var performRes userapi.PerformDeviceDeletionResponse
+ err := userAPI.PerformDeviceDeletion(req.Context(), &userapi.PerformDeviceDeletionRequest{
+ UserID: device.UserID,
+ DeviceIDs: []string{device.ID},
+ }, &performRes)
if err != nil {
- util.GetLogger(req.Context()).WithError(err).Error("gomatrixserverlib.SplitID failed")
- return jsonerror.InternalServerError()
- }
-
- if err := deviceDB.RemoveDevice(req.Context(), device.ID, localpart); err != nil {
- util.GetLogger(req.Context()).WithError(err).Error("deviceDB.RemoveDevice failed")
+ util.GetLogger(req.Context()).WithError(err).Error("PerformDeviceDeletion failed")
return jsonerror.InternalServerError()
}
@@ -47,16 +45,15 @@ func Logout(
// LogoutAll handles POST /logout/all
func LogoutAll(
- req *http.Request, deviceDB devices.Database, device *api.Device,
+ req *http.Request, userAPI userapi.UserInternalAPI, device *api.Device,
) util.JSONResponse {
- localpart, _, err := gomatrixserverlib.SplitID('@', device.UserID)
+ var performRes userapi.PerformDeviceDeletionResponse
+ err := userAPI.PerformDeviceDeletion(req.Context(), &userapi.PerformDeviceDeletionRequest{
+ UserID: device.UserID,
+ DeviceIDs: nil,
+ }, &performRes)
if err != nil {
- util.GetLogger(req.Context()).WithError(err).Error("gomatrixserverlib.SplitID failed")
- return jsonerror.InternalServerError()
- }
-
- if err := deviceDB.RemoveAllDevices(req.Context(), localpart); err != nil {
- util.GetLogger(req.Context()).WithError(err).Error("deviceDB.RemoveAllDevices failed")
+ util.GetLogger(req.Context()).WithError(err).Error("PerformDeviceDeletion failed")
return jsonerror.InternalServerError()
}
diff --git a/clientapi/routing/routing.go b/clientapi/routing/routing.go
index c259e529..f2494dc7 100644
--- a/clientapi/routing/routing.go
+++ b/clientapi/routing/routing.go
@@ -35,7 +35,6 @@ import (
roomserverAPI "github.com/matrix-org/dendrite/roomserver/api"
userapi "github.com/matrix-org/dendrite/userapi/api"
"github.com/matrix-org/dendrite/userapi/storage/accounts"
- "github.com/matrix-org/dendrite/userapi/storage/devices"
"github.com/matrix-org/gomatrixserverlib"
"github.com/matrix-org/util"
)
@@ -52,7 +51,6 @@ func Setup(
rsAPI roomserverAPI.RoomserverInternalAPI,
asAPI appserviceAPI.AppServiceQueryAPI,
accountDB accounts.Database,
- deviceDB devices.Database,
userAPI userapi.UserInternalAPI,
federation *gomatrixserverlib.FederationClient,
syncProducer *producers.SyncAPIProducer,
@@ -322,13 +320,13 @@ func Setup(
r0mux.Handle("/logout",
httputil.MakeAuthAPI("logout", userAPI, func(req *http.Request, device *userapi.Device) util.JSONResponse {
- return Logout(req, deviceDB, device)
+ return Logout(req, userAPI, device)
}),
).Methods(http.MethodPost, http.MethodOptions)
r0mux.Handle("/logout/all",
httputil.MakeAuthAPI("logout", userAPI, func(req *http.Request, device *userapi.Device) util.JSONResponse {
- return LogoutAll(req, deviceDB, device)
+ return LogoutAll(req, userAPI, device)
}),
).Methods(http.MethodPost, http.MethodOptions)
@@ -632,7 +630,7 @@ func Setup(
r0mux.Handle("/devices",
httputil.MakeAuthAPI("get_devices", userAPI, func(req *http.Request, device *userapi.Device) util.JSONResponse {
- return GetDevicesByLocalpart(req, deviceDB, device)
+ return GetDevicesByLocalpart(req, userAPI, device)
}),
).Methods(http.MethodGet, http.MethodOptions)
@@ -642,7 +640,7 @@ func Setup(
if err != nil {
return util.ErrorResponse(err)
}
- return GetDeviceByID(req, deviceDB, device, vars["deviceID"])
+ return GetDeviceByID(req, userAPI, device, vars["deviceID"])
}),
).Methods(http.MethodGet, http.MethodOptions)