Форк Rambox
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

153 lines
3.3 KiB

# coding=utf-8
import datetime
import pyamf
from pyamf import remoting
from pyamf.remoting import Envelope
from pyamf.remoting import Response
from pyamf.remoting import HeaderCollection
from xml.etree.cElementTree import Element, SubElement
from array import *
# create an xml document
xmlDocument = Element('root')
parent = SubElement(xmlDocument, 'parent')
child1 = SubElement(parent, 'child')
child1.text = "foo"
child1.set('id', 'c1')
child2 = SubElement(parent, 'child')
child2.text = "bar"
child2.set('id', 'c2')
# create a typed object
class Foo:
class __amf__:
dynamic = False
static = ('bar',)
pyamf.register_class(Foo, 'Foo');
foo = Foo()
foo.bar = 'baz'
# create an associative array (ECMA Array)
ecmaArray = pyamf.MixedArray({
'a': 'b',
'c': 'd',
})
#-----------------------------------------------
# AMF0 all data types
#-----------------------------------------------
envelope = Envelope(amfVersion=0)
message0 = Response({
'integer': 42,
'dbl': 90.01,
'tru': True,
'fls': False,
'str': 'sencha',
'obj': { 'a': 1, 'b': 2 },
'none': None,
'undef': pyamf.Undefined,
'ecmaArray': pyamf.MixedArray(a='1', b='2', c='3'),
'strictArray': [ 1, 2, 3 ],
'date': datetime.date(2012, 12, 31),
'xmlDocument': xmlDocument,
'typedObject': foo,
})
message1 = Response({
'text': 'hello'
})
envelope.headers['a'] = 'b';
envelope.headers['c'] = 'd';
envelope.headers['e'] = 'f';
envelope.__setitem__('msg1', message0)
envelope.__setitem__('msg2', message1)
stream = remoting.encode(envelope)
file = open('amf0-all.amf', 'w+')
file.write(stream.getvalue())
#-----------------------------------------------
# AMF0 recordset
#-----------------------------------------------
envelope = Envelope(amfVersion=0)
records = [
{ 'id': 1, 'name': 'Phil' },
{ 'id': 2, 'name': 'Don' },
{ 'id': 3, 'name': 'Kevin' }
]
message = Response(records)
envelope.__setitem__('message', message);
stream = remoting.encode(envelope)
file = open('amf0-records.amf', 'w+')
file.write(stream.getvalue())
#-----------------------------------------------
# AMF3 all data types
#-----------------------------------------------
envelope = Envelope(amfVersion=3)
message0 = Response({
'undef': pyamf.Undefined,
'none': None,
'fls': False,
'tru': True,
'integer': 42,
'dbl': 90.01,
'str': 'sencha',
'xmlDocument': xmlDocument,
'date': datetime.date(2012, 12, 31),
'array': [ 1, 2, 3 ],
'obj': { 'a': 1, 'b': 2 },
'xml': xmlDocument
})
message1 = Response({
'text': 'hello'
})
envelope.headers['a'] = 'b';
envelope.headers['c'] = 'd';
envelope.headers['e'] = 'f';
envelope.__setitem__('message0', message0)
envelope.__setitem__('message1', message1)
stream = remoting.encode(envelope)
file = open('amf3-all.amf', 'w+')
file.write(stream.getvalue())
#-----------------------------------------------
# AMF3 recordset
#-----------------------------------------------
envelope = Envelope(amfVersion=3)
records = [
{ 'id': 1, 'name': 'Phil' },
{ 'id': 2, 'name': 'Don' },
{ 'id': 3, 'name': 'Kevin' }
]
message = Response(records)
envelope.__setitem__('message', message);
stream = remoting.encode(envelope)
file = open('amf3-records.amf', 'w+')
file.write(stream.getvalue())