12 |
12 |
13 class UserAgentWriter(QXmlStreamWriter): |
13 class UserAgentWriter(QXmlStreamWriter): |
14 """ |
14 """ |
15 Class implementing a writer object to generate user agent data files. |
15 Class implementing a writer object to generate user agent data files. |
16 """ |
16 """ |
|
17 |
17 def __init__(self): |
18 def __init__(self): |
18 """ |
19 """ |
19 Constructor |
20 Constructor |
20 """ |
21 """ |
21 super().__init__() |
22 super().__init__() |
22 |
23 |
23 self.setAutoFormatting(True) |
24 self.setAutoFormatting(True) |
24 |
25 |
25 def write(self, fileNameOrDevice, agents): |
26 def write(self, fileNameOrDevice, agents): |
26 """ |
27 """ |
27 Public method to write a user agent data file. |
28 Public method to write a user agent data file. |
28 |
29 |
29 @param fileNameOrDevice name of the file to write (string) |
30 @param fileNameOrDevice name of the file to write (string) |
30 or device to write to (QIODevice) |
31 or device to write to (QIODevice) |
31 @param agents dictionary with user agent data (host as key, agent |
32 @param agents dictionary with user agent data (host as key, agent |
32 string as value) |
33 string as value) |
33 @return flag indicating success (boolean) |
34 @return flag indicating success (boolean) |
36 f = fileNameOrDevice |
37 f = fileNameOrDevice |
37 else: |
38 else: |
38 f = QFile(fileNameOrDevice) |
39 f = QFile(fileNameOrDevice) |
39 if not f.open(QIODevice.OpenModeFlag.WriteOnly): |
40 if not f.open(QIODevice.OpenModeFlag.WriteOnly): |
40 return False |
41 return False |
41 |
42 |
42 self.setDevice(f) |
43 self.setDevice(f) |
43 return self.__write(agents) |
44 return self.__write(agents) |
44 |
45 |
45 def __write(self, agents): |
46 def __write(self, agents): |
46 """ |
47 """ |
47 Private method to write a user agent file. |
48 Private method to write a user agent file. |
48 |
49 |
49 @param agents dictionary with user agent data (host as key, agent |
50 @param agents dictionary with user agent data (host as key, agent |
50 string as value) |
51 string as value) |
51 @return flag indicating success (boolean) |
52 @return flag indicating success (boolean) |
52 """ |
53 """ |
53 self.writeStartDocument() |
54 self.writeStartDocument() |
54 self.writeDTD("<!DOCTYPE useragents>") |
55 self.writeDTD("<!DOCTYPE useragents>") |
55 self.writeStartElement("UserAgents") |
56 self.writeStartElement("UserAgents") |
56 self.writeAttribute("version", "1.0") |
57 self.writeAttribute("version", "1.0") |
57 |
58 |
58 for host, agent in agents.items(): |
59 for host, agent in agents.items(): |
59 self.writeEmptyElement("UserAgent") |
60 self.writeEmptyElement("UserAgent") |
60 self.writeAttribute("host", host) |
61 self.writeAttribute("host", host) |
61 self.writeAttribute("agent", agent) |
62 self.writeAttribute("agent", agent) |
62 |
63 |
63 self.writeEndDocument() |
64 self.writeEndDocument() |
64 return True |
65 return True |