Make OnepifReader return OnepifEntry objects. (Simulate dicts at the moment.)

This commit is contained in:
Markus Birth 2021-08-17 01:48:22 +02:00
parent ae8e35a41d
commit 785425d613
Signed by: mbirth
GPG Key ID: A9928D7A098C3A9A
2 changed files with 40 additions and 3 deletions

25
onepif/OnepifEntry.py Normal file
View File

@ -0,0 +1,25 @@
class OnepifEntry():
def __init__(self, data):
self.raw = data
def __getattr__(self, name):
if name not in self.raw:
raise AttributeError
return self.raw[name]
def __getitem__(self, key):
if self.__missing__(key):
raise KeyError
return self.raw[key]
def __contains__(self, item):
return item in self.raw
def __missing__(self, key):
return key not in self.raw
def get(self, key):
if key not in self.raw:
return None
return self.raw[key]

View File

@ -1,4 +1,5 @@
import json
from . import OnepifEntry
SEPARATOR = "***5642bee8-a5ff-11dc-8314-0800200c9a66***"
@ -13,6 +14,14 @@ class OnepifReader():
return self
def __next__(self):
raw_entry = self.get_next_json()
if not raw_entry:
raise StopIteration
obj_dict = self.parse_into_dict(raw_entry)
op_entry = OnepifEntry.OnepifEntry(obj_dict)
return op_entry
def get_next_json(self):
buffer = []
is_eof = True
for line in self.fp:
@ -21,6 +30,9 @@ class OnepifReader():
break
buffer.append(line)
if is_eof:
raise StopIteration
jsonstr = "".join(buffer)
return json.loads(jsonstr)
return False
json_str = "".join(buffer)
return json_str
def parse_into_dict(self, raw_entry):
return json.loads(raw_entry)