summaryrefslogtreecommitdiffstats
path: root/module/network
diff options
context:
space:
mode:
Diffstat (limited to 'module/network')
-rw-r--r--module/network/Browser.py91
-rw-r--r--module/network/HTTPDownload.py2
-rwxr-xr-xmodule/network/Request.py18
3 files changed, 75 insertions, 36 deletions
diff --git a/module/network/Browser.py b/module/network/Browser.py
index d70cb3aba..3db2299f0 100644
--- a/module/network/Browser.py
+++ b/module/network/Browser.py
@@ -1,51 +1,73 @@
-from HTTPBase import HTTPBase
-from HTTPDownload import HTTPDownload
-from XDCCBase import XDCCDownload
-
from random import randint
-
-import zlib
+from helper import *
+from os.path import join
+from logging import getLogger
from cookielib import CookieJar
+import zlib
+
+from HTTPBase import HTTPBase
+from HTTPDownload import HTTPDownload
from FTPBase import FTPDownload
+from XDCCBase import XDCCDownload
-class Browser():
+class Browser(object):
def __init__(self, interface=None, cookieJar=CookieJar(), bucket=None, proxies={}):
+ self.log = getLogger("log")
+
self.lastURL = None
self.interface = interface
self.cookieJar = cookieJar
self.bucket = bucket
-
+
self.http = HTTPBase(interface=interface, proxies=proxies)
self.setCookieJar(cookieJar)
self.proxies = proxies
-
+
def setCookieJar(self, cookieJar):
self.http.cookieJar = cookieJar
-
+
+ def clearCookies(self):
+ pass #@TODO
+
def clearReferer(self):
self.lastURL = None
-
+
def getPage(self, url, get={}, post={}, referer=None, cookies=True, customHeaders={}):
if not referer:
referer = self.lastURL
self.http.followRedirect = True
- resp = self.http.getResponse(url, get=get, post=post, referer=referer, cookies=cookies, customHeaders=customHeaders)
+ resp = self.http.getResponse(url, get=get, post=post, referer=referer, cookies=cookies,
+ customHeaders=customHeaders)
data = resp.read()
try:
if resp.info()["Content-Encoding"] == "gzip":
- data = zlib.decompress(data, 16+zlib.MAX_WBITS)
+ data = zlib.decompress(data, 16 + zlib.MAX_WBITS)
elif resp.info()["Content-Encoding"] == "deflate":
data = zlib.decompress(data, -zlib.MAX_WBITS)
except:
pass
+
+ try:
+ content_type = resp.info()["Content-Type"]
+ infos = [info.strip() for info in content_type.split(";")]
+ charset = None
+ for info in infos:
+ if info.startswith("charset"):
+ none, charset = info.split("=")
+ if charset:
+ data = data.decode(charset)
+ except Exception, e:
+ self.log.debug("Could not decode charset: %s" % e)
+
self.lastURL = resp.geturl()
return data
-
+
def getRedirectLocation(self, url, get={}, post={}, referer=None, cookies=True, customHeaders={}):
if not referer:
referer = self.lastURL
self.http.followRedirect = False
- resp = self.http.getResponse(url, get=get, post=post, referer=referer, cookies=cookies, customHeaders=customHeaders)
+ resp = self.http.getResponse(url, get=get, post=post, referer=referer, cookies=cookies,
+ customHeaders=customHeaders)
resp.close()
self.lastURL = resp.geturl()
location = None
@@ -54,26 +76,40 @@ class Browser():
except:
pass
return location
-
- def httpDownload(self, url, filename, get={}, post={}, referer=None, cookies=True, customHeaders={}, chunks=1, resume=False):
+
+ def download(self, url, file_name, folder, get={}, post={}, ref=True, cookies=True, no_post_encode=False):
+ #@TODO
+
+ filename = join(folder, file_name)
+ d = self.httpDownload(url, filename, get, post)
+ waitFor(d)
+
+ return filename
+
+ def httpDownload(self, url, filename, get={}, post={}, referer=None, cookies=True, customHeaders={}, chunks=1,
+ resume=False):
if not referer:
referer = self.lastURL
-
- dwnld = HTTPDownload(url, filename, get=get, post=post, referer=referer, cookies=cookies, customHeaders=customHeaders, bucket=self.bucket, interface=self.interface, proxies=self.proxies)
+
+ dwnld = HTTPDownload(url, filename, get=get, post=post, referer=referer, cookies=cookies,
+ customHeaders=customHeaders, bucket=self.bucket, interface=self.interface,
+ proxies=self.proxies)
dwnld.cookieJar = self.cookieJar
-
+
d = dwnld.download(chunks=chunks, resume=resume)
return d
-
+
def ftpDownload(self, url, filename, resume=False):
dwnld = FTPDownload(url, filename, bucket=self.bucket, interface=self.interface, proxies=self.proxies)
-
+
d = dwnld.download(resume=resume)
return d
-
- def xdccDownload(self, server, port, channel, bot, pack, filename, nick="pyload_%d" % randint(1000,9999), ident="pyload", real="pyloadreal"):
- dwnld = XDCCDownload(server, port, channel, bot, pack, nick, ident, real, filename, bucket=self.bucket, interface=self.interface, proxies=self.proxies)
-
+
+ def xdccDownload(self, server, port, channel, bot, pack, filename, nick="pyload_%d" % randint(1000, 9999),
+ ident="pyload", real="pyloadreal"):
+ dwnld = XDCCDownload(server, port, channel, bot, pack, nick, ident, real, filename, bucket=self.bucket,
+ interface=self.interface, proxies=self.proxies)
+
d = dwnld.download()
return d
@@ -86,8 +122,9 @@ if __name__ == "__main__":
#print browser.getRedirectLocation("http://google.com/")
#browser.getPage("https://encrypted.google.com/")
#browser.getPage("http://google.com/search?q=bar")
-
+
browser.httpDownload("http://speedtest.netcologne.de/test_100mb.bin", "test_100mb.bin")
from time import sleep
+
while True:
sleep(1) \ No newline at end of file
diff --git a/module/network/HTTPDownload.py b/module/network/HTTPDownload.py
index 2b8c44a87..ebc8c8e65 100644
--- a/module/network/HTTPDownload.py
+++ b/module/network/HTTPDownload.py
@@ -105,7 +105,7 @@ class ChunkInfo():
class WrappedHTTPDeferred(WrappedDeferred):
pass
-class HTTPDownload():
+class HTTPDownload(object):
def __init__(self, url, filename, get={}, post={}, referer=None, cookies=True, customHeaders={}, bucket=None, interface=None, proxies={}):
self.url = url
self.filename = filename
diff --git a/module/network/Request.py b/module/network/Request.py
index 9ac7d54aa..b0a8063ef 100755
--- a/module/network/Request.py
+++ b/module/network/Request.py
@@ -29,7 +29,7 @@ from module.plugins.Plugin import Abort
from module.network.Browser import Browser
from module.network.helper import waitFor
-class Request:
+class Request(object):
def __init__(self, interface=None):
self.browser = Browser(interface=interface)
self.d = None
@@ -60,7 +60,8 @@ class Request:
self.timeout = int(timeout)
def setCookieJar(self, j):
- self.cookieJar = j
+ #self.cookieJar = j
+ pass
def addCookies(self):
#@TODO
@@ -109,12 +110,6 @@ class Request:
self.browser.clearReferer()
self.d = self.browser.httpDownload(url, file_temp, get=get, post=post, cookies=cookies, chunks=1, resume=self.canContinue)
- self.dl_time = property(lambda: self.d.startTime)
- self.dl_finished = property(lambda: self.d.endTime)
- self.dl_speed = property(lambda: self.d.speed)
- self.dl_size = property(lambda: self.d.size)
- self.dl = property(lambda: True if self.d.startTime and not self.d.endTime else False)
- self.abort = property(self.d.getAbort, self.d.setAbort)
waitFor(self.d)
@@ -132,6 +127,13 @@ class Request:
return free_name
+ dl_time = property(lambda self: self.d.startTime)
+ dl_finished = property(lambda self: self.d.endTime)
+ dl_speed = property(lambda self: self.d.speed)
+ dl_size = property(lambda self: self.d.size)
+ dl = property(lambda self: True if self.d.startTime and not self.d.endTime else False)
+ abort = property(lambda self: self.d.getAbort, lambda self, value: self.d.setAbort(value))
+
def get_speed(self):
try:
return self.dl_speed