def test_post_process(self): """ Ensure that postprocessing happens when data has been decoded. """ self.executed = False post_procs = pyamf.POST_DECODE_PROCESSORS[:] def restore_post_procs(): pyamf.POST_DECODE_PROCESSORS = post_procs self.addCleanup(restore_post_procs) pyamf.POST_DECODE_PROCESSORS = [] def postprocess(payload, context): self.assertEqual(payload, u'foo') self.assertEqual(context, {}) self.executed = True return payload pyamf.add_post_decode_processor(postprocess) # setup complete bytes = pyamf.encode(u'foo', encoding=pyamf.AMF0).getvalue() self.decoder.send(bytes) ret = self.decoder.next() self.assertTrue(self.executed) self.assertEqual(ret, u'foo')
def test_post_process(self): """ Ensure that postprocessing happens when data has been decoded. """ self.executed = False post_procs = pyamf.POST_DECODE_PROCESSORS[:] def restore_post_procs(): pyamf.POST_DECODE_PROCESSORS = post_procs self.addCleanup(restore_post_procs) pyamf.POST_DECODE_PROCESSORS = [] def postprocess(payload, context): self.assertEqual(payload, u'foo') self.assertEqual(context, {}) self.executed = True return payload pyamf.add_post_decode_processor(postprocess) # setup complete bytes = pyamf.encode(u'foo', encoding=pyamf.AMF0).getvalue() self.decoder.send(bytes) ret = next(self.decoder) self.assertTrue(self.executed) self.assertEqual(ret, u'foo')
return datetime.datetime.combine(value, datetime.time(0, 0, 0)) def post_ndb_process(payload, context): """ """ stubs = context.get(NDB_STUB_NAME, None) if not stubs: return payload stubs.transform() return payload # small optimisation to compile the ndb.Model base class if hasattr(ndb.model, '_NotEqualMixin'): not_equal_mixin = pyamf.register_class(ndb.model._NotEqualMixin) not_equal_mixin.compile() del not_equal_mixin # initialise the module here: hook into pyamf pyamf.register_alias_type(NDBClassAlias, ndb.Model, ndb.Expando) pyamf.add_type(ndb.Query, util.to_list) pyamf.add_type(ndb.Model, encode_ndb_instance) pyamf.add_post_decode_processor(post_ndb_process) pyamf.add_type(ndb.Key, encode_ndb_key)
return value # TimeProperty fields expect specific types of data # whereas PyAMF only decodes into datetime.datetime # objects. return value.time() def transform_xdb_stubs(payload, context): """ Called when a successful decode has been performed. Transform the stubs within the payload to proper db.Model instances. """ stubs = context.get(XDB_STUB_NAME, None) if not stubs: return payload stubs.transform() return payload # initialise the module here: hook into pyamf pyamf.register_alias_type(DataStoreClassAlias, db.Model) pyamf.add_type(db.Query, util.to_list) pyamf.add_type(db.Key, encode_xdb_key) pyamf.add_type(db.Model, encode_xdb_entity) pyamf.add_post_decode_processor(transform_xdb_stubs)
datetime.time(0, 0, 0) ) def post_ndb_process(payload, context): """ """ stubs = context.get(NDB_STUB_NAME, None) if not stubs: return payload stubs.transform() return payload # small optimisation to compile the ndb.Model base class if hasattr(ndb.model, '_NotEqualMixin'): not_equal_mixin = pyamf.register_class(ndb.model._NotEqualMixin) not_equal_mixin.compile() del not_equal_mixin # initialise the module here: hook into pyamf pyamf.register_alias_type(NDBClassAlias, ndb.Model, ndb.Expando) pyamf.add_type(ndb.Query, util.to_list) pyamf.add_type(ndb.Model, encode_ndb_instance) pyamf.add_post_decode_processor(post_ndb_process) pyamf.add_type(ndb.Key, encode_ndb_key)