Filter retrieval from db

Signed-off-by: Thibaut CHARLES cromfr@gmail.com
This commit is contained in:
Crom (Thibaut CHARLES) 2018-01-12 18:27:24 +01:00
parent 7b80e6d51b
commit 350e6cbfed
No known key found for this signature in database
GPG key ID: 45A3D5F880B9E6D0
2 changed files with 17 additions and 5 deletions

View file

@ -17,13 +17,14 @@ package sync
import ( import (
"context" "context"
"encoding/json" "encoding/json"
"errors"
"net/http" "net/http"
"strconv" "strconv"
"time" "time"
"github.com/matrix-org/dendrite/clientapi/auth/authtypes" "github.com/matrix-org/dendrite/clientapi/auth/authtypes"
"github.com/matrix-org/dendrite/clientapi/auth/storage/accounts"
"github.com/matrix-org/gomatrix" "github.com/matrix-org/gomatrix"
"github.com/matrix-org/gomatrixserverlib"
"github.com/matrix-org/dendrite/syncapi/types" "github.com/matrix-org/dendrite/syncapi/types"
"github.com/matrix-org/util" "github.com/matrix-org/util"
@ -43,7 +44,7 @@ type syncRequest struct {
filter gomatrix.Filter filter gomatrix.Filter
} }
func newSyncRequest(req *http.Request, device authtypes.Device) (*syncRequest, error) { func newSyncRequest(req *http.Request, device authtypes.Device, accountDB *accounts.Database) (*syncRequest, error) {
timeout := getTimeout(req.URL.Query().Get("timeout")) timeout := getTimeout(req.URL.Query().Get("timeout"))
fullState := req.URL.Query().Get("full_state") fullState := req.URL.Query().Get("full_state")
wantFullState := fullState != "" && fullState != "false" wantFullState := fullState != "" && fullState != "false"
@ -68,8 +69,19 @@ func newSyncRequest(req *http.Request, device authtypes.Device) (*syncRequest, e
} }
} else { } else {
// Filter ID // Filter ID
// TODO retrieve filter from DB filterID, err := strconv.Atoi(filterStr)
return nil, errors.New("Filter ID retrieval not implemented") if err != nil {
return nil, err
}
localpart, _, err := gomatrixserverlib.SplitID('@', device.UserID)
if err != nil {
return nil, err
}
recvFilter, err := accountDB.GetFilter(req.Context(), localpart, strconv.Itoa(filterID)) //TODO GetFilter should receive filterID as an int
if err != nil {
return nil, err
}
filter = *recvFilter
} }
} }

View file

@ -48,7 +48,7 @@ func (rp *RequestPool) OnIncomingSyncRequest(req *http.Request, device *authtype
// Extract values from request // Extract values from request
logger := util.GetLogger(req.Context()) logger := util.GetLogger(req.Context())
userID := device.UserID userID := device.UserID
syncReq, err := newSyncRequest(req, *device) syncReq, err := newSyncRequest(req, *device, rp.accountDB)
if err != nil { if err != nil {
return util.JSONResponse{ return util.JSONResponse{
Code: 400, Code: 400,