8 """ |
8 """ |
9 |
9 |
10 from __future__ import unicode_literals |
10 from __future__ import unicode_literals |
11 |
11 |
12 from PyQt5.QtCore import QXmlStreamReader, QIODevice, QFile, \ |
12 from PyQt5.QtCore import QXmlStreamReader, QIODevice, QFile, \ |
13 QCoreApplication, QUrl |
13 QCoreApplication, QUrl, QByteArray |
14 |
14 |
15 |
15 |
16 class PasswordReader(QXmlStreamReader): |
16 class PasswordReader(QXmlStreamReader): |
17 """ |
17 """ |
18 Class implementing a reader object for login data files. |
18 Class implementing a reader object for login data files. |
47 while not self.atEnd(): |
47 while not self.atEnd(): |
48 self.readNext() |
48 self.readNext() |
49 if self.isStartElement(): |
49 if self.isStartElement(): |
50 version = self.attributes().value("version") |
50 version = self.attributes().value("version") |
51 if self.name() == "Password" and \ |
51 if self.name() == "Password" and \ |
52 (not version or version == "1.0"): |
52 (not version or version == "2.0"): |
53 self.__readPasswords() |
53 self.__readPasswords() |
54 else: |
54 else: |
55 self.raiseError(QCoreApplication.translate( |
55 self.raiseError(QCoreApplication.translate( |
56 "PasswordReader", |
56 "PasswordReader", |
57 "The file is not a Passwords version 1.0 file.")) |
57 "The file is not a Passwords version 2.0 file.")) |
58 |
58 |
59 return self.__logins, self.__loginForms, self.__never |
59 return self.__logins, self.__loginForms, self.__never |
60 |
60 |
61 def __readPasswords(self): |
61 def __readPasswords(self): |
62 """ |
62 """ |
110 Private method to read the forms information. |
110 Private method to read the forms information. |
111 """ |
111 """ |
112 if not self.isStartElement() and self.name() != "Forms": |
112 if not self.isStartElement() and self.name() != "Forms": |
113 return |
113 return |
114 |
114 |
|
115 # TODO: Passwords: adjust reader to new login form |
115 while not self.atEnd(): |
116 while not self.atEnd(): |
116 self.readNext() |
117 self.readNext() |
117 if self.isStartElement(): |
118 if self.isStartElement(): |
118 if self.name() == "Form": |
119 if self.name() == "Form": |
119 from .LoginForm import LoginForm |
120 from .LoginForm import LoginForm |
120 attributes = self.attributes() |
121 attributes = self.attributes() |
121 key = attributes.value("key") |
122 key = attributes.value("key") |
122 form = LoginForm() |
123 form = LoginForm() |
123 form.url = QUrl(attributes.value("url")) |
124 form.url = QUrl(attributes.value("url")) |
124 form.name = attributes.value("name") |
125 form.name = attributes.value("name") |
125 form.hasAPassword = attributes.value("password") == "yes" |
126 |
126 elif self.name() == "Elements": |
127 elif self.name() == "PostData": |
127 continue |
128 form.postData = QByteArray( |
128 elif self.name() == "Element": |
129 self.readElementText().encode("utf-8")) |
129 attributes = self.attributes() |
|
130 name = attributes.value("name") |
|
131 value = attributes.value("value") |
|
132 form.elements.append((name, value)) |
|
133 else: |
130 else: |
134 self.__skipUnknownElement() |
131 self.__skipUnknownElement() |
135 |
132 |
136 if self.isEndElement(): |
133 if self.isEndElement(): |
137 if self.name() == "Form": |
134 if self.name() == "Form": |