Skip to content
This repository has been archived by the owner on Apr 26, 2024. It is now read-only.

Commit

Permalink
Merge pull request #1094 from matrix-org/paul/get-state-whole-event
Browse files Browse the repository at this point in the history
Allow clients to ask for the whole of a single state event
  • Loading branch information
leonerd authored Sep 9, 2016
2 parents ab80d5e + d271383 commit 8cb252d
Showing 1 changed file with 9 additions and 2 deletions.
11 changes: 9 additions & 2 deletions synapse/rest/client/v1/room.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
from synapse.api.constants import EventTypes, Membership
from synapse.api.filtering import Filter
from synapse.types import UserID, RoomID, RoomAlias
from synapse.events.utils import serialize_event
from synapse.events.utils import serialize_event, format_event_for_client_v2
from synapse.http.servlet import parse_json_object_from_request, parse_string

import logging
Expand Down Expand Up @@ -120,6 +120,8 @@ def on_PUT_no_state_key(self, request, room_id, event_type):
@defer.inlineCallbacks
def on_GET(self, request, room_id, event_type, state_key):
requester = yield self.auth.get_user_by_req(request, allow_guest=True)
format = parse_string(request, "format", default="content",
allowed_values=["content", "event"])

msg_handler = self.handlers.message_handler
data = yield msg_handler.get_room_data(
Expand All @@ -134,7 +136,12 @@ def on_GET(self, request, room_id, event_type, state_key):
raise SynapseError(
404, "Event not found.", errcode=Codes.NOT_FOUND
)
defer.returnValue((200, data.get_dict()["content"]))

if format == "event":
event = format_event_for_client_v2(data.get_dict())
defer.returnValue((200, event))
elif format == "content":
defer.returnValue((200, data.get_dict()["content"]))

@defer.inlineCallbacks
def on_PUT(self, request, room_id, event_type, state_key, txn_id=None):
Expand Down

0 comments on commit 8cb252d

Please sign in to comment.