コード例 #1
0
ファイル: test_amf3.py プロジェクト: MyaThandarKyaw/pyamf
    def test_deep(self):
        class A(object):
            pass

        alias = pyamf.register_class(A, 'A')
        alias.static_attrs = ['a']

        class B(A):
            pass

        alias = pyamf.register_class(B, 'B')
        alias.static_attrs = ['b']

        class C(B):
            pass

        alias = pyamf.register_class(C, 'C')
        alias.static_attrs = ['c']

        x = C()
        x.a = 'spam'
        x.b = 'eggs'
        x.c = 'foo'

        self.assertEncoded(x,
            '\n;\x03C\x03b\x03a\x03c\x06\teggs\x06\tspam\x06\x07foo\x01')
コード例 #2
0
ファイル: test_ndb.py プロジェクト: nervatura/nerva2py
    def test_person(self):
        pyamf.register_class(models.Person, 'Person')

        person_key = ndb.Key('Contact', 'p')
        person = models.Person(
            key=person_key,
            first_name='Foo',
            last_name='Bar',
        )

        bytes = (
            b'\n\x0b\rPerson', (
                b'\t_key\x06Qagx0ZXN0YmVkLXRlc3RyDgsSB0NvbnRhY3QiAXAM',
                b'\x19phone_number\x01',
                b'\x0faddress\x01',
                b'\x15first_name\x06\x07Foo',
                b'\x13last_name\x06\x07Bar',
            ),
            b'\x01'
        )

        self.assertEncodes(person, bytes)

        def check_person(ret):
            self.assertIsInstance(ret, models.Person)
            self.assertEqual(ret, person)

        self.assertDecodes(bytes, check_person)
コード例 #3
0
ファイル: test_ndb.py プロジェクト: nervatura/nerva2py
    def test_company(self):
        pyamf.register_class(models.Company, 'Company')

        company_key = ndb.Key('Contact', 'c')

        company = models.Company(
            key=company_key,
            name='Acme Ltd',
        )

        bytes = (
            b'\n\x0b\x0fCompany', (
                b'\t_key\x06Qagx0ZXN0YmVkLXRlc3RyDgsSB0NvbnRhY3QiAWMM',
                b'\x19phone_number\x01',
                b'\x0faddress\x01',
                b'\tname\x06\x11Acme Ltd',
            ),
            b'\x01'
        )

        self.assertEncodes(company, bytes)

        def check_company(ret):
            self.assertIsInstance(ret, models.Company)
            self.assertEqual(ret, company)

        self.assertDecodes(bytes, check_company)
コード例 #4
0
ファイル: test_xdb.py プロジェクト: Poorvak/twitter_clone
    def test_decode_amf3(self):
        pyamf.register_class(models.ListModel, "list-model")

        bytes = "\n\x0b\x15list-model\x0fnumbers\t\x0b\x01\x04\x02\x04\x04\x04" "\x06\x04\x08\x04\n\x01"

        x = self.decode(bytes, encoding=pyamf.AMF3)
        self._check_list(x)
コード例 #5
0
ファイル: test_ndb.py プロジェクト: nervatura/nerva2py
    def test_expando(self):
        pyamf.register_class(models.SuperHero, 'SH')
        superman = models.SuperHero(name='Clark Kent', can_fly=True)

        superman.has_cape = True

        bytes = (
            b'\n\x0b\x05SH', (
                b'\x0fcan_fly\x03',
                b'\rslogan\x01',
                b'\tname\x06\x15Clark Kent',
                b'\x11has_cape\x03',
                b'\t_key\x01',
            ),
            b'\x01'
        )

        self.assertEncodes(superman, bytes)

        def check_superman(ret):
            self.assertIsInstance(ret, models.SuperHero)
            self.assertEqual(ret, superman)
            self.assertTrue(ret.has_cape)

        self.assertDecodes(bytes, check_superman)
コード例 #6
0
ファイル: test_amf0.py プロジェクト: boggob/bogs-xbmc-addons
    def test_typed_object(self):
        pyamf.register_class(Spam, alias="org.pyamf.spam")

        x = Spam()
        x.baz = "hello"

        self.assertEncoded(x, "\x10\x00\x0eorg.pyamf.spam\x00\x03baz" "\x02\x00\x05hello\x00\x00\t")
コード例 #7
0
ファイル: test_status.py プロジェクト: Arlex/rtmpy
    def tearDown(self):
        import pyamf

        pyamf.unregister_class(status.Status)

        if self._old_alias:
            pyamf.register_class(self._old_alias)
コード例 #8
0
ファイル: __init__.py プロジェクト: netconstructor/TileStache
    def save(self, out, format):
        """
        """
        #
        # Serialize
        #
        if format == "WKT":
            if "wkt" in self.content["crs"]:
                out.write(self.content["crs"]["wkt"])
            else:
                out.write(_sref_4326().ExportToWkt())

            return

        if format in ("GeoJSON", "GeoBSON", "GeoAMF"):
            content = self.content

            if "wkt" in content["crs"]:
                content["crs"] = {"type": "link", "properties": {"href": "0.wkt", "type": "ogcwkt"}}
            else:
                del content["crs"]

        elif format in ("ArcJSON", "ArcBSON", "ArcAMF"):
            content = reserialize_to_arc(self.content, format == "ArcAMF")

        else:
            raise KnownUnknown(
                'Vector response only saves .geojson, .arcjson, .geobson, .arcbson, .geoamf, .arcamf and .wkt tiles, not "%s"'
                % format
            )

        #
        # Encode
        #
        if format in ("GeoJSON", "ArcJSON"):
            indent = self.verbose and 2 or None

            encoded = JSONEncoder(indent=indent).iterencode(content)
            float_pat = compile(r"^-?\d+\.\d+$")

            for atom in encoded:
                if float_pat.match(atom):
                    out.write("%.6f" % float(atom))
                else:
                    out.write(atom)

        elif format in ("GeoBSON", "ArcBSON"):
            import bson

            encoded = bson.dumps(content)
            out.write(encoded)

        elif format in ("GeoAMF", "ArcAMF"):
            import pyamf

            for class_name in pyamf_classes.items():
                pyamf.register_class(*class_name)

            encoded = pyamf.encode(content, 0).read()
            out.write(encoded)
コード例 #9
0
ファイル: test_amf3.py プロジェクト: MyaThandarKyaw/pyamf
    def test_dynamic(self):
        pyamf.register_class(Spam, 'abc.xyz')

        x = Spam({'spam': 'eggs'})
        self.encoder.writeElement(x)

        self.assertEqual(self.buf.getvalue(), '\n\x0b\x0fabc.xyz\tspam\x06\teggs\x01')
コード例 #10
0
    def test_simple(self):
        class A(object):
            pass

        pyamf.register_class(A, 'A', attrs=['a'])

        class B(A):
            pass

        pyamf.register_class(B, 'B', attrs=['b'])

        x = B()
        x.a = 'spam'
        x.b = 'eggs'

        stream = util.BufferedByteStream()
        encoder = pyamf._get_encoder_class(pyamf.AMF0)(stream)

        encoder.writeElement(x)

        self.assertEquals(stream.getvalue(), '\x10\x00\x01B\x00\x01b\x02\x00'
            '\x04eggs\x00\x01a\x02\x00\x04spam\x00\x00\t')

        pyamf.unregister_class(A)
        pyamf.unregister_class(B)
コード例 #11
0
	def __BuildBrightCoveAmfRequest(self, playerKey, contentId, url, experienceId, seed, contentRefId):
		""" Builds a AMF request compatible with BrightCove

		Arguments:
		playerKey : string - Key identifying the current request
		contentId : int    - ID of the content to retrieve
		url       : string - Url of the page that calls the video SWF
		seed      : string - Constant which depends on the website

		Keyword Arguments:
		experienceId : id     - <unknown parameter>

		Returns a valid Brightcove request

		"""

		if self.logger:
			self.logger.Debug("Creating BrightCover request for ContentId=%s, Key=%s, ExperienceId=%s, url=%s", contentId, playerKey, experienceId, url)
		else:
			print "Creating BrightCover request for ContentId=%s, Key=%s, ExperienceId=%s, url=%s" % (contentId, playerKey, experienceId, url)

		# const = '686a10e2a34ec3ea6af8f2f1c41788804e0480cb'
		pyamf.register_class(ViewerExperienceRequest, 'com.brightcove.experience.ViewerExperienceRequest')
		pyamf.register_class(ContentOverride, 'com.brightcove.experience.ContentOverride')

		contentOverrides = [ContentOverride(int(contentId), contentRefId=contentRefId)]
		viewerExperienceRequest = ViewerExperienceRequest(url, contentOverrides, int(experienceId), playerKey)

		envelope = remoting.Envelope(amfVersion=self.amfVersion)
		remotingRequest = remoting.Request(target="com.brightcove.experience.ExperienceRuntimeFacade.getDataForExperience", body=[seed, viewerExperienceRequest], envelope=envelope)
		envelope.bodies.append(("/1", remotingRequest))

		return envelope
コード例 #12
0
    def test_setstate_classic(self):
        self.executed = False

        class Foo:
            tc = self

            def __init__(self, *args, **kwargs):
                self.tc.fail("__init__ called")

            def __setstate__(self, state):
                self.tc.executed = True
                self.__dict__.update(state)

        pyamf.register_class(Foo, 'foo')

        self.buf.write('\x10\x00\x03\x66\x6f\x6f\x00\x04\x65\x67\x67\x73\x01\x01\x00\x04')
        self.buf.write('\x73\x70\x61\x6d\x02\x00\x05\x68\x65\x6c\x6c\x6f\x00\x00\x09')
        self.buf.seek(0)

        foo = self.decoder.readElement()

        self.assertTrue(self.executed)
        self.assertTrue(isinstance(foo, Foo))
        self.assertEquals(foo.spam, 'hello')
        self.assertEquals(foo.eggs, True)

        pyamf.unregister_class(Foo)
コード例 #13
0
    def BuildAmfRequest(self, key, url, exp_id, contentRefId = None, contentId = None):
       self.log(u'ContentRefId:' + str(contentRefId) + u'contentId:' + str(contentId) + u', ExperienceId:' + str(exp_id) + u', URL:' + url)  

       method = u"com.brightcove.experience.ExperienceRuntimeFacade.getDataForExperience"
       className = method[0:method.rfind('.')]
       hashValue = self.GetAmfClassHash(className)

       self.log(u'hashValue:' + str(hashValue))
 
       pyamf.register_class(ViewerExperienceRequest, u'com.brightcove.experience.ViewerExperienceRequest')
       pyamf.register_class(ContentOverride, u'com.brightcove.experience.ContentOverride')
       content_override = ContentOverride(contentRefId = contentRefId, contentId = contentId)
       viewer_exp_req = ViewerExperienceRequest(url, [content_override], int(exp_id), key)
    
       self.log( content_override.tostring() )
       self.log( viewer_exp_req.tostring() )
    
       env = remoting.Envelope(amfVersion=3)
       env.bodies.append(
          (
             "/1",
             remoting.Request(
                target=method,
                body=[hashValue, viewer_exp_req],
                envelope=env
             )
          )
       )
       return env
コード例 #14
0
    def GetEpisodeInfo(self, key, url, playerId, contentRefId = None, contentId = None):
        self.log(u'ContentRefId:' + str(contentRefId) + u'contentId:' + str(contentId) + u', URL:' + url + u', playerId: ' + unicode(playerId) + u', key: ' + unicode(key) )  
        self.log(u"RemotingService", xbmc.LOGDEBUG)
        
        try:            
            if self.proxyConfig is not None: 
                self.proxyConfig.Enable()
            
            serviceName = 'com.brightcove.experience.ExperienceRuntimeFacade'
            service = self.GetRemotingService(key, serviceName)

            hashValue = self.GetAmfClassHash(serviceName)
            self.log(u'hashValue:' + str(hashValue))
         
            pyamf.register_class(ViewerExperienceRequest, 'com.brightcove.experience.ViewerExperienceRequest')
            pyamf.register_class(ContentOverride, 'com.brightcove.experience.ContentOverride')
            content_override = ContentOverride(contentRefId = contentRefId, contentId = contentId)
            viewer_exp_req = ViewerExperienceRequest(url, [content_override], int(playerId), key)
            
            self.log( content_override.tostring() )
            self.log( viewer_exp_req.tostring() )
    
            # Make the request
            response = service.getDataForExperience(hashValue, viewer_exp_req)
            
            self.log(u"response: " + utils.drepr(response), xbmc.LOGDEBUG)
        finally:
            if self.proxyConfig is not None: 
                self.proxyConfig.Disable()
    
        return response
コード例 #15
0
    def test_decode(self):
        pyamf.register_class(PetModel, "Pet")
        k = str(self.jessica.key())

        bytes = (
            "\x10\x00\x03Pet\x00\x04_key\x02%s%s\x00\x04type\x02\x00"
            + "\x03cat\x00\x10weight_in_pounds\x00@\x14\x00\x00\x00\x00\x00"
            + "\x00\x00\x04name\x02\x00\x07Jessica\x00\tbirthdate\x0bB^\xc4"
            + "\xae\xaa\x00\x00\x00\x00\x00\x00\x12spayed_or_neutered"
            + "\x01\x00\x00\x00\t"
        )
        bytes = bytes % (struct.pack(">H", len(k)), k)

        decoder = pyamf.get_decoder(pyamf.AMF0)
        context = decoder.context
        stream = decoder.stream

        stream.write(bytes * 2)
        stream.seek(0)

        j = decoder.readElement()
        alias = context.getClassAlias(PetModel)

        self.assertTrue(isinstance(j, PetModel))
        self.assertTrue(isinstance(alias, adapter_db.DataStoreClassAlias))

        self.assertEquals(context.gae_objects, {PetModel: {k: j}})

        j2 = decoder.readElement()

        self.assertTrue(isinstance(j2, PetModel))
        self.assertEquals(context.gae_objects, {PetModel: {k: j}})
コード例 #16
0
ファイル: test_amf3.py プロジェクト: MyaThandarKyaw/pyamf
    def test_get_reference(self):
        x = amf3.Context()
        y = [1, 2, 3]
        z = {'spam': 'eggs'}

        spam_alias = pyamf.register_class(Spam, 'spam.eggs')

        class Foo:
            pass

        foo_alias = pyamf.register_class(Foo, 'foo.bar')

        a = amf3.ClassDefinition(spam_alias)
        b = amf3.ClassDefinition(foo_alias)

        ref1 = x.addObject(y)
        ref2 = x.addObject(z)
        x.addString('abc')
        x.addString('def')
        x.addClass(a, Spam)
        x.addClass(b, Foo)

        self.assertEqual(x.getObjectReference(y), ref1)
        self.assertEqual(x.getObjectReference(z), ref2)
        self.assertEqual(x.getObjectReference({}), -1)

        self.assertEqual(x.getStringReference('abc'), 0)
        self.assertEqual(x.getStringReference('def'), 1)
        self.assertEqual(x.getStringReference('asdfas'), -1)

        self.assertEqual(x.getClass(Spam), a)
        self.assertEqual(x.getClass(Foo), b)
        self.assertEqual(x.getClass(object()), None)
コード例 #17
0
    def test_decode(self):
        pyamf.register_class(ListModel, "list-model")

        decoder = pyamf.get_decoder(pyamf.AMF0)
        decoder.stream.write(
            "\x10\x00\nlist-model\x00\x07numbers\n\x00\x00"
            "\x00\x05\x00@\x00\x00\x00\x00\x00\x00\x00\x00@\x10\x00\x00\x00"
            "\x00\x00\x00\x00@\x18\x00\x00\x00\x00\x00\x00\x00@ \x00\x00"
            "\x00\x00\x00\x00\x00@$\x00\x00\x00\x00\x00\x00\x00\x00\t"
        )
        decoder.stream.seek(0)

        x = decoder.readElement()

        self.assertTrue(isinstance(x, ListModel))
        self.assertTrue(hasattr(x, "numbers"))
        self.assertEquals(x.numbers, [2, 4, 6, 8, 10])

        decoder = pyamf.get_decoder(pyamf.AMF3)
        decoder.stream.write("\n\x0b\x15list-model\x0fnumbers\t\x0b\x01\x04\x02\x04" "\x04\x04\x06\x04\x08\x04\n\x01")
        decoder.stream.seek(0)

        x = decoder.readElement()

        self.assertTrue(isinstance(x, ListModel))
        self.assertTrue(hasattr(x, "numbers"))
        self.assertEquals(x.numbers, [2, 4, 6, 8, 10])
コード例 #18
0
ファイル: test_basic.py プロジェクト: kruser/zualoo
    def test_external(self):
        class A(object):
            pass

        class B:
            pass

        self.assertRaises(AttributeError, pyamf.register_class, A, metadata=["external"])
        self.assertRaises(AttributeError, pyamf.register_class, B, metadata=["external"])

        A.__readamf__ = None
        B.__readamf__ = None

        self.assertRaises(AttributeError, pyamf.register_class, A, metadata=["external"])
        self.assertRaises(AttributeError, pyamf.register_class, B, metadata=["external"])

        A.__readamf__ = lambda x: None
        B.__readamf__ = lambda x: None

        self.assertRaises(AttributeError, pyamf.register_class, A, metadata=["external"])
        self.assertRaises(AttributeError, pyamf.register_class, B, metadata=["external"])

        A.__writeamf__ = "foo"
        B.__writeamf__ = "bar"

        self.assertRaises(TypeError, pyamf.register_class, A, metadata=["external"])
        self.assertRaises(TypeError, pyamf.register_class, B, metadata=["external"])

        A.__writeamf__ = lambda x: None
        B.__writeamf__ = lambda x: None

        pyamf.register_class(A, metadata=["external"])
        pyamf.register_class(B, metadata=["external"])
コード例 #19
0
    def test_dynamic(self):
        pyamf.register_class(Spam, attr_func=ord, metadata=['dynamic'])

        alias = pyamf.CLASS_CACHE['%s.%s' % (Spam.__module__, Spam.__name__,)]

        self.assertTrue('dynamic' in alias.metadata)
        self.assertEquals(alias.attr_func, ord)
コード例 #20
0
ファイル: test_ndb.py プロジェクト: nervatura/nerva2py
    def test_but_missing(self):
        """
        .model is set to a key but the entity does not exist - pyamf must
        handle the encode and decode cases.
        """
        pyamf.register_class(models.Pet, 'pet')
        pyamf.register_class(models.SuperModel, 'supermodel')

        pet_key = ndb.Key('Pet', 'foobar')
        model_key = ndb.Key('SuperModel', 'barfoo')

        self.assertIsNone(model_key.get())

        pet = models.Pet(key=pet_key, model=model_key)

        pet.put()

        bytes = (
            b'\n\x0b\x07pet', (
                b'\t_key\x06Uagx0ZXN0YmVkLXRlc3RyDwsSA1BldCIGZm9vYmFyDA',
                b'\x0bmodel\x06gagx0ZXN0YmVkLXRlc3RyFgsSClN1cGVyTW9kZWwiBmJhcm'
                b'Zvbww',
                b'\tname\x01',
            ),
            b'\x01'
        )

        self.assertEncodes(pet, bytes)
        self.assertDecodes(bytes, pet)
コード例 #21
0
ファイル: test_amf0.py プロジェクト: cardmagic/PyAMF
    def test_simple(self):
        class A(object):
            class __amf__:
                static = ('a')


        class B(A):
            class __amf__:
                static = ('b')

        pyamf.register_class(A, 'A')
        pyamf.register_class(B, 'B')

        x = B()
        x.a = 'spam'
        x.b = 'eggs'

        stream = util.BufferedByteStream()
        encoder = pyamf._get_encoder_class(pyamf.AMF0)(stream)

        encoder.writeElement(x)

        self.assertTrue(check_buffer(stream.getvalue(), ('\x10\x00\x01B', (
            '\x00\x01a\x02\x00\x04spam',
            '\x00\x01b\x02\x00\x04eggs'
        ), '\x00\x00\t')))
コード例 #22
0
    def test_expando(self):
        class Author(db.Expando):
            name = db.StringProperty()

        class Novel(db.Expando):
            title = db.StringProperty()
            author = db.ReferenceProperty(Author)

        a = Author(name='Jane Austen')
        a.put()
        k = str(a.key())

        b = Novel(title='Sense and Sensibility', author=a)

        self.assertEquals(b.author, a)

        try:
            encoder = pyamf.get_encoder(pyamf.AMF0)

            encoder.writeElement(b)
            self.assertEquals(encoder.stream.getvalue(),
                '\x03\x00\x04_key\x05\x00\x06author\x03\x00\x04_key\x02%s%s'
                '\x00\x04name\x02\x00\x0bJane Austen\x00\x00\t\x00\x05title'
                '\x02\x00\x15Sense and Sensibility\x00\x00\t' % (
                    struct.pack('>H', len(k)), k))

            encoder = pyamf.get_encoder(pyamf.AMF3)

            encoder.writeElement(b)
            self.assertEquals(encoder.stream.getvalue(),
                '\n;\x01\t_key\rauthor\x0btitle\x01\n+\x01\x00\tname\x06%s%s'
                '\x06\x17Jane Austen\x01\x06+Sense and Sensibility\x01' % (
                    amf3._encode_int(len(k) << 1 | amf3.REFERENCE_BIT), k))

            # now test with aliases ..
            pyamf.register_class(Author, 'Author')
            pyamf.register_class(Novel, 'Novel')

            encoder = pyamf.get_encoder(pyamf.AMF0)

            encoder.writeElement(b)
            self.assertEquals(encoder.stream.getvalue(), '\x10\x00\x05Novel'
                '\x00\x04_key\x05\x00\x06author\x10\x00\x06Author\x00\x04_key'
                '\x02%s%s\x00\x04name\x02\x00\x0bJane Austen\x00\x00\t\x00'
                '\x05title\x02\x00\x15Sense and Sensibility\x00\x00\t' % (
                    struct.pack('>H', len(k)), k))

            encoder = pyamf.get_encoder(pyamf.AMF3)

            encoder.writeElement(b)
            self.assertEquals(encoder.stream.getvalue(),
                '\n;\x0bNovel\t_key\rauthor\x0btitle\x01\n+\rAuthor\x02\tname'
                '\x06%s%s\x06\x17Jane Austen\x01\x06+Sense and Sensibility'
                '\x01' % (amf3._encode_int(len(k) << 1 | amf3.REFERENCE_BIT), k))
        except:
            a.delete()
            raise

        a.delete()
コード例 #23
0
ファイル: client.py プロジェクト: cardmagic/PyAMF
def main():
    """
    Entry point for this client script.
    """
    url = 'http://%s:%d' % (host_info[0], host_info[1])
    client = RemotingService(url, logger=logging)
    print "Client running - pointing to server at %s" % url

    # at this point, calling the service gets us a dict of values
    user_service = client.getService('user')
    lenards = user_service.get_user('lenards')

    # in case you don't believe me - this shows I'm not lying
    logging.debug("isinstance(lenards, dict): %s" % isinstance(lenards, dict))

    # the User class attributes are not present at this point
    logging.debug("not hasattr(lenards, 'username'): %s" %
                  (not hasattr(lenards, 'username')))
    logging.debug("not hasattr(lenards, 'email'): %s" %
                  (not hasattr(lenards, 'email')))
    logging.debug("not hasattr(lenards, 'password'): %s" %
                  (not hasattr(lenards, 'password')))

    # but the values are there
    logging.debug("lenards['username'] == 'lenards': %s" %
                  (lenards['username'] == 'lenards'))
    logging.debug("lenards['email'] == '*****@*****.**': %s" %
                  (lenards['email'] == '*****@*****.**'))

    logging.debug("Output 'lenards': %s" % lenards)

    # if we register the class and the namespace, we get an object ref
    # (complete with attributes and such)
    logging.debug("Register UserDataTransferObject class...")
    pyamf.register_class(UserDataTransferObject, '%s.User' % AMF_NAMESPACE)

    logging.debug("Get a user from the server...")
    usr = user_service.get_user('lisa')

    # ensure it's the class we expect
    logging.debug("Ensure the class we got is our DTO, " +
                  "isinstance(usr, UserDataTransferObject): %s" %
                  isinstance(usr, UserDataTransferObject))

    # verify it has expected attributes
    logging.debug("Verify attributes present...")
    logging.debug("usr.username: %s" % usr.username)
    logging.debug("usr.email == '*****@*****.**': %s" %
                  (usr.email == '*****@*****.**'))
    logging.debug("usr.password == 'h1k3r': %s" %
                  (usr.password == 'h1k3r'))

    logging.debug("Output user returned: %s" % usr)

    # request an unknown user
    logging.debug("Try to get a user that does not exist...")
    george = user_service.get_user('george')

    logging.debug("Output returned: %s" % george)
コード例 #24
0
ファイル: test_amf0.py プロジェクト: notnola/pinychat
    def test_typed_object(self):
        pyamf.register_class(Spam, alias='org.pyamf.spam')

        x = Spam()
        x.baz = 'hello'

        self.assertEncoded(x, '\x10\x00\x0eorg.pyamf.spam\x00\x03baz'
            '\x02\x00\x05hello\x00\x00\t')
コード例 #25
0
    def setUp(self):
        BaseTestCase.setUp(self)
        JessicaMixIn.setUp(self)

        pyamf.register_class(self.jessica_class, 'Pet')

        self.put(self.jessica)
        self.key = str(self.jessica.key())
コード例 #26
0
    def test_anonymous(self):
        pyamf.register_class(Spam)

        x = pyamf.get_class_alias(Spam)

        self.assertTrue(isinstance(x, pyamf.ClassAlias))
        self.assertEquals(x.klass, Spam)
        self.assertEquals(x.alias, '%s.%s' % (Spam.__module__, Spam.__name__,))
コード例 #27
0
 def __init__(self):
     
     self.started = False
     self.encoder = pyamf.get_encoder(self.encoding)
     self.stream = self.encoder.stream
     self.context= self.encoder.context
     pyamf.register_class(Screen, "Screen")
     amf3.use_proxies_default = True
コード例 #28
0
ファイル: test_google.py プロジェクト: 0xmilk/appscale
    def test_none(self):
        pyamf.register_class(test_models.ListModel, 'list-model')

        bytes = '\x10\x00\nlist-model\x00\x07numbers\x05\x00\x00\t'

        x = self.decode(bytes, encoding=pyamf.AMF0)

        self.assertEqual(x.numbers, [])
コード例 #29
0
ファイル: test_elixir.py プロジェクト: cardmagic/PyAMF
    def setUp(self):
        e.create_all()

        self.movie_alias = pyamf.register_class(Movie, 'movie')
        self.genre_alias = pyamf.register_class(Genre, 'genre')
        self.director_alias = pyamf.register_class(Director, 'director')

        self.create_movie_data()
コード例 #30
0
    def test_force_amf3(self):
        pyamf.register_class(Spam, 'spam.eggs', metadata=['amf3'])

        x = Spam()
        x.x = 'y'

        self._run([
            (x, '\x11\n\x0b\x13spam.eggs\x03x\x06\x03y\x01')])
コード例 #31
0
    def test_object(self):
        pyamf.register_class(Spam, 'org.pyamf.spam')

        self.buf.truncate(0)
        self.buf.write(
            '\x0a\x13\x1dorg.pyamf.spam\x07baz\x06\x0b\x68\x65\x6c\x6c\x6f')
        self.buf.seek(0)

        obj = self.decoder.readElement()

        self.assertEqual(obj.__class__, Spam)

        self.assertTrue(hasattr(obj, 'baz'))
        self.assertEqual(obj.baz, 'hello')
コード例 #32
0
    def test_typed(self):
        class XYZ(Exception):
            pass

        pyamf.register_class(XYZ, 'foo.bar')

        try:
            raise XYZ('blarg')
        except Exception as e:
            self.encoder.writeElement(e)

        self.assertEqual(
            self.buf.getvalue(), '\n\x0b\x0ffoo.bar\x0f'
            'message\x06\x0bblarg\tname\x06\x07XYZ\x01')
コード例 #33
0
ファイル: test_xdb.py プロジェクト: startup-one/cogofly
    def test_alias_amf0(self):
        pyamf.register_class(models.PetExpando, 'Pet')
        bytes = pyamf.encode(self.jessica, encoding=pyamf.AMF0).getvalue()

        self.assertBuffer(
            bytes,
            ('\x10\x00\x03Pet',
             ('\x00\x04_key%s' % self.encodeKey(self.jessica, pyamf.AMF0),
              '\x00\tbirthdate\x0bB^\xc4\xae\xaa\x00\x00\x00\x00\x00',
              '\x00\x04name\x02\x00\x07Jessica',
              '\x00\x12spayed_or_neutered\x01\x00',
              '\x00\x04type\x02\x00\x03cat',
              '\x00\x10weight_in_pounds\x00@\x14\x00\x00\x00\x00\x00\x00',
              '\x00\x03foo\x02\x00\x03bar'), '\x00\x00\t'))
コード例 #34
0
    def test_dynamic(self):
        pyamf.register_class(Spam, 'abc.xyz')

        self.buf.write('\x0a\x0b\x0fabc.xyz\x09spam\x06\x09eggs\x01')
        self.buf.seek(0, 0)

        obj = self.decoder.readElement()

        class_def = self.context.getClass(Spam)

        self.assertEqual(class_def.static_properties, [])

        self.assertTrue(isinstance(obj, Spam))
        self.assertEqual(obj.__dict__, {'spam': 'eggs'})
コード例 #35
0
    def test_registered_alias(self):
        x = pyamf.BaseContext()

        self.assertEquals(x.class_aliases, {})

        class A:
            pass

        pyamf.register_class(A)
        alias = x.getClassAlias(A)

        self.assertTrue(isinstance(alias, pyamf.ClassAlias))
        self.assertEquals(alias.__class__, pyamf.ClassAlias)
        self.assertEquals(alias.klass, A)
コード例 #36
0
ファイル: test_amf0.py プロジェクト: sasqwatch/deblaze
    def test_slots_registered(self):
        class Person(object):
            __slots__ = ('family_name', 'given_name')

        u = Person()
        u.family_name = 'Doe'
        u.given_name = 'Jane'

        pyamf.register_class(Person, 'spam.eggs.Person')
        self.encoder.writeElement(u)

        self.assertEquals(self.buf.getvalue(), '\x10\x00\x10spam.eggs.Person'
            '\x00\x0bfamily_name\x02\x00\x03Doe\x00\ngiven_name\x02\x00\x04'
            'Jane\x00\x00\t')
コード例 #37
0
    def test_get_by_reference(self):
        x = amf3.Context()
        y = [1, 2, 3]
        z = {'spam': 'eggs'}

        alias_spam = pyamf.register_class(Spam, 'spam.eggs')

        class Foo:
            pass

        class Bar:
            pass

        alias_foo = pyamf.register_class(Foo, 'foo.bar')

        a = amf3.ClassDefinition(alias_spam)
        b = amf3.ClassDefinition(alias_foo)

        x.addObject(y)
        x.addObject(z)
        x.addString('abc')
        x.addString('def')
        x.addClass(a, Foo)
        x.addClass(b, Bar)

        self.assertEqual(x.getObject(0), y)
        self.assertEqual(x.getObject(1), z)
        self.assertEqual(x.getObject(2), None)
        self.assertRaises(TypeError, x.getObject, '')
        self.assertRaises(TypeError, x.getObject, 2.2323)

        self.assertEqual(x.getString(0), 'abc')
        self.assertEqual(x.getString(1), 'def')
        self.assertEqual(x.getString(2), None)
        self.assertRaises(TypeError, x.getString, '')
        self.assertRaises(TypeError, x.getString, 2.2323)

        self.assertEqual(x.getClass(Foo), a)
        self.assertEqual(x.getClass(Bar), b)
        self.assertEqual(x.getClass(2), None)

        self.assertEqual(x.getClassByReference(0), a)
        self.assertEqual(x.getClassByReference(1), b)
        self.assertEqual(x.getClassByReference(2), None)

        self.assertEqual(x.getObject(2), None)
        self.assertEqual(x.getString(2), None)
        self.assertEqual(x.getClass(2), None)
        self.assertEqual(x.getClassByReference(2), None)
コード例 #38
0
    def test_simple_named_alias(self):
        """
        Register SimpleEntity as a named class.
        """
        pyamf.register_class(models.SimpleEntity, 'foo.bar')

        entity = models.SimpleEntity()

        self.assertEncodes(
            entity,
            (b'\x10\x00', b'\x07foo.bar', b'\x00\x04_key\x05', b'\x00\x00\t'),
            encoding=pyamf.AMF0)

        self.assertEncodes(entity, ('\n\x0b\x0ffoo.bar\t_key\x01\x01'),
                           encoding=pyamf.AMF3)
コード例 #39
0
ファイル: test_basic.py プロジェクト: lukewiersma/redcop
    def test_metadata(self):
        self.assertRaises(ValueError,
                          pyamf.register_class,
                          Spam,
                          'spam.eggs',
                          metadata=['static'])
        pyamf.register_class(Spam,
                             'spam.eggs',
                             metadata=['static'],
                             attrs=['x'])
        alias = pyamf.CLASS_CACHE['spam.eggs']

        self.assertEquals(alias.metadata, ['static'])
        self.assertEquals(alias.attrs, ['x'])
        self.assertTrue(isinstance(alias.metadata, pyamf.ClassMetaData))
コード例 #40
0
    def test_nonexternal_subclassed_list(self):
        class L(list):
            pass

        pyamf.register_class(L, 'a')

        a = L()

        a.append('foo')
        a.append('bar')

        self.encoder.writeElement(a)

        self.assertEquals(self.buf.getvalue(),
            '\n\x00\x00\x00\x02\x02\x00\x03foo\x02\x00\x03bar')
コード例 #41
0
    def setUp(self):
        a = pyamf.register_class(builder.SomeClass,
                                 builder.aliases[builder.SomeClass])

        a.compile()

        builder.SomeStaticClass.__amf__ = {
            'dynamic': False,
            'static': ('name', 'score', 'rank')
        }

        a = pyamf.register_class(builder.SomeStaticClass,
                                 builder.aliases[builder.SomeStaticClass])

        a.compile()
コード例 #42
0
ファイル: test_amf0.py プロジェクト: startup-one/cogofly
    def test_typed(self):
        class XYZ(Exception):
            pass

        pyamf.register_class(XYZ, 'foo.bar')

        try:
            raise XYZ('blarg')
        except Exception as e:
            self.encoder.writeElement(e)

        self.assertEqual(
            self.buffer.getvalue(), '\x10\x00\x07foo.bar\x00'
            '\x07message\x02\x00\x05blarg\x00\x04name\x02\x00\x03XYZ\x00\x00\t'
        )
コード例 #43
0
ファイル: test_amf0.py プロジェクト: startup-one/cogofly
    def test_old_style_classes(self):
        class Person:
            pass

        pyamf.register_class(Person, 'spam.eggs.Person')

        u = Person()
        u.family_name = 'Doe'
        u.given_name = 'Jane'

        self.encoder.writeElement(u)

        self.assertEncoded(u, '\x10\x00\x10spam.eggs.Person',
                           ('\x00\x0bfamily_name\x02\x00\x03Doe',
                            '\x00\ngiven_name\x02\x00\x04Jane'), '\x00\x00\t')
コード例 #44
0
ファイル: test_amf0.py プロジェクト: startup-one/cogofly
    def test_static_attrs(self):
        class Foo(object):
            class __amf__:
                static = ('foo', 'bar')

        pyamf.register_class(Foo)

        x = Foo()
        x.foo = 'baz'
        x.bar = 'gak'

        self.assertEncoded(
            x, '\x03',
            ('\x00\x03bar\x02\x00\x03gak', '\x00\x03foo\x02\x00\x03baz'),
            '\x00\x00\t')
コード例 #45
0
ファイル: test_amf0.py プロジェクト: startup-one/cogofly
    def test_slots_registered(self):
        class Person(object):
            __slots__ = ('family_name', 'given_name')

        pyamf.register_class(Person, 'spam.eggs.Person')

        self.buf.write('\x10\x00\x10spam.eggs.Person\x00\x0bfamily_name\x02'
                       '\x00\x03Doe\x00\ngiven_name\x02\x00\x04Jane\x00\x00\t')
        self.buf.seek(0)

        foo = self.decoder.readElement()

        self.assertTrue(isinstance(foo, Person))
        self.assertEqual(foo.family_name, 'Doe')
        self.assertEqual(foo.given_name, 'Jane')
コード例 #46
0
    def test_encode_amf0_registered(self):
        pyamf.register_class(test_models.ListModel, 'list-model')

        bytes = (
            '\x10\x00\nlist-model', (
                '\x00\x04_key\x05',
                '\x00\x07numbers\n\x00\x00\x00\x05\x00@'
                '\x00\x00\x00\x00\x00\x00\x00\x00@\x10\x00\x00\x00\x00\x00'
                '\x00\x00@\x18\x00\x00\x00\x00\x00\x00\x00@\x20\x00\x00\x00'
                '\x00\x00\x00\x00@$\x00\x00\x00\x00\x00\x00'
            ),
            '\x00\x00\t'
        )

        self.assertEncodes(self.obj, bytes, encoding=pyamf.AMF0)
コード例 #47
0
    def test_alias_amf3(self):
        pyamf.register_class(test_models.PetExpando, 'Pet')

        bytes = (
            '\n\x0b\x07Pet', (
                '\tname\x06\x0fJessica',
                '\t_key%s' % self.encodeKey(self.jessica, pyamf.AMF3),
                '\x13birthdate\x08\x01B^\xc4\xae\xaa\x00\x00\x00',
                '!weight_in_pounds\x04\x05',
                '\x07foo\x06\x07bar',
                '\ttype\x06\x07cat',
                '%spayed_or_neutered\x02\x01'
            ))

        self.assertEncodes(self.jessica, bytes, encoding=pyamf.AMF3)
コード例 #48
0
    def test_get_attrs(self):
        pyamf.register_class(Spam)
        alias = pyamf.get_class_alias(Spam)

        x = Spam()
        self.assertEquals(alias.getAttrs(x), None)

        pyamf.unregister_class(Spam)

        pyamf.register_class(Spam, attrs=['foo'])
        alias = pyamf.get_class_alias(Spam)

        x = Spam()
        self.assertEquals(alias.getAttrs(x), ['foo'])

        pyamf.unregister_class(Spam)

        pyamf.register_class(Spam, metadata=['dynamic'])
        alias = pyamf.get_class_alias(Spam)

        x = Spam()
        self.assertEquals(alias.getAttrs(x), None)

        pyamf.unregister_class(Spam)

        def af(x):
            self.assertEquals(self._obj, x)

            return ['bar']

        pyamf.register_class(Spam, attr_func=af, metadata=['dynamic'])
        alias = pyamf.get_class_alias(Spam)

        self._obj = Spam()
        self.assertEquals(alias.getAttrs(self._obj), ['bar'])

        pyamf.unregister_class(Spam)

        def af(x):
            self.assertEquals(self._obj, x)

            return ['bar']

        pyamf.register_class(Spam, attrs=['foo', 'bar'], attr_func=af, metadata=['dynamic'])
        alias = pyamf.get_class_alias(Spam)

        self._obj = Spam()
        self.assertEquals(alias.getAttrs(self._obj), ['foo', 'bar'])
コード例 #49
0
ファイル: test_amf0.py プロジェクト: georgehedfors/AMFShell
    def test_static_attrs(self):
        class Foo(object):
            class __amf__:
                static = ('foo', 'bar')

        pyamf.register_class(Foo)

        x = Foo()
        x.foo = 'baz'
        x.bar = 'gak'

        self.encoder.writeElement(x)

        self.assertEquals(
            self.buf.getvalue(), '\x03\x00\x03bar\x02\x00\x03gak'
            '\x00\x03foo\x02\x00\x03baz\x00\x00\t')
コード例 #50
0
    def test_old_style_classes(self):
        class Person:
            pass

        pyamf.register_class(Person, 'spam.eggs.Person')

        u = Person()
        u.family_name = 'Doe'
        u.given_name = 'Jane'

        self.encoder.writeElement(u)

        self.assertEquals(
            self.buf.getvalue(), '\x10\x00\x10spam.eggs.Person'
            '\x00\x0bfamily_name\x02\x00\x03Doe\x00\ngiven_name\x02\x00\x04'
            'Jane\x00\x00\t')
コード例 #51
0
    def test_klass(self):
        alias = pyamf.register_class(Spam, 'spam.eggs')

        pyamf.unregister_class(Spam)
        self.assertTrue('spam.eggs' not in pyamf.CLASS_CACHE.keys())
        self.assertTrue(Spam not in pyamf.CLASS_CACHE.keys())
        self.assertTrue(alias not in pyamf.CLASS_CACHE)
コード例 #52
0
    def test_alias_amf0(self):
        pyamf.register_class(test_models.PetModel, 'Pet')

        bytes = (
            '\x10\x00\x03Pet', (
                '\x00\x04_key%s' % self.encodeKey(self.jessica, pyamf.AMF0),
                '\x00\tbirthdate\x0bB^\xc4\xae\xaa\x00\x00\x00\x00\x00',
                '\x00\x04name\x02\x00\x07Jessica',
                '\x00\x12spayed_or_neutered\x01\x00',
                '\x00\x04type\x02\x00\x03cat',
                '\x00\x10weight_in_pounds\x00@\x14\x00\x00\x00\x00\x00\x00'
            ),
            '\x00\x00\t'
        )

        self.assertEncodes(self.jessica, bytes, encoding=pyamf.AMF0)
コード例 #53
0
    def test_slots(self):
        class Person(object):
            __slots__ = ('family_name', 'given_name')

        pyamf.register_class(Person, 'spam.eggs.Person')

        self.buf.write('\n+!spam.eggs.Person\x17family_name\x15given_name\x06'
                       '\x07Doe\x06\tJane\x02\x06\x06\x04\x06\x08\x01')
        self.buf.seek(0)

        foo = self.decoder.readElement()

        self.assertTrue(isinstance(foo, Person))
        self.assertEqual(foo.family_name, 'Doe')
        self.assertEqual(foo.given_name, 'Jane')
        self.assertEqual(self.buf.remaining(), 0)
コード例 #54
0
    def test_model(self):
        a = Author(name='Jane Austen')
        self.put(a)
        k = str(a.key())

        amf0_k = struct.pack('>H', len(k)) + k
        amf3_k = amf3.encode_int(len(k) << 1 | amf3.REFERENCE_BIT) + k

        b = Novel(title='Sense and Sensibility', author=a)

        self.assertIdentical(b.author, a)

        bytes = ('\x03', ('\x00\x05title\x02\x00\x15Sense and Sensibility',
                          '\x00\x04_key\x02' + amf0_k, '\x00\x06author\x03',
                          ('\x00\x04name\x02\x00\x0bJane Austen',
                           '\x00\x04_key\x05'), '\x00\x00\t'), '\x00\x00\t')

        self.assertEncodes(b, bytes, encoding=pyamf.AMF0)

        bytes = ('\n\x0b\x01',
                 (('\rauthor\n\x0b\x01', ('\t_key\x06' + amf3_k,
                                          '\tname\x06\x17Jane Austen'),
                   '\x01\x06\x01'),
                  '\x0btitle\x06+Sense and Sensibility'), '\x01')

        self.assertEncodes(b, bytes, encoding=pyamf.AMF3)

        # now test with aliases ..
        pyamf.register_class(Author, 'Author')
        pyamf.register_class(Novel, 'Novel')

        bytes = ('\x10\x00\x05Novel',
                 ('\x00\x05title\x02\x00\x15Sense and Sensibility',
                  '\x00\x04_key\x02' + amf0_k,
                  '\x00\x06author\x10\x00\x06Author',
                  ('\x00\x04name\x02\x00\x0bJane Austen',
                   '\x00\x04_key\x05'), '\x00\x00\t'), '\x00\x00\t')

        self.assertEncodes(b, bytes, encoding=pyamf.AMF0)

        bytes = ('\n\x0b\x0bNovel',
                 (('\rauthor\n\x0b\rAuthor', ('\t_key\x06' + amf3_k,
                                              '\tname\x06\x17Jane Austen'),
                   '\x01\n\x01'),
                  '\x0btitle\x06+Sense and Sensibility'), '\x01')

        self.assertEncodes(b, bytes, encoding=pyamf.AMF3)
コード例 #55
0
ファイル: test_google.py プロジェクト: ruwix/TVWeb
    def test_model(self):
        a = test_models.Author(name='Jane Austen')
        self.put(a)
        k = str(a.key())

        amf0_k = self.encodeKey(a, pyamf.AMF0)
        amf3_k = self.encodeKey(a, pyamf.AMF3)

        b = test_models.Novel(title='Sense and Sensibility', author=a)

        self.assertIdentical(b.author, a)

        bytes = ('\x03', ('\x00\x05title\x02\x00\x15Sense and Sensibility',
                          '\x00\x04_key' + amf0_k, '\x00\x06author\x03',
                          ('\x00\x04name\x02\x00\x0bJane Austen',
                           '\x00\x04_key\x05'), '\x00\x00\t'), '\x00\x00\t')

        self.assertEncodes(b, bytes, encoding=pyamf.AMF0)

        bytes = ('\n\x0b\x01',
                 (('\rauthor\n\x0b\x01', ('\t_key' + amf3_k,
                                          '\tname\x06\x17Jane Austen'),
                   '\x01\x06\x01'),
                  '\x0btitle\x06+Sense and Sensibility'), '\x01')

        self.assertEncodes(b, bytes, encoding=pyamf.AMF3)

        # now test with aliases ..
        pyamf.register_class(test_models.Author, 'Author')
        pyamf.register_class(test_models.Novel, 'Novel')

        bytes = ('\x10\x00\x05Novel',
                 ('\x00\x05title\x02\x00\x15Sense and Sensibility',
                  '\x00\x04_key' + amf0_k, '\x00\x06author\x10\x00\x06Author',
                  ('\x00\x04name\x02\x00\x0bJane Austen',
                   '\x00\x04_key\x05'), '\x00\x00\t'), '\x00\x00\t')

        self.assertEncodes(b, bytes, encoding=pyamf.AMF0)

        bytes = ('\n\x0b\x0bNovel',
                 (('\rauthor\n\x0b\rAuthor', ('\t_key' + amf3_k,
                                              '\tname\x06\x17Jane Austen'),
                   '\x01\n\x01'),
                  '\x0btitle\x06+Sense and Sensibility'), '\x01')

        self.assertEncodes(b, bytes, encoding=pyamf.AMF3)
コード例 #56
0
 def get_clip_info(self, contentID, url):
  import pyamf
  #from pyamf import register_class
  from pyamf import remoting
  import httplib
  conn = httplib.HTTPConnection("c.brightcove.com")
  pyamf.register_class(ViewerExperienceRequest, 'com.brightcove.experience.ViewerExperienceRequest')
  pyamf.register_class(ContentOverride, 'com.brightcove.experience.ContentOverride')
  viewer_exp_req = ViewerExperienceRequest(url, [ContentOverride(contentID)], self.urls['experienceID'], "")
  env = remoting.Envelope(amfVersion = 3)
  env.bodies.append(("/1",  remoting.Request(target = "com.brightcove.experience.ExperienceRuntimeFacade.getDataForExperience", body = [self.urls['const'], viewer_exp_req], envelope = env)))
  #conn.request("POST", "/services/messagebroker/amf?playerKey=" + self.urls['playerKey'], str(remoting.encode(env).read()), {'content-type': 'application/x-amf'})
  conn.request("POST", "/services/messagebroker/amf?playerId=" + self.urls['playerID'], str(remoting.encode(env).read()), {'content-type': 'application/x-amf'})
  resp = conn.getresponse().read()
  response = remoting.decode(resp).bodies[0][1].body
  self._printResponse(env, response)
  return response['programmedContent']['videoPlayer']['mediaDTO']['renditions']
コード例 #57
0
ファイル: test_amf0.py プロジェクト: startup-one/cogofly
    def test_force_amf3(self):
        alias = pyamf.register_class(Spam, 'spam.eggs')
        alias.amf3 = True

        x = Spam()
        x.x = 'y'

        self.assertEncoded(x, '\x11\n\x0b\x13spam.eggs\x03x\x06\x03y\x01')
コード例 #58
0
    def __BuildBrightCoveAmfRequest(self, playerKey, contentId, url,
                                    experienceId, seed):
        """ Builds a AMF request compatible with BrightCove

        Arguments:
        playerKey : string - Key identifying the current request
        contentId : int    - ID of the content to retrieve
        url       : string - Url of the page that calls the video SWF
        seed      : string - Constant which depends on the website

        Keyword Arguments:
        experienceId : id     - <unknown parameter>

        Returns a valid Brightcove request

        """

        if self.logger:
            self.logger.Debug(
                "Creating BrightCover request for ContentId=%s, Key=%s, ExperienceId=%s, url=%s",
                contentId, playerKey, experienceId, url)
        else:
            print "Creating BrightCover request for ContentId=%s, Key=%s, ExperienceId=%s, url=%s" % (
                contentId, playerKey, experienceId, url)

        # const = '686a10e2a34ec3ea6af8f2f1c41788804e0480cb'
        pyamf.register_class(
            ViewerExperienceRequest,
            'com.brightcove.experience.ViewerExperienceRequest')
        pyamf.register_class(ContentOverride,
                             'com.brightcove.experience.ContentOverride')

        contentOverrides = [ContentOverride(str(contentId))]
        viewerExperienceRequest = ViewerExperienceRequest(
            url, contentOverrides, int(experienceId), playerKey)

        envelope = remoting.Envelope(amfVersion=self.amfVersion)
        remotingRequest = remoting.Request(
            target=
            "com.brightcove.experience.ExperienceRuntimeFacade.getDataForExperience",
            body=[seed, viewerExperienceRequest],
            envelope=envelope)
        envelope.bodies.append(("/1", remotingRequest))

        return envelope
コード例 #59
0
    def test_external_subclassed_list(self):
        class L(list):
            def __readamf__(self, o):
                pass

            def __writeamf__(self, o):
                pass

        pyamf.register_class(L, 'a', metadata=['external'])

        a = L()

        a.append('foo')
        a.append('bar')

        self.encoder.writeElement(a)

        self.assertEquals(self.buf.getvalue(), '\x10\x00\x01a\x00\x00\t')
コード例 #60
0
    def test_simple(self):
        class A(object):
            pass

        alias = pyamf.register_class(A, 'A')
        alias.static_attrs = ['a']

        class B(A):
            pass

        alias = pyamf.register_class(B, 'B')
        alias.static_attrs = ['b']

        x = B()
        x.a = 'spam'
        x.b = 'eggs'

        self.assertEncoded(x, '\n+\x03B\x03a\x03b\x06\tspam\x06\teggs\x01')