laneya

multiplayer roguelike game
git clone https://git.ce9e.org/laneya.git

commit
566d59cb94e1e05feb9aeffbfc4cc5d77ffbacb6
parent
693d480267073becb7504b0b063b25fb520cda4c
Author
Tobias Bengfort <tobias.bengfort@gmx.net>
Date
2014-10-04 09:46
basic message validation

Diffstat

M laneya/protocol.py 10 ++++++++++

1 files changed, 10 insertions, 0 deletions


diff --git a/laneya/protocol.py b/laneya/protocol.py

@@ -129,13 +129,21 @@ class Protocol(JSONProtocol):
  129   129 
  130   130         return self._sendResponse(key, 'success', **response)
  131   131 
   -1   132     def validate_message(self, message, expected_keys):
   -1   133         if sorted(message.keys()) != expected_keys:
   -1   134             log.err('Invalid message: %s' % message)
   -1   135             raise InvalidError
   -1   136 
  132   137     def jsonReceived(self, message):
  133   138         if message['type'] == 'request':
   -1   139             self.validate_message(message, ['action', 'data', 'key', 'type'])
  134   140             self._requestReceived(
  135   141                 message['key'],
  136   142                 message['action'],
  137   143                 **message['data'])
   -1   144 
  138   145         elif message['type'] == 'response':
   -1   146             self.validate_message(message, ['data', 'key', 'status', 'type'])
  139   147             key = message['key']
  140   148             if key in self._responseDeferreds:
  141   149                 response = {
@@ -147,7 +155,9 @@ class Protocol(JSONProtocol):
  147   155                     d.resolve(response)
  148   156                 else:
  149   157                     d.reject(response)
   -1   158 
  150   159         elif message['type'] == 'update':
   -1   160             self.validate_message(message, ['action', 'data', 'type'])
  151   161             self.updateReceived(message['action'], **message['data'])
  152   162         else:
  153   163             log.err('Message type not known: %s' % message['type'])