Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion sts/__init__.py
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
# -*- coding: utf-8 -*-
# -*- coding: utf-8 -*-
__all__ = ['ineterr', 'inetheaders', 'inetmgr', 'inetmsg', 'inetsocket']
72 changes: 36 additions & 36 deletions sts/ineterr.py
Original file line number Diff line number Diff line change
@@ -1,37 +1,37 @@
# -*- coding: utf-8 -*-
import collections
from xml.etree import ElementTree
SUCCESS = 0
PENDING = -1
BAD_SERVER_DATA = 4
TIMEOUT = 42
Error = collections.namedtuple('Error', 'code server module line text')
def err(code, text=''):
import inspect
frame = inspect.stack()[1]
return Error(code, 0, 0, line=frame[2], text=text)
def parse_error(body):
try:
elem = ElementTree.fromstring(body)
except ElementTree.ParseError:
return err(BAD_SERVER_DATA, 'parse_error, invalid XML')
try:
return Error(
int(elem.get('code', '0')),
int(elem.get('server', '0')),
int(elem.get('module', '0')),
int(elem.get('line', '0')),
elem.get('text', '')
)
except ValueError:
return err(BAD_SERVER_DATA, 'parse_error, invalid attribute(s)')
def build_error(error):
# -*- coding: utf-8 -*-
import collections
from xml.etree import ElementTree

SUCCESS = 0
PENDING = -1
BAD_SERVER_DATA = 4
TIMEOUT = 42

Error = collections.namedtuple('Error', 'code server module line text')

def err(code, text=''):
import inspect
frame = inspect.stack()[1]
return Error(code, 0, 0, line=frame[2], text=text)


def parse_error(body):
try:
elem = ElementTree.fromstring(body)
except ElementTree.ParseError:
return err(BAD_SERVER_DATA, 'parse_error, invalid XML')

try:
return Error(
int(elem.get('code', '0')),
int(elem.get('server', '0')),
int(elem.get('module', '0')),
int(elem.get('line', '0')),
elem.get('text', '')
)
except ValueError:
return err(BAD_SERVER_DATA, 'parse_error, invalid attribute(s)')


def build_error(error):
return ElementTree.Element('Error', error._asdict()).tostring()
140 changes: 70 additions & 70 deletions sts/inetheaders.py
Original file line number Diff line number Diff line change
@@ -1,70 +1,70 @@
# -*- coding: utf-8 -*-
class Header(object):
def __init__(self, name):
if (isinstance(name, Header)):
name = name.normalized
name = name.strip()
self.normalized = name.lower()
def __hash__(self):
return hash(self.normalized)
def __eq__(self, right):
assert isinstance(right, Header), 'Invalid Comparison'
return self.normalized == right.normalized
def __str__(self):
return self.normalized
ACCEPT = Header('a')
CONTENT_ENCODING = Header('e')
CONTENT_LENGTH = Header('l')
CONTENT_RANGE = Header('n')
CONTENT_TYPE = Header('c')
FROM = Header('f')
FROM_EX = Header('g')
FROM_RIGHTS = Header('h')
REFER_TO = Header('r')
REPLY_TO = Header('p')
SEQUENCE = Header('q')
STREAM = Header('m')
SUBJECT = Header('s')
TIMESTAMP = Header('z')
TO = Header('t')
TRACE = Header('i')
TRANSFER_ENCODING = Header('x')
VIA = Header('v')
COMPACT_HEADERS = dict([(Header(key), value) for key, value in {
'Accept': ACCEPT,
'Content-Encoding': CONTENT_ENCODING,
'Content-Length': CONTENT_LENGTH,
'Content-Range': CONTENT_RANGE,
'Content-Type': CONTENT_TYPE,
'From': FROM,
'X-From-Game': FROM_EX,
'X-From-Rights': FROM_RIGHTS,
'Refer-To': REFER_TO,
'Reply-To': REPLY_TO,
'X-Sequence': SEQUENCE,
'Stream': STREAM,
'Subject': SUBJECT,
'Timestamp': TIMESTAMP,
'To': TO,
'X-Trace-ID': TRACE,
'Transfer-Encoding': TRANSFER_ENCODING,
'Via': VIA
}.items()])
MULTI_HEADERS = frozenset([Header(name) for name in [
ACCEPT, 'Accept-Charset', 'Accept-Encoding', 'Accept-Language', 'Accept-Ranges', 'Allow', 'Cache-Control',
'Connection', CONTENT_ENCODING, 'Content-Language', 'Expect', 'If-Match', 'If-None-Match', 'Pragma',
'Proxy-Authenticate', 'Set-Cookie', 'TE', 'Trailer', TRANSFER_ENCODING, 'Upgrade', 'User-Agent', 'Vary', VIA,
'Warning', 'WWW-Authenticate', 'X-Forwarded-For'
]])
# -*- coding: utf-8 -*-

class Header(object):

def __init__(self, name):

if (isinstance(name, Header)):
name = name.normalized

name = name.strip()
self.normalized = name.lower()

def __hash__(self):
return hash(self.normalized)

def __eq__(self, right):
assert isinstance(right, Header), 'Invalid Comparison'
return self.normalized == right.normalized

def __str__(self):
return self.normalized

ACCEPT = Header('a')
CONTENT_ENCODING = Header('e')
CONTENT_LENGTH = Header('l')
CONTENT_RANGE = Header('n')
CONTENT_TYPE = Header('c')
FROM = Header('f')
FROM_EX = Header('g')
FROM_RIGHTS = Header('h')
REFER_TO = Header('r')
REPLY_TO = Header('p')
SEQUENCE = Header('q')
STREAM = Header('m')
SUBJECT = Header('s')
TIMESTAMP = Header('z')
TO = Header('t')
TRACE = Header('i')
TRANSFER_ENCODING = Header('x')
VIA = Header('v')


COMPACT_HEADERS = dict([(Header(key), value) for key, value in {
'Accept': ACCEPT,
'Content-Encoding': CONTENT_ENCODING,
'Content-Length': CONTENT_LENGTH,
'Content-Range': CONTENT_RANGE,
'Content-Type': CONTENT_TYPE,
'From': FROM,
'X-From-Game': FROM_EX,
'X-From-Rights': FROM_RIGHTS,
'Refer-To': REFER_TO,
'Reply-To': REPLY_TO,
'X-Sequence': SEQUENCE,
'Stream': STREAM,
'Subject': SUBJECT,
'Timestamp': TIMESTAMP,
'To': TO,
'X-Trace-ID': TRACE,
'Transfer-Encoding': TRANSFER_ENCODING,
'Via': VIA
}.items()])


MULTI_HEADERS = frozenset([Header(name) for name in [
ACCEPT, 'Accept-Charset', 'Accept-Encoding', 'Accept-Language', 'Accept-Ranges', 'Allow', 'Cache-Control',
'Connection', CONTENT_ENCODING, 'Content-Language', 'Expect', 'If-Match', 'If-None-Match', 'Pragma',
'Proxy-Authenticate', 'Set-Cookie', 'TE', 'Trailer', TRANSFER_ENCODING, 'Upgrade', 'User-Agent', 'Vary', VIA,
'Warning', 'WWW-Authenticate', 'X-Forwarded-For'
]])
38 changes: 19 additions & 19 deletions sts/inetmgr.py
Original file line number Diff line number Diff line change
@@ -1,19 +1,19 @@
# -*- coding: utf-8 -*-
import os
from xml.etree import ElementTree
from . import inetsocket
def connect(socket, conn_type, program, build):
s = inetsocket.Socket(socket)
root = ElementTree.Element('Connect')
ElementTree.SubElement(root, 'ConnType').text = str(conn_type)
ElementTree.SubElement(root, 'Program').text = str(program)
ElementTree.SubElement(root, 'Build').text = str(build)
ElementTree.SubElement(root, 'Process').text = str(os.getpid())
ElementTree.SubElement(root, 'ProductType').text = '1000'
ElementTree.SubElement(root, 'AppIndex').text = '1'
ElementTree.SubElement(root, 'Address').text = socket.getsockname()[0]
s.send('Sts', 'Connect', body=ElementTree.tostring(root))
return s
# -*- coding: utf-8 -*-
import os
from xml.etree import ElementTree
from . import inetsocket

def connect(socket, conn_type, program, build):
s = inetsocket.Socket(socket)

root = ElementTree.Element('Connect')
ElementTree.SubElement(root, 'ConnType').text = str(conn_type)
ElementTree.SubElement(root, 'Program').text = str(program)
ElementTree.SubElement(root, 'Build').text = str(build)
ElementTree.SubElement(root, 'Process').text = str(os.getpid())
ElementTree.SubElement(root, 'ProductType').text = '1000'
ElementTree.SubElement(root, 'AppIndex').text = '1'
ElementTree.SubElement(root, 'Address').text = socket.getsockname()[0]

s.send('Sts', 'Connect', body=ElementTree.tostring(root))
return s
Loading