whatsappicloudtweetdeckhipchattelegramhangoutsslackgmailskypefacebook-workplaceoutlookemailmicrosoft-teamsdiscordmessengercustom-servicesmacoslinuxwindowsinbox
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
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()) |