| 358 | pass |
| 359 | |
| 360 | def perform_request(self, url): |
| 361 | try: |
| 362 | proxy_setting = settings.Settings().get_string('network.httpsProxy') |
| 363 | if proxy_setting: |
| 364 | proxies = {"https": proxy_setting} |
| 365 | else: |
| 366 | proxies = None |
| 367 | |
| 368 | r = requests.get(url.decode('utf8'), proxies=proxies) |
| 369 | if not r.ok: |
| 370 | core.BNSetErrorForDownloadInstance(self.handle, "Received error from server") |
| 371 | return -1 |
| 372 | data = r.content |
| 373 | if len(data) == 0: |
| 374 | core.BNSetErrorForDownloadInstance(self.handle, "No data received from server!") |
| 375 | return -1 |
| 376 | raw_bytes = (ctypes.c_ubyte * len(data)).from_buffer_copy(data) |
| 377 | bytes_wrote = core.BNWriteDataForDownloadInstance(self.handle, raw_bytes, len(raw_bytes)) |
| 378 | if bytes_wrote != len(raw_bytes): |
| 379 | core.BNSetErrorForDownloadInstance(self.handle, "Bytes written mismatch!") |
| 380 | return -1 |
| 381 | continue_download = core.BNNotifyProgressForDownloadInstance(self.handle, bytes_wrote, bytes_wrote) |
| 382 | if continue_download is False: |
| 383 | core.BNSetErrorForDownloadInstance(self.handle, "Download aborted!") |
| 384 | return -1 |
| 385 | except requests.RequestException as e: |
| 386 | core.BNSetErrorForDownloadInstance(self.handle, e.__class__.__name__) |
| 387 | return -1 |
| 388 | except: |
| 389 | core.BNSetErrorForDownloadInstance(self.handle, "Unknown Exception!") |
| 390 | log_error(traceback.format_exc()) |
| 391 | return -1 |
| 392 | |
| 393 | return 0 |
| 394 | |
| 395 | def perform_custom_request(self, method, url, headers, data_generator): |
| 396 | proxy_setting = settings.Settings().get_string('network.httpsProxy') |