mirror of
https://github.com/hoernschen/dendrite.git
synced 2025-07-31 13:22:46 +00:00
Move GMSL client types to Dendrite (#3045)
GMSL is intended for Federation only. Sister PR to https://github.com/matrix-org/gomatrixserverlib/pull/357
This commit is contained in:
parent
985298cfc4
commit
3691423626
58 changed files with 692 additions and 234 deletions
|
@ -29,6 +29,7 @@ import (
|
|||
roomserver "github.com/matrix-org/dendrite/roomserver/api"
|
||||
"github.com/matrix-org/dendrite/syncapi/internal"
|
||||
"github.com/matrix-org/dendrite/syncapi/storage"
|
||||
"github.com/matrix-org/dendrite/syncapi/synctypes"
|
||||
"github.com/matrix-org/dendrite/syncapi/types"
|
||||
userapi "github.com/matrix-org/dendrite/userapi/api"
|
||||
"github.com/matrix-org/gomatrixserverlib"
|
||||
|
@ -37,12 +38,12 @@ import (
|
|||
)
|
||||
|
||||
type ContextRespsonse struct {
|
||||
End string `json:"end"`
|
||||
Event *gomatrixserverlib.ClientEvent `json:"event,omitempty"`
|
||||
EventsAfter []gomatrixserverlib.ClientEvent `json:"events_after,omitempty"`
|
||||
EventsBefore []gomatrixserverlib.ClientEvent `json:"events_before,omitempty"`
|
||||
Start string `json:"start"`
|
||||
State []gomatrixserverlib.ClientEvent `json:"state,omitempty"`
|
||||
End string `json:"end"`
|
||||
Event *synctypes.ClientEvent `json:"event,omitempty"`
|
||||
EventsAfter []synctypes.ClientEvent `json:"events_after,omitempty"`
|
||||
EventsBefore []synctypes.ClientEvent `json:"events_before,omitempty"`
|
||||
Start string `json:"start"`
|
||||
State []synctypes.ClientEvent `json:"state,omitempty"`
|
||||
}
|
||||
|
||||
func Context(
|
||||
|
@ -94,7 +95,7 @@ func Context(
|
|||
}
|
||||
}
|
||||
|
||||
stateFilter := gomatrixserverlib.StateFilter{
|
||||
stateFilter := synctypes.StateFilter{
|
||||
NotSenders: filter.NotSenders,
|
||||
NotTypes: filter.NotTypes,
|
||||
Senders: filter.Senders,
|
||||
|
@ -167,14 +168,14 @@ func Context(
|
|||
return jsonerror.InternalServerError()
|
||||
}
|
||||
|
||||
eventsBeforeClient := gomatrixserverlib.HeaderedToClientEvents(eventsBeforeFiltered, gomatrixserverlib.FormatAll)
|
||||
eventsAfterClient := gomatrixserverlib.HeaderedToClientEvents(eventsAfterFiltered, gomatrixserverlib.FormatAll)
|
||||
eventsBeforeClient := synctypes.HeaderedToClientEvents(eventsBeforeFiltered, synctypes.FormatAll)
|
||||
eventsAfterClient := synctypes.HeaderedToClientEvents(eventsAfterFiltered, synctypes.FormatAll)
|
||||
|
||||
newState := state
|
||||
if filter.LazyLoadMembers {
|
||||
allEvents := append(eventsBeforeFiltered, eventsAfterFiltered...)
|
||||
allEvents = append(allEvents, &requestedEvent)
|
||||
evs := gomatrixserverlib.HeaderedToClientEvents(allEvents, gomatrixserverlib.FormatAll)
|
||||
evs := synctypes.HeaderedToClientEvents(allEvents, synctypes.FormatAll)
|
||||
newState, err = applyLazyLoadMembers(ctx, device, snapshot, roomID, evs, lazyLoadCache)
|
||||
if err != nil {
|
||||
logrus.WithError(err).Error("unable to load membership events")
|
||||
|
@ -182,12 +183,12 @@ func Context(
|
|||
}
|
||||
}
|
||||
|
||||
ev := gomatrixserverlib.HeaderedToClientEvent(&requestedEvent, gomatrixserverlib.FormatAll)
|
||||
ev := synctypes.HeaderedToClientEvent(&requestedEvent, synctypes.FormatAll)
|
||||
response := ContextRespsonse{
|
||||
Event: &ev,
|
||||
EventsAfter: eventsAfterClient,
|
||||
EventsBefore: eventsBeforeClient,
|
||||
State: gomatrixserverlib.HeaderedToClientEvents(newState, gomatrixserverlib.FormatAll),
|
||||
State: synctypes.HeaderedToClientEvents(newState, synctypes.FormatAll),
|
||||
}
|
||||
|
||||
if len(response.State) > filter.Limit {
|
||||
|
@ -261,7 +262,7 @@ func applyLazyLoadMembers(
|
|||
device *userapi.Device,
|
||||
snapshot storage.DatabaseTransaction,
|
||||
roomID string,
|
||||
events []gomatrixserverlib.ClientEvent,
|
||||
events []synctypes.ClientEvent,
|
||||
lazyLoadCache caching.LazyLoadCache,
|
||||
) ([]*gomatrixserverlib.HeaderedEvent, error) {
|
||||
eventSenders := make(map[string]struct{})
|
||||
|
@ -280,7 +281,7 @@ func applyLazyLoadMembers(
|
|||
}
|
||||
|
||||
// Query missing membership events
|
||||
filter := gomatrixserverlib.DefaultStateFilter()
|
||||
filter := synctypes.DefaultStateFilter()
|
||||
filter.Senders = &wantUsers
|
||||
filter.Types = &[]string{gomatrixserverlib.MRoomMember}
|
||||
memberships, err := snapshot.GetStateEventsForRoom(ctx, roomID, &filter)
|
||||
|
@ -296,9 +297,9 @@ func applyLazyLoadMembers(
|
|||
return memberships, nil
|
||||
}
|
||||
|
||||
func parseRoomEventFilter(req *http.Request) (*gomatrixserverlib.RoomEventFilter, error) {
|
||||
func parseRoomEventFilter(req *http.Request) (*synctypes.RoomEventFilter, error) {
|
||||
// Default room filter
|
||||
filter := &gomatrixserverlib.RoomEventFilter{Limit: 10}
|
||||
filter := &synctypes.RoomEventFilter{Limit: 10}
|
||||
|
||||
l := req.URL.Query().Get("limit")
|
||||
f := req.URL.Query().Get("filter")
|
||||
|
|
|
@ -5,7 +5,7 @@ import (
|
|||
"reflect"
|
||||
"testing"
|
||||
|
||||
"github.com/matrix-org/gomatrixserverlib"
|
||||
"github.com/matrix-org/dendrite/syncapi/synctypes"
|
||||
)
|
||||
|
||||
func Test_parseContextParams(t *testing.T) {
|
||||
|
@ -19,28 +19,28 @@ func Test_parseContextParams(t *testing.T) {
|
|||
tests := []struct {
|
||||
name string
|
||||
req *http.Request
|
||||
wantFilter *gomatrixserverlib.RoomEventFilter
|
||||
wantFilter *synctypes.RoomEventFilter
|
||||
wantErr bool
|
||||
}{
|
||||
{
|
||||
name: "no params set",
|
||||
req: noParamsReq,
|
||||
wantFilter: &gomatrixserverlib.RoomEventFilter{Limit: 10},
|
||||
wantFilter: &synctypes.RoomEventFilter{Limit: 10},
|
||||
},
|
||||
{
|
||||
name: "limit 2 param set",
|
||||
req: limit2Req,
|
||||
wantFilter: &gomatrixserverlib.RoomEventFilter{Limit: 2},
|
||||
wantFilter: &synctypes.RoomEventFilter{Limit: 2},
|
||||
},
|
||||
{
|
||||
name: "limit 10000 param set",
|
||||
req: limit10000Req,
|
||||
wantFilter: &gomatrixserverlib.RoomEventFilter{Limit: 100},
|
||||
wantFilter: &synctypes.RoomEventFilter{Limit: 100},
|
||||
},
|
||||
{
|
||||
name: "filter lazy_load_members param set",
|
||||
req: lazyLoadReq,
|
||||
wantFilter: &gomatrixserverlib.RoomEventFilter{Limit: 2, LazyLoadMembers: true},
|
||||
wantFilter: &synctypes.RoomEventFilter{Limit: 2, LazyLoadMembers: true},
|
||||
},
|
||||
{
|
||||
name: "invalid limit req",
|
||||
|
|
|
@ -26,6 +26,7 @@ import (
|
|||
"github.com/matrix-org/dendrite/clientapi/jsonerror"
|
||||
"github.com/matrix-org/dendrite/syncapi/storage"
|
||||
"github.com/matrix-org/dendrite/syncapi/sync"
|
||||
"github.com/matrix-org/dendrite/syncapi/synctypes"
|
||||
"github.com/matrix-org/dendrite/userapi/api"
|
||||
)
|
||||
|
||||
|
@ -45,7 +46,7 @@ func GetFilter(
|
|||
return jsonerror.InternalServerError()
|
||||
}
|
||||
|
||||
filter := gomatrixserverlib.DefaultFilter()
|
||||
filter := synctypes.DefaultFilter()
|
||||
if err := syncDB.GetFilter(req.Context(), &filter, localpart, filterID); err != nil {
|
||||
//TODO better error handling. This error message is *probably* right,
|
||||
// but if there are obscure db errors, this will also be returned,
|
||||
|
@ -85,7 +86,7 @@ func PutFilter(
|
|||
return jsonerror.InternalServerError()
|
||||
}
|
||||
|
||||
var filter gomatrixserverlib.Filter
|
||||
var filter synctypes.Filter
|
||||
|
||||
defer req.Body.Close() // nolint:errcheck
|
||||
body, err := io.ReadAll(req.Body)
|
||||
|
|
|
@ -17,7 +17,6 @@ package routing
|
|||
import (
|
||||
"net/http"
|
||||
|
||||
"github.com/matrix-org/gomatrixserverlib"
|
||||
"github.com/matrix-org/util"
|
||||
"github.com/sirupsen/logrus"
|
||||
|
||||
|
@ -26,6 +25,7 @@ import (
|
|||
"github.com/matrix-org/dendrite/setup/config"
|
||||
"github.com/matrix-org/dendrite/syncapi/internal"
|
||||
"github.com/matrix-org/dendrite/syncapi/storage"
|
||||
"github.com/matrix-org/dendrite/syncapi/synctypes"
|
||||
userapi "github.com/matrix-org/dendrite/userapi/api"
|
||||
)
|
||||
|
||||
|
@ -97,6 +97,6 @@ func GetEvent(
|
|||
|
||||
return util.JSONResponse{
|
||||
Code: http.StatusOK,
|
||||
JSON: gomatrixserverlib.HeaderedToClientEvent(events[0], gomatrixserverlib.FormatAll),
|
||||
JSON: synctypes.HeaderedToClientEvent(events[0], synctypes.FormatAll),
|
||||
}
|
||||
}
|
||||
|
|
|
@ -22,14 +22,14 @@ import (
|
|||
"github.com/matrix-org/dendrite/clientapi/jsonerror"
|
||||
"github.com/matrix-org/dendrite/roomserver/api"
|
||||
"github.com/matrix-org/dendrite/syncapi/storage"
|
||||
"github.com/matrix-org/dendrite/syncapi/synctypes"
|
||||
"github.com/matrix-org/dendrite/syncapi/types"
|
||||
userapi "github.com/matrix-org/dendrite/userapi/api"
|
||||
"github.com/matrix-org/gomatrixserverlib"
|
||||
"github.com/matrix-org/util"
|
||||
)
|
||||
|
||||
type getMembershipResponse struct {
|
||||
Chunk []gomatrixserverlib.ClientEvent `json:"chunk"`
|
||||
Chunk []synctypes.ClientEvent `json:"chunk"`
|
||||
}
|
||||
|
||||
// https://matrix.org/docs/spec/client_server/r0.6.0#get-matrix-client-r0-rooms-roomid-joined-members
|
||||
|
@ -134,6 +134,6 @@ func GetMemberships(
|
|||
}
|
||||
return util.JSONResponse{
|
||||
Code: http.StatusOK,
|
||||
JSON: getMembershipResponse{gomatrixserverlib.HeaderedToClientEvents(result, gomatrixserverlib.FormatAll)},
|
||||
JSON: getMembershipResponse{synctypes.HeaderedToClientEvents(result, synctypes.FormatAll)},
|
||||
}
|
||||
}
|
||||
|
|
|
@ -34,6 +34,7 @@ import (
|
|||
"github.com/matrix-org/dendrite/syncapi/internal"
|
||||
"github.com/matrix-org/dendrite/syncapi/storage"
|
||||
"github.com/matrix-org/dendrite/syncapi/sync"
|
||||
"github.com/matrix-org/dendrite/syncapi/synctypes"
|
||||
"github.com/matrix-org/dendrite/syncapi/types"
|
||||
userapi "github.com/matrix-org/dendrite/userapi/api"
|
||||
)
|
||||
|
@ -50,15 +51,15 @@ type messagesReq struct {
|
|||
device *userapi.Device
|
||||
wasToProvided bool
|
||||
backwardOrdering bool
|
||||
filter *gomatrixserverlib.RoomEventFilter
|
||||
filter *synctypes.RoomEventFilter
|
||||
}
|
||||
|
||||
type messagesResp struct {
|
||||
Start string `json:"start"`
|
||||
StartStream string `json:"start_stream,omitempty"` // NOTSPEC: used by Cerulean, so clients can hit /messages then immediately /sync with a latest sync token
|
||||
End string `json:"end,omitempty"`
|
||||
Chunk []gomatrixserverlib.ClientEvent `json:"chunk"`
|
||||
State []gomatrixserverlib.ClientEvent `json:"state,omitempty"`
|
||||
Start string `json:"start"`
|
||||
StartStream string `json:"start_stream,omitempty"` // NOTSPEC: used by Cerulean, so clients can hit /messages then immediately /sync with a latest sync token
|
||||
End string `json:"end,omitempty"`
|
||||
Chunk []synctypes.ClientEvent `json:"chunk"`
|
||||
State []synctypes.ClientEvent `json:"state,omitempty"`
|
||||
}
|
||||
|
||||
// OnIncomingMessagesRequest implements the /messages endpoint from the
|
||||
|
@ -253,7 +254,7 @@ func OnIncomingMessagesRequest(
|
|||
util.GetLogger(req.Context()).WithError(err).Error("failed to apply lazy loading")
|
||||
return jsonerror.InternalServerError()
|
||||
}
|
||||
res.State = append(res.State, gomatrixserverlib.HeaderedToClientEvents(membershipEvents, gomatrixserverlib.FormatAll)...)
|
||||
res.State = append(res.State, synctypes.HeaderedToClientEvents(membershipEvents, synctypes.FormatAll)...)
|
||||
}
|
||||
|
||||
// If we didn't return any events, set the end to an empty string, so it will be omitted
|
||||
|
@ -291,7 +292,7 @@ func getMembershipForUser(ctx context.Context, roomID, userID string, rsAPI api.
|
|||
// Returns an error if there was an issue talking to the database or with the
|
||||
// remote homeserver.
|
||||
func (r *messagesReq) retrieveEvents() (
|
||||
clientEvents []gomatrixserverlib.ClientEvent, start,
|
||||
clientEvents []synctypes.ClientEvent, start,
|
||||
end types.TopologyToken, err error,
|
||||
) {
|
||||
// Retrieve the events from the local database.
|
||||
|
@ -323,7 +324,7 @@ func (r *messagesReq) retrieveEvents() (
|
|||
|
||||
// If we didn't get any event, we don't need to proceed any further.
|
||||
if len(events) == 0 {
|
||||
return []gomatrixserverlib.ClientEvent{}, *r.from, *r.to, nil
|
||||
return []synctypes.ClientEvent{}, *r.from, *r.to, nil
|
||||
}
|
||||
|
||||
// Get the position of the first and the last event in the room's topology.
|
||||
|
@ -334,7 +335,7 @@ func (r *messagesReq) retrieveEvents() (
|
|||
// only have to change it in one place, i.e. the database.
|
||||
start, end, err = r.getStartEnd(events)
|
||||
if err != nil {
|
||||
return []gomatrixserverlib.ClientEvent{}, *r.from, *r.to, err
|
||||
return []synctypes.ClientEvent{}, *r.from, *r.to, err
|
||||
}
|
||||
|
||||
// Sort the events to ensure we send them in the right order.
|
||||
|
@ -350,7 +351,7 @@ func (r *messagesReq) retrieveEvents() (
|
|||
events = reversed(events)
|
||||
}
|
||||
if len(events) == 0 {
|
||||
return []gomatrixserverlib.ClientEvent{}, *r.from, *r.to, nil
|
||||
return []synctypes.ClientEvent{}, *r.from, *r.to, nil
|
||||
}
|
||||
|
||||
// Apply room history visibility filter
|
||||
|
@ -362,7 +363,7 @@ func (r *messagesReq) retrieveEvents() (
|
|||
"events_before": len(events),
|
||||
"events_after": len(filteredEvents),
|
||||
}).Debug("applied history visibility (messages)")
|
||||
return gomatrixserverlib.HeaderedToClientEvents(filteredEvents, gomatrixserverlib.FormatAll), start, end, err
|
||||
return synctypes.HeaderedToClientEvents(filteredEvents, synctypes.FormatAll), start, end, err
|
||||
}
|
||||
|
||||
func (r *messagesReq) getStartEnd(events []*gomatrixserverlib.HeaderedEvent) (start, end types.TopologyToken, err error) {
|
||||
|
|
|
@ -27,14 +27,15 @@ import (
|
|||
"github.com/matrix-org/dendrite/roomserver/api"
|
||||
"github.com/matrix-org/dendrite/syncapi/internal"
|
||||
"github.com/matrix-org/dendrite/syncapi/storage"
|
||||
"github.com/matrix-org/dendrite/syncapi/synctypes"
|
||||
"github.com/matrix-org/dendrite/syncapi/types"
|
||||
userapi "github.com/matrix-org/dendrite/userapi/api"
|
||||
)
|
||||
|
||||
type RelationsResponse struct {
|
||||
Chunk []gomatrixserverlib.ClientEvent `json:"chunk"`
|
||||
NextBatch string `json:"next_batch,omitempty"`
|
||||
PrevBatch string `json:"prev_batch,omitempty"`
|
||||
Chunk []synctypes.ClientEvent `json:"chunk"`
|
||||
NextBatch string `json:"next_batch,omitempty"`
|
||||
PrevBatch string `json:"prev_batch,omitempty"`
|
||||
}
|
||||
|
||||
// nolint:gocyclo
|
||||
|
@ -85,7 +86,7 @@ func Relations(
|
|||
defer sqlutil.EndTransactionWithCheck(snapshot, &succeeded, &err)
|
||||
|
||||
res := &RelationsResponse{
|
||||
Chunk: []gomatrixserverlib.ClientEvent{},
|
||||
Chunk: []synctypes.ClientEvent{},
|
||||
}
|
||||
var events []types.StreamEvent
|
||||
events, res.PrevBatch, res.NextBatch, err = snapshot.RelationsFor(
|
||||
|
@ -108,11 +109,11 @@ func Relations(
|
|||
|
||||
// Convert the events into client events, and optionally filter based on the event
|
||||
// type if it was specified.
|
||||
res.Chunk = make([]gomatrixserverlib.ClientEvent, 0, len(filteredEvents))
|
||||
res.Chunk = make([]synctypes.ClientEvent, 0, len(filteredEvents))
|
||||
for _, event := range filteredEvents {
|
||||
res.Chunk = append(
|
||||
res.Chunk,
|
||||
gomatrixserverlib.ToClientEvent(event.Event, gomatrixserverlib.FormatAll),
|
||||
synctypes.ToClientEvent(event.Event, synctypes.FormatAll),
|
||||
)
|
||||
}
|
||||
|
||||
|
|
|
@ -32,6 +32,7 @@ import (
|
|||
"github.com/matrix-org/dendrite/internal/fulltext"
|
||||
"github.com/matrix-org/dendrite/internal/sqlutil"
|
||||
"github.com/matrix-org/dendrite/syncapi/storage"
|
||||
"github.com/matrix-org/dendrite/syncapi/synctypes"
|
||||
"github.com/matrix-org/dendrite/userapi/api"
|
||||
)
|
||||
|
||||
|
@ -145,7 +146,7 @@ func Search(req *http.Request, device *api.Device, syncDB storage.Database, fts
|
|||
// Filter on m.room.message, as otherwise we also get events like m.reaction
|
||||
// which "breaks" displaying results in Element Web.
|
||||
types := []string{"m.room.message"}
|
||||
roomFilter := &gomatrixserverlib.RoomEventFilter{
|
||||
roomFilter := &synctypes.RoomEventFilter{
|
||||
Rooms: &rooms,
|
||||
Types: &types,
|
||||
}
|
||||
|
@ -166,7 +167,7 @@ func Search(req *http.Request, device *api.Device, syncDB storage.Database, fts
|
|||
})
|
||||
}
|
||||
|
||||
stateForRooms := make(map[string][]gomatrixserverlib.ClientEvent)
|
||||
stateForRooms := make(map[string][]synctypes.ClientEvent)
|
||||
for _, event := range evs {
|
||||
eventsBefore, eventsAfter, err := contextEvents(ctx, snapshot, event, roomFilter, searchReq)
|
||||
if err != nil {
|
||||
|
@ -204,24 +205,24 @@ func Search(req *http.Request, device *api.Device, syncDB storage.Database, fts
|
|||
Context: SearchContextResponse{
|
||||
Start: startToken.String(),
|
||||
End: endToken.String(),
|
||||
EventsAfter: gomatrixserverlib.HeaderedToClientEvents(eventsAfter, gomatrixserverlib.FormatSync),
|
||||
EventsBefore: gomatrixserverlib.HeaderedToClientEvents(eventsBefore, gomatrixserverlib.FormatSync),
|
||||
EventsAfter: synctypes.HeaderedToClientEvents(eventsAfter, synctypes.FormatSync),
|
||||
EventsBefore: synctypes.HeaderedToClientEvents(eventsBefore, synctypes.FormatSync),
|
||||
ProfileInfo: profileInfos,
|
||||
},
|
||||
Rank: eventScore[event.EventID()].Score,
|
||||
Result: gomatrixserverlib.HeaderedToClientEvent(event, gomatrixserverlib.FormatAll),
|
||||
Result: synctypes.HeaderedToClientEvent(event, synctypes.FormatAll),
|
||||
})
|
||||
roomGroup := groups[event.RoomID()]
|
||||
roomGroup.Results = append(roomGroup.Results, event.EventID())
|
||||
groups[event.RoomID()] = roomGroup
|
||||
if _, ok := stateForRooms[event.RoomID()]; searchReq.SearchCategories.RoomEvents.IncludeState && !ok {
|
||||
stateFilter := gomatrixserverlib.DefaultStateFilter()
|
||||
stateFilter := synctypes.DefaultStateFilter()
|
||||
state, err := snapshot.CurrentState(ctx, event.RoomID(), &stateFilter, nil)
|
||||
if err != nil {
|
||||
logrus.WithError(err).Error("unable to get current state")
|
||||
return jsonerror.InternalServerError()
|
||||
}
|
||||
stateForRooms[event.RoomID()] = gomatrixserverlib.HeaderedToClientEvents(state, gomatrixserverlib.FormatSync)
|
||||
stateForRooms[event.RoomID()] = synctypes.HeaderedToClientEvents(state, synctypes.FormatSync)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -262,7 +263,7 @@ func contextEvents(
|
|||
ctx context.Context,
|
||||
snapshot storage.DatabaseTransaction,
|
||||
event *gomatrixserverlib.HeaderedEvent,
|
||||
roomFilter *gomatrixserverlib.RoomEventFilter,
|
||||
roomFilter *synctypes.RoomEventFilter,
|
||||
searchReq SearchRequest,
|
||||
) ([]*gomatrixserverlib.HeaderedEvent, []*gomatrixserverlib.HeaderedEvent, error) {
|
||||
id, _, err := snapshot.SelectContextEvent(ctx, event.RoomID(), event.EventID())
|
||||
|
@ -300,13 +301,13 @@ type Groupings struct {
|
|||
}
|
||||
|
||||
type RoomEvents struct {
|
||||
EventContext EventContext `json:"event_context"`
|
||||
Filter gomatrixserverlib.RoomEventFilter `json:"filter"`
|
||||
Groupings Groupings `json:"groupings"`
|
||||
IncludeState bool `json:"include_state"`
|
||||
Keys []string `json:"keys"`
|
||||
OrderBy string `json:"order_by"`
|
||||
SearchTerm string `json:"search_term"`
|
||||
EventContext EventContext `json:"event_context"`
|
||||
Filter synctypes.RoomEventFilter `json:"filter"`
|
||||
Groupings Groupings `json:"groupings"`
|
||||
IncludeState bool `json:"include_state"`
|
||||
Keys []string `json:"keys"`
|
||||
OrderBy string `json:"order_by"`
|
||||
SearchTerm string `json:"search_term"`
|
||||
}
|
||||
|
||||
type SearchCategories struct {
|
||||
|
@ -331,17 +332,17 @@ type Groups struct {
|
|||
}
|
||||
|
||||
type Result struct {
|
||||
Context SearchContextResponse `json:"context"`
|
||||
Rank float64 `json:"rank"`
|
||||
Result gomatrixserverlib.ClientEvent `json:"result"`
|
||||
Context SearchContextResponse `json:"context"`
|
||||
Rank float64 `json:"rank"`
|
||||
Result synctypes.ClientEvent `json:"result"`
|
||||
}
|
||||
|
||||
type SearchContextResponse struct {
|
||||
End string `json:"end"`
|
||||
EventsAfter []gomatrixserverlib.ClientEvent `json:"events_after"`
|
||||
EventsBefore []gomatrixserverlib.ClientEvent `json:"events_before"`
|
||||
Start string `json:"start"`
|
||||
ProfileInfo map[string]ProfileInfoResponse `json:"profile_info"`
|
||||
End string `json:"end"`
|
||||
EventsAfter []synctypes.ClientEvent `json:"events_after"`
|
||||
EventsBefore []synctypes.ClientEvent `json:"events_before"`
|
||||
Start string `json:"start"`
|
||||
ProfileInfo map[string]ProfileInfoResponse `json:"profile_info"`
|
||||
}
|
||||
|
||||
type ProfileInfoResponse struct {
|
||||
|
@ -350,12 +351,12 @@ type ProfileInfoResponse struct {
|
|||
}
|
||||
|
||||
type RoomEventsResponse struct {
|
||||
Count int `json:"count"`
|
||||
Groups Groups `json:"groups"`
|
||||
Highlights []string `json:"highlights"`
|
||||
NextBatch *string `json:"next_batch,omitempty"`
|
||||
Results []Result `json:"results"`
|
||||
State map[string][]gomatrixserverlib.ClientEvent `json:"state,omitempty"`
|
||||
Count int `json:"count"`
|
||||
Groups Groups `json:"groups"`
|
||||
Highlights []string `json:"highlights"`
|
||||
NextBatch *string `json:"next_batch,omitempty"`
|
||||
Results []Result `json:"results"`
|
||||
State map[string][]synctypes.ClientEvent `json:"state,omitempty"`
|
||||
}
|
||||
type SearchCategoriesResponse struct {
|
||||
RoomEvents RoomEventsResponse `json:"room_events"`
|
||||
|
|
|
@ -10,6 +10,7 @@ import (
|
|||
"github.com/matrix-org/dendrite/internal/fulltext"
|
||||
"github.com/matrix-org/dendrite/internal/sqlutil"
|
||||
"github.com/matrix-org/dendrite/syncapi/storage"
|
||||
"github.com/matrix-org/dendrite/syncapi/synctypes"
|
||||
"github.com/matrix-org/dendrite/syncapi/types"
|
||||
"github.com/matrix-org/dendrite/test"
|
||||
"github.com/matrix-org/dendrite/test/testrig"
|
||||
|
@ -96,7 +97,7 @@ func TestSearch(t *testing.T) {
|
|||
SearchCategories: SearchCategories{
|
||||
RoomEvents: RoomEvents{
|
||||
SearchTerm: "hello",
|
||||
Filter: gomatrixserverlib.RoomEventFilter{
|
||||
Filter: synctypes.RoomEventFilter{
|
||||
Rooms: &roomsFilter,
|
||||
},
|
||||
},
|
||||
|
@ -111,7 +112,7 @@ func TestSearch(t *testing.T) {
|
|||
SearchCategories: SearchCategories{
|
||||
RoomEvents: RoomEvents{
|
||||
SearchTerm: "hello",
|
||||
Filter: gomatrixserverlib.RoomEventFilter{
|
||||
Filter: synctypes.RoomEventFilter{
|
||||
Rooms: &roomsFilterUnknown,
|
||||
},
|
||||
},
|
||||
|
@ -126,7 +127,7 @@ func TestSearch(t *testing.T) {
|
|||
SearchCategories: SearchCategories{
|
||||
RoomEvents: RoomEvents{
|
||||
SearchTerm: "hello",
|
||||
Filter: gomatrixserverlib.RoomEventFilter{
|
||||
Filter: synctypes.RoomEventFilter{
|
||||
Rooms: &roomsFilter,
|
||||
},
|
||||
IncludeState: true,
|
||||
|
@ -143,7 +144,7 @@ func TestSearch(t *testing.T) {
|
|||
SearchCategories: SearchCategories{
|
||||
RoomEvents: RoomEvents{
|
||||
SearchTerm: "hello",
|
||||
Filter: gomatrixserverlib.RoomEventFilter{
|
||||
Filter: synctypes.RoomEventFilter{
|
||||
Rooms: &roomsFilter,
|
||||
},
|
||||
},
|
||||
|
@ -160,7 +161,7 @@ func TestSearch(t *testing.T) {
|
|||
SearchCategories: SearchCategories{
|
||||
RoomEvents: RoomEvents{
|
||||
SearchTerm: "hello",
|
||||
Filter: gomatrixserverlib.RoomEventFilter{
|
||||
Filter: synctypes.RoomEventFilter{
|
||||
Rooms: &roomsFilter,
|
||||
},
|
||||
},
|
||||
|
@ -176,7 +177,7 @@ func TestSearch(t *testing.T) {
|
|||
SearchCategories: SearchCategories{
|
||||
RoomEvents: RoomEvents{
|
||||
SearchTerm: "hello",
|
||||
Filter: gomatrixserverlib.RoomEventFilter{
|
||||
Filter: synctypes.RoomEventFilter{
|
||||
Rooms: &roomsFilter,
|
||||
},
|
||||
},
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue