diff --git a/synapse/api/auth.py b/synapse/api/auth.py
index 646f6dc06c..ef3604077d 100644
--- a/synapse/api/auth.py
+++ b/synapse/api/auth.py
@@ -168,6 +168,8 @@ class Auth(object):
"""
try:
user_id = yield self.store.get_user_by_token(token=token)
+ if not user_id:
+ raise StoreError()
defer.returnValue(self.hs.parse_userid(user_id))
except StoreError:
raise AuthError(403, "Unrecognised access token.",
diff --git a/synapse/api/constants.py b/synapse/api/constants.py
index 2af5424029..f69f2445a2 100644
--- a/synapse/api/constants.py
+++ b/synapse/api/constants.py
@@ -31,8 +31,8 @@ class Feedback(object):
"""Represents the types of feedback a user can send in response to a
message."""
- DELIVERED = u"d"
- READ = u"r"
+ DELIVERED = u"delivered"
+ READ = u"read"
LIST = (DELIVERED, READ)
diff --git a/synapse/api/events/room.py b/synapse/api/events/room.py
index 2a7b5e8aba..9faad57ac0 100644
--- a/synapse/api/events/room.py
+++ b/synapse/api/events/room.py
@@ -13,7 +13,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-from synapse.api.constants import Membership
+from synapse.api.constants import Feedback, Membership
from synapse.api.errors import SynapseError
from . import SynapseEvent
@@ -93,17 +93,19 @@ class MessageEvent(SynapseEvent):
class FeedbackEvent(SynapseEvent):
TYPE = "m.room.message.feedback"
- valid_keys = SynapseEvent.valid_keys + [
- "msg_id", # the message ID being acknowledged
- "msg_sender_id", # person who is sending the feedback is 'user_id'
- "feedback_type", # the type of feedback (delivery, read, etc)
- ]
+ valid_keys = SynapseEvent.valid_keys
def __init__(self, **kwargs):
super(FeedbackEvent, self).__init__(**kwargs)
+ if not kwargs["content"]["type"] in Feedback.LIST:
+ raise SynapseError(400, "Bad feedback value.")
def get_content_template(self):
- return {}
+ return {
+ "type": u"string",
+ "target_event_id": u"string",
+ "msg_sender_id": u"string"
+ }
class InviteJoinEvent(SynapseEvent):
|