Commit 708fdd87 by Owo Sugiana

Streamer kini bekerja secara bytes, tidak lagi str

1 parent afb3668e
dist dist
build
*egg-info *egg-info
0.1.5 2020-04-28 0.1.5 2020-05-09
---------------- ----------------
- Bug fixed pada mitracomm.py - Bug fixed pada mitracomm.py. Seluruh streamer kini bekerja dengan bytes tidak
lagi str.
- Bug fixed pada receive_raw() dimana raw tidak lagi di-encode ke UTF-8 karena
network header tidak bisa demikian, terkait mitracomm.py.
- Bug fixed pada ISO8583.__setBitTypeANS() dimana seharusnya menggunakan - Bug fixed pada ISO8583.__setBitTypeANS() dimana seharusnya menggunakan
ljust() ketimbang zfill() ljust() ketimbang zfill()
......
...@@ -39,8 +39,8 @@ class BaseISO8583(ISO8583): ...@@ -39,8 +39,8 @@ class BaseISO8583(ISO8583):
raw = raw.decode('utf-8') raw = raw.decode('utf-8')
return raw.upper() return raw.upper()
def setIsoContent(self, raw): #def setIsoContent(self, raw):
ISO8583.setIsoContent(self, raw.encode('utf-8')) # ISO8583.setIsoContent(self, raw.encode('utf-8'))
def get_bit_definition(self): def get_bit_definition(self):
return {} return {}
......
...@@ -87,6 +87,9 @@ class Doc(BaseISO8583): ...@@ -87,6 +87,9 @@ class Doc(BaseISO8583):
def get_transaction_code(self): def get_transaction_code(self):
return self.getBit(3) return self.getBit(3)
def set_transaction_code(self, value):
self.setBit(3, value)
def is_inquiry(self): def is_inquiry(self):
return self.get_transaction_code() == self.get_inquiry_code() and \ return self.get_transaction_code() == self.get_inquiry_code() and \
'inquiry' 'inquiry'
...@@ -138,7 +141,7 @@ class Doc(BaseISO8583): ...@@ -138,7 +141,7 @@ class Doc(BaseISO8583):
def set_inquiry_request(self): # sebagai bank def set_inquiry_request(self): # sebagai bank
self.set_transaction_request() self.set_transaction_request()
self.setBit(3, self.get_inquiry_code()) self.set_transaction_code(self.get_inquiry_code())
def set_inquiry_response(self): # sebagai pemda def set_inquiry_response(self): # sebagai pemda
self.set_transaction_response() self.set_transaction_response()
......
...@@ -15,9 +15,12 @@ class Job: ...@@ -15,9 +15,12 @@ class Job:
def get_iso_class(self): def get_iso_class(self):
return Doc return Doc
def create_iso(self, from_iso=None): def create_iso(self, from_iso=None, conf=dict()):
cls = self.get_iso_class() cls = self.get_iso_class()
return cls(from_iso=from_iso, conf=self.conf) cf = dict(self.conf)
if conf:
cf.update(conf)
return cls(from_iso=from_iso, conf=cf)
def get_iso(self): def get_iso(self):
if self.do_echo: if self.do_echo:
......
...@@ -24,7 +24,7 @@ def get_streamer_module(name): ...@@ -24,7 +24,7 @@ def get_streamer_module(name):
class Streamer: class Streamer:
def __init__(self): def __init__(self):
self.raw = '' self.raw = b''
self.size = 0 self.size = 0
# Override please. # Override please.
......
...@@ -17,7 +17,7 @@ class Streamer(BaseStreamer): ...@@ -17,7 +17,7 @@ class Streamer(BaseStreamer):
self.raw = raw self.raw = raw
return return
size = self.size = self.get_size(raw) size = self.size = self.get_size(raw)
self.raw = '' self.raw = b''
raw = raw[4:] raw = raw[4:]
self.raw += raw[:size] self.raw += raw[:size]
if len(self.raw) == self.size: if len(self.raw) == self.size:
...@@ -30,4 +30,4 @@ class Streamer(BaseStreamer): ...@@ -30,4 +30,4 @@ class Streamer(BaseStreamer):
# Override Stremer.set # Override Stremer.set
def set(self, raw): def set(self, raw):
size = str(len(raw)).zfill(4) size = str(len(raw)).zfill(4)
return size + raw return size.encode() + raw
...@@ -13,5 +13,6 @@ class Streamer(BaseStreamer): ...@@ -13,5 +13,6 @@ class Streamer(BaseStreamer):
# Override Stremer.set # Override Stremer.set
def set(self, raw): def set(self, raw):
raw += '\x03' raw = raw.encode()
raw += bytes([3])
return BaseStreamer.set(self, raw) return BaseStreamer.set(self, raw)
...@@ -16,7 +16,7 @@ class Streamer(BaseStreamer): ...@@ -16,7 +16,7 @@ class Streamer(BaseStreamer):
self.raw = raw self.raw = raw
return return
size = self.size = int(raw[:4]) size = self.size = int(raw[:4])
self.raw = '' self.raw = b''
raw = raw[4:] raw = raw[4:]
self.raw += raw[:size] self.raw += raw[:size]
if len(self.raw) == self.size: if len(self.raw) == self.size:
...@@ -29,4 +29,4 @@ class Streamer(BaseStreamer): ...@@ -29,4 +29,4 @@ class Streamer(BaseStreamer):
# Override Stremer.set # Override Stremer.set
def set(self, raw): def set(self, raw):
size = str(len(raw)).zfill(4) size = str(len(raw)).zfill(4)
return size + raw return size.encode() + raw
...@@ -22,7 +22,7 @@ class Streamer(BaseStreamer): ...@@ -22,7 +22,7 @@ class Streamer(BaseStreamer):
self.raw = raw self.raw = raw
return return
size = self.size = self.get_size(raw[:2]) size = self.size = self.get_size(raw[:2])
self.raw = '' self.raw = b''
raw = raw[2:] raw = raw[2:]
self.raw += raw[:size] self.raw += raw[:size]
if len(self.raw) == self.size: if len(self.raw) == self.size:
...@@ -34,9 +34,8 @@ class Streamer(BaseStreamer): ...@@ -34,9 +34,8 @@ class Streamer(BaseStreamer):
# Override Stremer.set # Override Stremer.set
def set(self, raw): def set(self, raw):
raw = raw.upper()
size = len(raw) size = len(raw)
a = size % 256 a = size % 256
b = size / 256 b = size / 256
header = chr(b) + chr(a) header = bytes([b]) + bytes([a])
return header + raw return header + raw
...@@ -16,7 +16,7 @@ class Streamer(BaseStreamer): ...@@ -16,7 +16,7 @@ class Streamer(BaseStreamer):
self.raw = raw self.raw = raw
return return
size = self.size = int(raw[:4]) size = self.size = int(raw[:4])
self.raw = '' self.raw = b''
raw = raw[4:] raw = raw[4:]
self.raw += raw[:size] self.raw += raw[:size]
if len(self.raw) == self.size: if len(self.raw) == self.size:
...@@ -29,4 +29,4 @@ class Streamer(BaseStreamer): ...@@ -29,4 +29,4 @@ class Streamer(BaseStreamer):
# Override Stremer.set # Override Stremer.set
def set(self, raw): def set(self, raw):
size = str(len(raw)).zfill(4) size = str(len(raw)).zfill(4)
return size + raw return size.encode() + raw
...@@ -17,7 +17,7 @@ class Streamer(BaseStreamer): ...@@ -17,7 +17,7 @@ class Streamer(BaseStreamer):
self.raw = raw self.raw = raw
return return
size = self.size = int(raw[:4]) size = self.size = int(raw[:4])
self.raw = '' self.raw = b''
raw = raw[4:] raw = raw[4:]
self.raw += raw[:size] self.raw += raw[:size]
if len(self.raw) == self.size: if len(self.raw) == self.size:
...@@ -30,4 +30,4 @@ class Streamer(BaseStreamer): ...@@ -30,4 +30,4 @@ class Streamer(BaseStreamer):
# Override Stremer.set # Override Stremer.set
def set(self, raw): def set(self, raw):
size = str(len(raw)).zfill(4) size = str(len(raw)).zfill(4)
return size + raw return size.encode() + raw
...@@ -17,7 +17,7 @@ class Streamer(BaseStreamer): ...@@ -17,7 +17,7 @@ class Streamer(BaseStreamer):
self.raw = raw self.raw = raw
return return
size = self.size = self.get_size(raw) size = self.size = self.get_size(raw)
self.raw = '' self.raw = b''
raw = raw[4:] raw = raw[4:]
self.raw += raw[:size] self.raw += raw[:size]
if len(self.raw) == self.size: if len(self.raw) == self.size:
...@@ -30,4 +30,4 @@ class Streamer(BaseStreamer): ...@@ -30,4 +30,4 @@ class Streamer(BaseStreamer):
# Override Stremer.set # Override Stremer.set
def set(self, raw): def set(self, raw):
size = str(len(raw)).zfill(4) size = str(len(raw)).zfill(4)
return size + raw return size.encode() + raw
...@@ -6,8 +6,7 @@ from . import Streamer as BaseStreamer ...@@ -6,8 +6,7 @@ from . import Streamer as BaseStreamer
class Streamer(BaseStreamer): class Streamer(BaseStreamer):
def get_size(self, raw): def get_size(self, raw):
a, b = raw a, b = raw
a = ord(a) * 256 a = a * 256
b = ord(b)
return a + b return a + b
# Override Stremer.get # Override Stremer.get
...@@ -15,12 +14,14 @@ class Streamer(BaseStreamer): ...@@ -15,12 +14,14 @@ class Streamer(BaseStreamer):
if self.size: if self.size:
size = self.size - len(self.raw) size = self.size - len(self.raw)
else: else:
if isinstance(raw, str):
raw = raw.encode()
raw = self.raw + raw raw = self.raw + raw
if len(raw) < 2: if len(raw) < 2:
self.raw = raw self.raw = raw
return return
size = self.size = self.get_size(raw[:2]) size = self.size = self.get_size(raw[:2])
self.raw = '' self.raw = b''
raw = raw[2:] raw = raw[2:]
self.raw += raw[:size] self.raw += raw[:size]
if len(self.raw) == self.size: if len(self.raw) == self.size:
...@@ -35,5 +36,5 @@ class Streamer(BaseStreamer): ...@@ -35,5 +36,5 @@ class Streamer(BaseStreamer):
size = len(raw) size = len(raw)
a = int(size / 256) a = int(size / 256)
b = size % 256 b = size % 256
header = chr(a) + chr(b) header = bytes([a]) + bytes([b])
return header + raw return header + raw.encode()
...@@ -22,7 +22,7 @@ class Streamer(BaseStreamer): ...@@ -22,7 +22,7 @@ class Streamer(BaseStreamer):
self.raw = raw self.raw = raw
return return
size = self.size = self.get_size(raw[:2]) size = self.size = self.get_size(raw[:2])
self.raw = '' self.raw = b''
raw = raw[2:] raw = raw[2:]
self.raw += raw[:size] self.raw += raw[:size]
if len(self.raw) == self.size: if len(self.raw) == self.size:
...@@ -37,5 +37,5 @@ class Streamer(BaseStreamer): ...@@ -37,5 +37,5 @@ class Streamer(BaseStreamer):
size = len(raw) size = len(raw)
a = size % 256 a = size % 256
b = size / 256 b = size / 256
header = chr(a) + chr(b) header = bytes([a]) + bytes([b])
return header + raw return header + raw
...@@ -70,15 +70,13 @@ class Connection: ...@@ -70,15 +70,13 @@ class Connection:
raw = self.process(raw) raw = self.process(raw)
if raw: if raw:
self.send(raw) self.send(raw)
raw = '' raw = b''
def receive_raw(self): def receive_raw(self):
try: try:
ready, _, _ = select.select([self.request], [], [], 5) ready, _, _ = select.select([self.request], [], [], 5)
raw = ready and self.request.recv( raw = ready and self.request.recv(
self.get_receive_size(), socket.MSG_DONTWAIT) or '' self.get_receive_size(), socket.MSG_DONTWAIT) or ''
if isinstance(raw, bytes):
raw = raw.decode('utf-8')
if raw: if raw:
self.on_receive_raw(raw) self.on_receive_raw(raw)
return raw return raw
...@@ -113,8 +111,6 @@ class Connection: ...@@ -113,8 +111,6 @@ class Connection:
self.just_send(raw) self.just_send(raw)
def just_send(self, raw): def just_send(self, raw):
if sys.version_info.major > 2:
raw = raw.encode('utf-8')
try: try:
self.request.sendall(raw) self.request.sendall(raw)
except socket.error as err: except socket.error as err:
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!