Files
msw/mswp.py

44 lines
1.5 KiB
Python

class Datapack:
def __init__(self, method='post', app='all', version='msw/1.0', head={}, body=b'', check_head=True):
self.method = method
self.app = app
self.version = version
if not head and check_head:
self.head = {'nohead': "true"}
else:
self.head = head
self.body = body
self.encode_data = b''
def encode(self):
self.head['length': str(len(self.body))]
first_line = self.method.encode() + b' ' + self.app.encode() + b' ' + self.version.encode()
heads = ''.encode()
for i in self.head:
heads += i.encode() + b': ' + self.head[i].encode() + b'\n'
self.encode_data = first_line + b'\n' + heads + b'\n' + self.body
def decode(self):
index = self.encode_data.index(b'\n\n')
upper = self.encode_data[:index]
self.body = self.encode_data[index+2:]
upper = upper.decode()
heads = upper.split('\n')
first_line = heads.pop(0)
self.method, self.app, self.version = first_line.split(' ')
for line in heads:
i, ii = line.split(': ')
self.head[i] = ii
def is_enough(self):
body_length = len(self.body)
head_length = int(self.head['length'])
if head_length == body_length:
return True
elif head_length > body_length:
return False
else:
print("Error: length is larger than the body")
raise IOError