summaryrefslogtreecommitdiff
path: root/python/downloadprovider.py
diff options
context:
space:
mode:
authorPeter LaFosse <peter@vector35.com>2018-08-29 15:26:00 -0400
committerPeter LaFosse <peter@vector35.com>2018-08-31 14:21:07 -0400
commitf0ccb75e7d80a6c0ae8b01d794b929f03bc6ea6d (patch)
tree7569fe7689062b265329ad0f649705aa8caab922 /python/downloadprovider.py
parenta6b801afadada75afd2b1779edee8d203f3b3140 (diff)
parent426bb3d8b47b93658bf969c429a8b98adae13c30 (diff)
Merging with dev
Diffstat (limited to 'python/downloadprovider.py')
-rw-r--r--python/downloadprovider.py20
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