from geowatchutil.codec.base import GeoWatchCodec
from geowatchutil.base import FORMAT_TILE_REQUEST
[docs]class GeoWatchCodecTileRequest(GeoWatchCodec):
[docs] def encode(self, tilesource=None, tiles=None, extension=None, now=None):
messages = []
for tile in tiles:
x, y, z = tile
message = FORMAT_TILE_REQUEST.format(d=now.isoformat(), tilesource=tilesource, z=str(z), x=str(x), y=str(y), ext=extension)
messages.append(self.encode_channel(message))
return messages
[docs] def decode(self, message):
"""
Decode messages received via channel
"""
print "This should never be called. Decode tile requests in consumers"
return None
[docs] def pack(self, tilesource=None, tiles=None, extension=None, now=None):
"""
pack messages for store
"""
messages = []
for tile in tiles:
x, y, z = tile
message = FORMAT_TILE_REQUEST.format(d=now.isoformat(), tilesource=tilesource, z=str(z), x=str(x), y=str(y), ext=extension)
messages.append(message)
return "\n".join(messages)
[docs] def unpack(self, data):
"""
unpack data from store into messages
"""
return data.split("\n")
def __init__(self, channel=None):
super(GeoWatchCodecTileRequest, self).__init__(channel=channel, content_type="text/plain")