Umstieg auf minidom für Kompatibilität

This commit is contained in:
2023-04-21 16:17:54 +02:00
parent a79c7b431b
commit d6fe66d2ec

View File

@@ -1,7 +1,7 @@
""" Mini-Challenge""" """ Mini-Challenge"""
from os.path import join from os.path import join
from xml.etree import ElementTree as ET from xml.dom import minidom
from twisted.internet import defer from twisted.internet import defer
@@ -14,18 +14,6 @@ class Adapter:
def __init__(self, path): def __init__(self, path):
self.path = path self.path = path
def _read(self, name):
with open(join(self.path, name + ".xml")) as f:
return f.read()
def _parse(self, xml_data):
root = ET.fromstring(xml_data)
token = root.find("{*}Token").text
return token
def _convert(self, token):
return '{"token": %s}' % token
def retrieve_token(self, name): def retrieve_token(self, name):
""" """
Retrieve the content from file name.xml in adapters path directory Retrieve the content from file name.xml in adapters path directory
@@ -33,9 +21,13 @@ class Adapter:
as a JSON-Object (stringified) '{"token": value}'. as a JSON-Object (stringified) '{"token": value}'.
""" """
try: try:
xml_data = self._read(name) with open(join(self.path, name + ".xml")) as f:
token = self._parse(xml_data) xml_data = f.read()
return self._convert(token) dom = minidom.parseString(xml_data)
token = dom.getElementsByTagName("Token")[0].firstChild.data
return '{"token": %s}' % token
except Exception as e: except Exception as e:
raise ValueError("Could not retrieve token: %s" % e) raise ValueError("Could not retrieve token: %s" % e)
@@ -52,18 +44,33 @@ class Adapter:
""" """
d = defer.Deferred() d = defer.Deferred()
def on_success(xml_data): def read_file():
try: try:
token = self._parse(xml_data) with open(join(self.path, name + ".xml")) as f:
converted = self._convert(token) xml_data = f.read()
d.callback(converted) return xml_data
except Exception as e: except Exception as e:
d.errback(e) d.errback(e)
def on_error(error): def parse_xml(xml_data):
d.errback(error) try:
dom = minidom.parseString(xml_data)
token = dom.getElementsByTagName("Token")[0].firstChild.data
deferred = defer.maybeDeferred(self._read, name) return token
deferred.addCallbacks(on_success, on_error)
except Exception as e:
d.errback(e)
def convert_to_json(token):
try:
json_string = '{"token": %s}' % token
d.callback(json_string)
except Exception as e:
d.errback(e)
defer.execute(read_file).addCallback(parse_xml).addCallback(
convert_to_json
).addErrback(d.errback)
return d return d