Source code for taskc.transaction
import struct
import logging
from email.message import Message
import six
from taskc.errors import TaskdError
from taskc import __version__
def mk_message(org, user, key):
"""
Make message
"""
m = Message()
m['client'] = "taskc-py {0}".format(__version__)
m['protocol'] = "v1"
m['org'] = org
m['user'] = user
m['key'] = key
return m
def prep_message(msg):
"""
Add the size header
"""
if six.PY3:
msg_out = msg.as_string().encode("utf-8")
else:
msg_out = msg.as_string()
our_len = len(msg_out) + 4
size = struct.pack('>L', our_len)
# why the hell is this "bytes" on python3?
return size + msg_out
[docs]class TaskdResponse(Message):
"""Represents a reponse of a taskd server"""
def __init__(self):
Message.__init__(self)
@property
def data(self):
"front bit of payload"
return self.get_payload().strip().split("\n")[:-1]
@property
def sync_key(self):
"last bit of payload"
return self.get_payload().strip().split("\n")[-1]
@property
def status_code(self):
"Status code as an int"
return int(self.get("code"))
@property
def status(self):
"alias to status_code"
return self.status_code
[docs] def raise_for_status(self):
"Ala requests"
if 400 <= self.status_code < 600:
raise TaskdError(self.status_code)
def __str__(self):
return "Response: %s" % self.get('status')