def test_aps_request_frames(self): from aps.message import APSRequest, EMPTY, VERSION from aps.util import get_timestamp envelope = ['test request envelope'] sequence = 1 timestamp = get_timestamp() expiry = None method = 'sp.up' params = ['p1', 'p2'] extras = ['ex1', 'ex2', ('ex3', ('ex4', 'ex5'))] request = APSRequest(envelope=envelope, sequence=sequence, timestamp=timestamp, expiry=expiry, method=method, params=params, extras=extras) from aps.util import ensure_bytes _frames = map(ensure_bytes, envelope) _frames.append(EMPTY) _frames.append(VERSION) _frames.append(packb((sequence, timestamp, expiry))) _frames.append(ensure_bytes(method)) _frames.append(packb(params)) _frames.extend(map(packb, extras)) self.assertEqual(request.frames, _frames)
def test_aps_request_from_frames(self): from aps.message import APSRequest, EMPTY, VERSION from aps.util import get_timestamp, ensure_bytes envelope = ['test request envelope'] sequence = 1 timestamp = get_timestamp() expiry = None method = 'sp.up' params = ['p1', 'p2'] extras = ['ex1', 'ex2', ['ex3', ['ex4', 'ex5']]] _frames = map(ensure_bytes, envelope) _frames.append(EMPTY) _frames.append(VERSION) _frames.append(packb((sequence, timestamp, expiry))) _frames.append(ensure_bytes(method)) _frames.append(packb(params)) _frames.extend(map(packb, extras)) request = APSRequest(frames=_frames) self.assertEqual(request.envelope, envelope) self.assertEqual(request.sequence, sequence) self.assertEqual(request.timestamp, timestamp) self.assertEqual(request.expiry, expiry) self.assertEqual(request.method, method) self.assertEqual(request.params, params) self.assertEqual(request.extras, extras)
def frames(self): if self.envelope is not None: frames = self.envelope[:] frames.append(EMPTY) else: frames = [EMPTY] frames.append(self.version) frames.append(packb((self.sequence, self.timestamp, self.expiry))) frames.append(ensure_bytes(self.method)) frames.append(packb(self.params)) if self.extras is not None: for extra in self.extras: frames.append(packb(extra)) return frames