aboutsummaryrefslogtreecommitdiff
path: root/currentstateserver/api/api.go
diff options
context:
space:
mode:
Diffstat (limited to 'currentstateserver/api/api.go')
-rw-r--r--currentstateserver/api/api.go22
1 files changed, 18 insertions, 4 deletions
diff --git a/currentstateserver/api/api.go b/currentstateserver/api/api.go
index 10433722..b16306ab 100644
--- a/currentstateserver/api/api.go
+++ b/currentstateserver/api/api.go
@@ -24,7 +24,21 @@ import (
)
type CurrentStateInternalAPI interface {
+ // QueryCurrentState retrieves the requested state events. If state events are not found, they will be missing from
+ // the response.
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
+}
+
+type QueryRoomsForUserRequest struct {
+ UserID string
+ // The desired membership of the user. If this is the empty string then no rooms are returned.
+ WantMembership string
+}
+
+type QueryRoomsForUserResponse struct {
+ RoomIDs []string
}
type QueryCurrentStateRequest struct {
@@ -33,12 +47,12 @@ type QueryCurrentStateRequest struct {
}
type QueryCurrentStateResponse struct {
- StateEvents map[gomatrixserverlib.StateKeyTuple]gomatrixserverlib.HeaderedEvent
+ StateEvents map[gomatrixserverlib.StateKeyTuple]*gomatrixserverlib.HeaderedEvent
}
// MarshalJSON stringifies the StateKeyTuple keys so they can be sent over the wire in HTTP API mode.
func (r *QueryCurrentStateResponse) MarshalJSON() ([]byte, error) {
- se := make(map[string]gomatrixserverlib.HeaderedEvent, len(r.StateEvents))
+ se := make(map[string]*gomatrixserverlib.HeaderedEvent, len(r.StateEvents))
for k, v := range r.StateEvents {
// use 0x1F (unit separator) as the delimiter between type/state key,
se[fmt.Sprintf("%s\x1F%s", k.EventType, k.StateKey)] = v
@@ -47,12 +61,12 @@ func (r *QueryCurrentStateResponse) MarshalJSON() ([]byte, error) {
}
func (r *QueryCurrentStateResponse) UnmarshalJSON(data []byte) error {
- res := make(map[string]gomatrixserverlib.HeaderedEvent)
+ res := make(map[string]*gomatrixserverlib.HeaderedEvent)
err := json.Unmarshal(data, &res)
if err != nil {
return err
}
- r.StateEvents = make(map[gomatrixserverlib.StateKeyTuple]gomatrixserverlib.HeaderedEvent, len(res))
+ r.StateEvents = make(map[gomatrixserverlib.StateKeyTuple]*gomatrixserverlib.HeaderedEvent, len(res))
for k, v := range res {
fields := strings.Split(k, "\x1F")
r.StateEvents[gomatrixserverlib.StateKeyTuple{