MCPcopy Create free account
hub / github.com/Vector35/binaryninja-api / perform_request

Method perform_request

python/downloadprovider.py:360–393  ·  view source on GitHub ↗
(self, url)

Source from the content-addressed store, hash-verified

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')

Callers

nothing calls this directly

Calls 6

log_errorFunction · 0.85
get_stringMethod · 0.45
SettingsMethod · 0.45
getMethod · 0.45
decodeMethod · 0.45
readMethod · 0.45

Tested by

no test coverage detected