diff options
| author | Peter LaFosse <peter@vector35.com> | 2018-08-29 15:26:00 -0400 |
|---|---|---|
| committer | Peter LaFosse <peter@vector35.com> | 2018-08-31 14:21:07 -0400 |
| commit | f0ccb75e7d80a6c0ae8b01d794b929f03bc6ea6d (patch) | |
| tree | 7569fe7689062b265329ad0f649705aa8caab922 /python/downloadprovider.py | |
| parent | a6b801afadada75afd2b1779edee8d203f3b3140 (diff) | |
| parent | 426bb3d8b47b93658bf969c429a8b98adae13c30 (diff) | |
Merging with dev
Diffstat (limited to 'python/downloadprovider.py')
| -rw-r--r-- | python/downloadprovider.py | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/python/downloadprovider.py b/python/downloadprovider.py index d34ca358..1c94aef3 100644 --- a/python/downloadprovider.py +++ b/python/downloadprovider.py @@ -20,17 +20,22 @@ import abc -import code import ctypes import sys import traceback # Binary Ninja Components import binaryninja._binaryninjacore as core + +import binaryninja from binaryninja.setting import Setting +from binaryninja import with_metaclass from binaryninja import startup from binaryninja import log +# 2-3 compatibility +from binaryninja import pyNativeStr + class DownloadInstance(object): def __init__(self, provider, handle = None): @@ -76,7 +81,7 @@ class _DownloadProviderMetaclass(type): @property def list(self): """List all DownloadProvider types (read-only)""" - startup._init_plugins() + binaryninja._init_plugins() count = ctypes.c_ulonglong() types = core.BNGetDownloadProviderList(count) result = [] @@ -86,7 +91,7 @@ class _DownloadProviderMetaclass(type): return result def __iter__(self): - startup._init_plugins() + binaryninja._init_plugins() count = ctypes.c_ulonglong() types = core.BNGetDownloadProviderList(count) try: @@ -96,7 +101,7 @@ class _DownloadProviderMetaclass(type): core.BNFreeDownloadProviderList(types) def __getitem__(self, value): - startup._init_plugins() + binaryninja._init_plugins() provider = core.BNGetDownloadProviderByName(str(value)) if provider is None: raise KeyError("'%s' is not a valid download provider" % str(value)) @@ -109,8 +114,7 @@ class _DownloadProviderMetaclass(type): raise AttributeError("attribute '%s' is read only" % name) -class DownloadProvider(object): - __metaclass__ = _DownloadProviderMetaclass +class DownloadProvider(with_metaclass(_DownloadProviderMetaclass, object)): name = None instance_class = None _registered_providers = [] @@ -167,7 +171,7 @@ if sys.version_info >= (2, 7, 9): opener = build_opener(ProxyHandler({'https': proxy_setting})) install_opener(opener) - r = urlopen(url.decode("charmap")) + r = urlopen(pyNativeStr(url)) total_size = int(r.headers.get('content-length', 0)) bytes_sent = 0 while True: @@ -225,7 +229,7 @@ else: else: proxies = None - r = requests.get(url.decode("charmap"), proxies=proxies) + r = requests.get(pyNativeStr(url), proxies=proxies) if not r.ok: core.BNSetErrorForDownloadInstance(self.handle, "Received error from server") return -1 |
