Source code for geowatchutil.codec.geowatch_codec_json

from geowatchutil.codec.base import GeoWatchCodec

import json


[docs]class GeoWatchCodecJSON(GeoWatchCodec):
[docs] def encode(self, message, **kwargs): """ Encode message for sending via channel """ return self.encode_channel(json.dumps(message))
[docs] def decode(self, message): """ Decode message received via channel """ m2 = self.decode_channel(message) # Don't decode if already JSON, which can happen with sockets, such as Slack RTM return json.loads(m2) if isinstance(m2, basestring) else m2
[docs] def pack(self, messages, which="all", which_index=0): """ pack messages for store """ if which == "first": return json.dumps(messages[0]) elif which == "last": return json.dumps(messages[-1]) elif which == "index": return json.dumps(messages[which_index]) else: package = { 'messages': [json.dumps(m) for m in messages] } return json.dumps(package)
[docs] def unpack(self, data): """ unpack data from store into messages """ package = json.loads(data) messages = package['mesages'] return [json.loads(m) for m in messages]
def __init__(self, channel=None, content_type="application/json"): super(GeoWatchCodecJSON, self).__init__(channel=channel, content_type=content_type)