12 |
12 |
13 class OpenSearchWriter(QXmlStreamWriter): |
13 class OpenSearchWriter(QXmlStreamWriter): |
14 """ |
14 """ |
15 Class implementing a writer for open search engine descriptions. |
15 Class implementing a writer for open search engine descriptions. |
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, device, engine): |
26 def write(self, device, engine): |
26 """ |
27 """ |
27 Public method to write the description of an engine. |
28 Public method to write the description of an engine. |
28 |
29 |
29 @param device reference to the device to write to (QIODevice) |
30 @param device reference to the device to write to (QIODevice) |
30 @param engine reference to the engine (OpenSearchEngine) |
31 @param engine reference to the engine (OpenSearchEngine) |
31 @return flag indicating success (boolean) |
32 @return flag indicating success (boolean) |
32 """ |
33 """ |
33 if engine is None: |
34 if engine is None: |
34 return False |
35 return False |
35 |
36 |
36 if ( |
37 if not device.isOpen() and not device.open(QIODevice.OpenModeFlag.WriteOnly): |
37 not device.isOpen() and |
|
38 not device.open(QIODevice.OpenModeFlag.WriteOnly) |
|
39 ): |
|
40 return False |
38 return False |
41 |
39 |
42 self.setDevice(device) |
40 self.setDevice(device) |
43 self.__write(engine) |
41 self.__write(engine) |
44 return True |
42 return True |
45 |
43 |
46 def __write(self, engine): |
44 def __write(self, engine): |
47 """ |
45 """ |
48 Private method to write the description of an engine. |
46 Private method to write the description of an engine. |
49 |
47 |
50 @param engine reference to the engine (OpenSearchEngine) |
48 @param engine reference to the engine (OpenSearchEngine) |
51 """ |
49 """ |
52 self.writeStartDocument() |
50 self.writeStartDocument() |
53 self.writeStartElement("OpenSearchDescription") |
51 self.writeStartElement("OpenSearchDescription") |
54 self.writeDefaultNamespace("http://a9.com/-/spec/opensearch/1.1/") |
52 self.writeDefaultNamespace("http://a9.com/-/spec/opensearch/1.1/") |
55 |
53 |
56 if engine.name(): |
54 if engine.name(): |
57 self.writeTextElement("ShortName", engine.name()) |
55 self.writeTextElement("ShortName", engine.name()) |
58 |
56 |
59 if engine.description(): |
57 if engine.description(): |
60 self.writeTextElement("Description", engine.description()) |
58 self.writeTextElement("Description", engine.description()) |
61 |
59 |
62 if engine.searchUrlTemplate(): |
60 if engine.searchUrlTemplate(): |
63 self.writeStartElement("Url") |
61 self.writeStartElement("Url") |
64 self.writeAttribute("method", engine.searchMethod()) |
62 self.writeAttribute("method", engine.searchMethod()) |
65 self.writeAttribute("type", "text/html") |
63 self.writeAttribute("type", "text/html") |
66 self.writeAttribute("template", engine.searchUrlTemplate()) |
64 self.writeAttribute("template", engine.searchUrlTemplate()) |
67 |
65 |
68 if len(engine.searchParameters()) > 0: |
66 if len(engine.searchParameters()) > 0: |
69 self.writeNamespace( |
67 self.writeNamespace( |
70 "http://a9.com/-/spec/opensearch/extensions/" |
68 "http://a9.com/-/spec/opensearch/extensions/" "parameters/1.0/", "p" |
71 "parameters/1.0/", "p") |
69 ) |
72 for parameter in engine.searchParameters(): |
70 for parameter in engine.searchParameters(): |
73 self.writeStartElement("p:Parameter") |
71 self.writeStartElement("p:Parameter") |
74 self.writeAttribute("name", parameter[0]) |
72 self.writeAttribute("name", parameter[0]) |
75 self.writeAttribute("value", parameter[1]) |
73 self.writeAttribute("value", parameter[1]) |
76 |
74 |
77 self.writeEndElement() |
75 self.writeEndElement() |
78 |
76 |
79 if engine.suggestionsUrlTemplate(): |
77 if engine.suggestionsUrlTemplate(): |
80 self.writeStartElement("Url") |
78 self.writeStartElement("Url") |
81 self.writeAttribute("method", engine.suggestionsMethod()) |
79 self.writeAttribute("method", engine.suggestionsMethod()) |
82 self.writeAttribute("type", "application/x-suggestions+json") |
80 self.writeAttribute("type", "application/x-suggestions+json") |
83 self.writeAttribute("template", engine.suggestionsUrlTemplate()) |
81 self.writeAttribute("template", engine.suggestionsUrlTemplate()) |
84 |
82 |
85 if len(engine.suggestionsParameters()) > 0: |
83 if len(engine.suggestionsParameters()) > 0: |
86 self.writeNamespace( |
84 self.writeNamespace( |
87 "http://a9.com/-/spec/opensearch/extensions/" |
85 "http://a9.com/-/spec/opensearch/extensions/" "parameters/1.0/", "p" |
88 "parameters/1.0/", "p") |
86 ) |
89 for parameter in engine.suggestionsParameters(): |
87 for parameter in engine.suggestionsParameters(): |
90 self.writeStartElement("p:Parameter") |
88 self.writeStartElement("p:Parameter") |
91 self.writeAttribute("name", parameter[0]) |
89 self.writeAttribute("name", parameter[0]) |
92 self.writeAttribute("value", parameter[1]) |
90 self.writeAttribute("value", parameter[1]) |
93 |
91 |
94 self.writeEndElement() |
92 self.writeEndElement() |
95 |
93 |
96 if engine.imageUrl(): |
94 if engine.imageUrl(): |
97 self.writeTextElement("Image", engine.imageUrl()) |
95 self.writeTextElement("Image", engine.imageUrl()) |
98 |
96 |
99 self.writeEndElement() |
97 self.writeEndElement() |
100 self.writeEndDocument() |
98 self.writeEndDocument() |