summaryrefslogtreecommitdiffstats
path: root/module/network/RequestFactory.py
diff options
context:
space:
mode:
authorGravatar RaNaN <Mast3rRaNaN@hotmail.de> 2010-12-22 14:25:56 +0100
committerGravatar RaNaN <Mast3rRaNaN@hotmail.de> 2010-12-22 14:25:56 +0100
commit052d09687627999b91b45a8c0224aa9de4769924 (patch)
tree0ed3dd7cc49cd43fd2ce4c1b1573a13265daefb6 /module/network/RequestFactory.py
parentrefactoring part 1: deprecation warnings, reduced debug, cookie compatibility (diff)
downloadpyload-052d09687627999b91b45a8c0224aa9de4769924.tar.xz
cleaned request factory
Diffstat (limited to 'module/network/RequestFactory.py')
-rw-r--r--module/network/RequestFactory.py68
1 files changed, 68 insertions, 0 deletions
diff --git a/module/network/RequestFactory.py b/module/network/RequestFactory.py
new file mode 100644
index 000000000..d73ab5e20
--- /dev/null
+++ b/module/network/RequestFactory.py
@@ -0,0 +1,68 @@
+# -*- coding: utf-8 -*-
+
+"""
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License,
+ or (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ See the GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, see <http://www.gnu.org/licenses/>.
+
+ @author: mkaay, RaNaN
+"""
+
+from threading import Lock
+
+from Browser import Browser
+from HTTPBase import HTTPBase
+from CookieJar import CookieJar
+
+class RequestFactory():
+ def __init__(self, core):
+ self.lock = Lock()
+ self.core = core
+ self.cookiejars = {}
+
+ iface = property(lambda self: self.core.config["general"]["download_interface"])
+
+ def getRequest(self, pluginName, account=None):
+ self.lock.acquire()
+
+ req = Browser()
+ #@TODO proxy stuff, bucket
+
+ if account:
+ cj = self.getCookieJar(pluginName, account)
+ req.setCookieJar(cj)
+ else:
+ req.setCookieJar(CookieJar(pluginName))
+
+ self.lock.release()
+ return req
+
+ def getURL(self, url):
+ base = HTTPBase()
+ #@TODO proxies
+ #@TODO post,get...
+
+ resp = base.getResponse(url)
+ resp = resp.read()
+ return resp
+
+ def getCookieJar(self, pluginName, account=None):
+ if self.cookiejars.has_key((pluginName, account)):
+ return self.cookiejars[(pluginName, account)]
+
+ cj = CookieJar(pluginName, account)
+ self.cookiejars[(pluginName, account)] = cj
+ return cj
+
+# needs pyreq in global namespace
+def getURL(url):
+ pyreq.getURL(url) \ No newline at end of file