80 url = QUrl(self.GsbUrlTemplate.format("threatLists", self.__apiKey)) |
80 url = QUrl(self.GsbUrlTemplate.format("threatLists", self.__apiKey)) |
81 req = QNetworkRequest(url) |
81 req = QNetworkRequest(url) |
82 reply = WebBrowserWindow.networkManager().get(req) |
82 reply = WebBrowserWindow.networkManager().get(req) |
83 |
83 |
84 while reply.isRunning(): |
84 while reply.isRunning(): |
85 QCoreApplication.processEvents(QEventLoop.AllEvents, 200) |
85 QCoreApplication.processEvents( |
|
86 QEventLoop.ProcessEventsFlag.AllEvents, 200) |
86 # max. 200 ms processing |
87 # max. 200 ms processing |
87 |
88 |
88 res = None |
89 res = None |
89 error = "" |
90 error = "" |
90 if reply.error() != QNetworkReply.NoError: |
91 if reply.error() != QNetworkReply.NetworkError.NoError: |
91 error = reply.errorString() |
92 error = reply.errorString() |
92 self.networkError.emit(error) |
93 self.networkError.emit(error) |
93 else: |
94 else: |
94 result = self.__extractData(reply) |
95 result = self.__extractData(reply) |
95 res = result["threatLists"] |
96 res = result["threatLists"] |
137 |
138 |
138 data = QByteArray(json.dumps(requestBody).encode("utf-8")) |
139 data = QByteArray(json.dumps(requestBody).encode("utf-8")) |
139 url = QUrl(self.GsbUrlTemplate.format("threatListUpdates:fetch", |
140 url = QUrl(self.GsbUrlTemplate.format("threatListUpdates:fetch", |
140 self.__apiKey)) |
141 self.__apiKey)) |
141 req = QNetworkRequest(url) |
142 req = QNetworkRequest(url) |
142 req.setHeader(QNetworkRequest.ContentTypeHeader, "application/json") |
143 req.setHeader(QNetworkRequest.KnownHeaders.ContentTypeHeader, |
|
144 "application/json") |
143 reply = WebBrowserWindow.networkManager().post(req, data) |
145 reply = WebBrowserWindow.networkManager().post(req, data) |
144 |
146 |
145 while reply.isRunning(): |
147 while reply.isRunning(): |
146 QCoreApplication.processEvents(QEventLoop.AllEvents, 200) |
148 QCoreApplication.processEvents( |
|
149 QEventLoop.ProcessEventsFlag.AllEvents, 200) |
147 # max. 200 ms processing |
150 # max. 200 ms processing |
148 |
151 |
149 res = None |
152 res = None |
150 error = "" |
153 error = "" |
151 if reply.error() != QNetworkReply.NoError: |
154 if reply.error() != QNetworkReply.NetworkError.NoError: |
152 error = reply.errorString() |
155 error = reply.errorString() |
153 self.networkError.emit(error) |
156 self.networkError.emit(error) |
154 else: |
157 else: |
155 result = self.__extractData(reply) |
158 result = self.__extractData(reply) |
156 res = result["listUpdateResponses"] |
159 res = result["listUpdateResponses"] |
210 |
213 |
211 data = QByteArray(json.dumps(requestBody).encode("utf-8")) |
214 data = QByteArray(json.dumps(requestBody).encode("utf-8")) |
212 url = QUrl(self.GsbUrlTemplate.format("fullHashes:find", |
215 url = QUrl(self.GsbUrlTemplate.format("fullHashes:find", |
213 self.__apiKey)) |
216 self.__apiKey)) |
214 req = QNetworkRequest(url) |
217 req = QNetworkRequest(url) |
215 req.setHeader(QNetworkRequest.ContentTypeHeader, "application/json") |
218 req.setHeader(QNetworkRequest.KnownHeaders.ContentTypeHeader, |
|
219 "application/json") |
216 reply = WebBrowserWindow.networkManager().post(req, data) |
220 reply = WebBrowserWindow.networkManager().post(req, data) |
217 |
221 |
218 while reply.isRunning(): |
222 while reply.isRunning(): |
219 QCoreApplication.processEvents(QEventLoop.AllEvents, 200) |
223 QCoreApplication.processEvents( |
|
224 QEventLoop.ProcessEventsFlag.AllEvents, 200) |
220 # max. 200 ms processing |
225 # max. 200 ms processing |
221 |
226 |
222 res = [] |
227 res = [] |
223 if reply.error() != QNetworkReply.NoError: |
228 if reply.error() != QNetworkReply.NetworkError.NoError: |
224 self.networkError.emit(reply.errorString()) |
229 self.networkError.emit(reply.errorString()) |
225 else: |
230 else: |
226 res = self.__extractData(reply) |
231 res = self.__extractData(reply) |
227 |
232 |
228 reply.deleteLater() |
233 reply.deleteLater() |
295 """ |
300 """ |
296 error = "" |
301 error = "" |
297 |
302 |
298 # sanitize the URL by removing user info and query data |
303 # sanitize the URL by removing user info and query data |
299 url = url.adjusted( |
304 url = url.adjusted( |
300 QUrl.RemoveUserInfo | QUrl.RemoveQuery | QUrl.RemoveFragment |
305 QUrl.UrlFormattingOption.RemoveUserInfo | |
|
306 QUrl.UrlFormattingOption.RemoveQuery | |
|
307 QUrl.UrlFormattingOption.RemoveFragment |
301 ) |
308 ) |
302 urlStr = url.toString() |
309 urlStr = url.toString() |
303 |
310 |
304 # check the local cache first |
311 # check the local cache first |
305 if urlStr in self.__lookupApiCache: |
312 if urlStr in self.__lookupApiCache: |
331 |
338 |
332 data = QByteArray(json.dumps(requestBody).encode("utf-8")) |
339 data = QByteArray(json.dumps(requestBody).encode("utf-8")) |
333 url = QUrl(self.GsbUrlTemplate.format("threatMatches:find", |
340 url = QUrl(self.GsbUrlTemplate.format("threatMatches:find", |
334 self.__apiKey)) |
341 self.__apiKey)) |
335 req = QNetworkRequest(url) |
342 req = QNetworkRequest(url) |
336 req.setHeader(QNetworkRequest.ContentTypeHeader, "application/json") |
343 req.setHeader(QNetworkRequest.KnownHeaders.ContentTypeHeader, |
|
344 "application/json") |
337 reply = WebBrowserWindow.networkManager().post(req, data) |
345 reply = WebBrowserWindow.networkManager().post(req, data) |
338 |
346 |
339 while reply.isRunning(): |
347 while reply.isRunning(): |
340 QCoreApplication.processEvents(QEventLoop.AllEvents, 200) |
348 QCoreApplication.processEvents( |
|
349 QEventLoop.ProcessEventsFlag.AllEvents, 200) |
341 # max. 200 ms processing |
350 # max. 200 ms processing |
342 |
351 |
343 threats = [] |
352 threats = [] |
344 if reply.error() != QNetworkReply.NoError: |
353 if reply.error() != QNetworkReply.NetworkError.NoError: |
345 error = reply.errorString() |
354 error = reply.errorString() |
346 self.networkError.emit(error) |
355 self.networkError.emit(error) |
347 else: |
356 else: |
348 res = json.loads(str(reply.readAll(), "utf-8")) |
357 res = json.loads(str(reply.readAll(), "utf-8")) |
349 if res and "matches" in res: |
358 if res and "matches" in res: |