diff --git a/fints/client.py b/fints/client.py index 3273072..ebe8612 100644 --- a/fints/client.py +++ b/fints/client.py @@ -1021,8 +1021,12 @@ def __repr__(self): @classmethod def _from_data_v1(cls, data): if data["version"] == 1: - segs = SegmentSequence(data['segments_bin']).segments - return cls(segs[0], segs[1], data['resume_method'], data['tan_request_structured']) + if "init_tan" in data: + segs = SegmentSequence(data['segments_bin']).segments + return cls(None, segs[0], data['resume_method'], data['tan_request_structured']) + else: + segs = SegmentSequence(data['segments_bin']).segments + return cls(segs[0], segs[1], data['resume_method'], data['tan_request_structured']) raise Exception("Wrong blob data version") @@ -1031,13 +1035,23 @@ def get_data(self) -> bytes: To restore the object, use :func:`fints.client.NeedRetryResponse.from_data`. """ - data = { - "_class_name": self.__class__.__name__, - "version": 1, - "segments_bin": SegmentSequence([self.command_seg, self.tan_request]).render_bytes(), - "resume_method": self.resume_method, - "tan_request_structured": self.tan_request_structured, - } + if self.command_seg: + data = { + "_class_name": self.__class__.__name__, + "version": 1, + "segments_bin": SegmentSequence([self.command_seg, self.tan_request]).render_bytes(), + "resume_method": self.resume_method, + "tan_request_structured": self.tan_request_structured, + } + else: + data = { + "_class_name": self.__class__.__name__, + "version": 1, + "init_tan": True, + "segments_bin": SegmentSequence([self.tan_request]).render_bytes(), + "resume_method": self.resume_method, + "tan_request_structured": self.tan_request_structured, + } return compress_datablob(DATA_BLOB_MAGIC_RETRY, 1, data) def _parse_tan_challenge(self):