"License :: OSI Approved :: MIT License",
"Natural Language :: English",
"Programming Language :: Python :: 2.7",
+ "Programming Language :: Python :: 3.2",
+ "Programming Language :: Python :: 3.3",
+ "Programming Language :: Python :: 3.4",
"Topic :: Security",
"Topic :: Software Development :: Libraries",
)
from collections import namedtuple
from collections import OrderedDict
+from .compat import iteritems
from .exception import DeserializationException
@classmethod
def _named_request(cls, request_type, request, message=None):
+ request = request.encode()
payload = struct.pack("!BB", request_type, len(request)) + request
if message is not None:
return payload + message
@classmethod
def serialize(cls, message):
def encode_named_type(marker, name):
- name = str(name)
+ name = name.encode()
return struct.pack("!BB", marker, len(name)) + name
def encode_blob(value):
- value = str(value)
+ if not isinstance(value, bytes):
+ value = str(value).encode()
return struct.pack("!H", len(value)) + value
def serialize_list(lst):
- segment = str()
+ segment = bytes()
for item in lst:
segment += struct.pack("!B", cls.LIST_ITEM) + encode_blob(item)
return segment
def serialize_dict(d):
- segment = str()
- for key, value in d.iteritems():
+ segment = bytes()
+ for key, value in iteritems(d):
if isinstance(value, dict):
segment += (
encode_named_type(cls.SECTION_START, key)
def deserialize(cls, stream):
def decode_named_type(stream):
length, = struct.unpack("!B", stream.read(1))
- return stream.read(length)
+ return stream.read(length).decode()
def decode_blob(stream):
length, = struct.unpack("!H", stream.read(2))
command_response = Message.deserialize(response.payload)
if "success" in command_response:
- if command_response["success"] != "yes":
+ if command_response["success"] != b"yes":
raise CommandException(
"Command failed: {errmsg}".format(
errmsg=command_response["errmsg"]
# evaluate command result, if any
if "success" in command_response:
- if command_response["success"] != "yes":
+ if command_response["success"] != b"yes":
raise CommandException(
"Command failed: {errmsg}".format(
errmsg=command_response["errmsg"]