summaryrefslogtreecommitdiffstats
path: root/module/plugins/accounts
diff options
context:
space:
mode:
authorGravatar RaNaN <Mast3rRaNaN@hotmail.de> 2011-06-02 13:00:20 +0200
committerGravatar RaNaN <Mast3rRaNaN@hotmail.de> 2011-06-02 13:00:20 +0200
commit9415f17b63a1167c5f933e2ef7784d1aa4cf3e30 (patch)
tree4ccfefac0cea6622381f0abddf62bc94557552ea /module/plugins/accounts
parentwupload plugin (free) (diff)
downloadpyload-9415f17b63a1167c5f933e2ef7784d1aa4cf3e30.tar.xz
wupload premium (untested), new log functions for plugins, decode kwarg for requests
Diffstat (limited to 'module/plugins/accounts')
-rw-r--r--module/plugins/accounts/FilesonicCom.py35
-rw-r--r--module/plugins/accounts/WuploadCom.py51
2 files changed, 70 insertions, 16 deletions
diff --git a/module/plugins/accounts/FilesonicCom.py b/module/plugins/accounts/FilesonicCom.py
index 9f57809ad..ff4e066e2 100644
--- a/module/plugins/accounts/FilesonicCom.py
+++ b/module/plugins/accounts/FilesonicCom.py
@@ -27,36 +27,39 @@ try:
except ImportError: # pragma: no cover
from module.lib.simplejson import loads as json_loads
-
class FilesonicCom(Account):
__name__ = "FilesonicCom"
__version__ = "0.31"
__type__ = "account"
__description__ = """filesonic.com account plugin"""
- __author_name__ = ("RaNaN","Paul King")
- __author_mail__ = ("RaNaN@pyload.org","")
-
+ __author_name__ = ("RaNaN", "Paul King")
+ __author_mail__ = ("RaNaN@pyload.org", "")
+
+ API_URL = "http://api.filesonic.com"
+
def getDomain(self, req):
- xml = req.load("http://api.filesonic.com/utility?method=getFilesonicDomainForCurrentIp&format=json").decode("utf8")
+ xml = req.load(self.API_URL + "/utility?method=getFilesonicDomainForCurrentIp&format=json",
+ decode=True)
return json_loads(xml)["FSApi_Utility"]["getFilesonicDomainForCurrentIp"]["response"]
-
+
def loadAccountInfo(self, user, req):
- xml = req.load("http://api.filesonic.com/user?method=getInfo&format=json",
- post = {"u": user,
- "p" : self.accounts[user]["password"]}
- ).decode("utf8")
- self.core.log.debug("%s: account status retrieved from api %s" % (self.__name__,xml))
+ xml = req.load(self.API_URL + "/user?method=getInfo&format=json",
+ post={"u": user,
+ "p": self.accounts[user]["password"]}, decode=True)
+
+ self.logDebug("account status retrieved from api %s" % xml)
+
json = json_loads(xml)
if json["FSApi_User"]["getInfo"]["status"] != "success":
- self.core.log.error(_("%s: Invalid login retrieving user details" % self.__name__))
- return {"validuntil": -1, "trafficleft": -1, "premium" : False}
+ self.logError(_("Invalid login retrieving user details"))
+ return {"validuntil": -1, "trafficleft": -1, "premium": False}
premium = json["FSApi_User"]["getInfo"]["response"]["users"]["user"]["is_premium"]
if premium:
validuntil = json["FSApi_User"]["getInfo"]["response"]["users"]["user"]["premium_expiration"]
validuntil = int(mktime(strptime(validuntil, "%Y-%m-%d %H:%M:%S")))
else:
validuntil = -1
- return {"validuntil": validuntil, "trafficleft": -1, "premium" : premium}
+ return {"validuntil": validuntil, "trafficleft": -1, "premium": premium}
def login(self, user, data, req):
domain = self.getDomain(req)
@@ -64,9 +67,9 @@ class FilesonicCom(Account):
post_vars = {
"email": user,
"password": data["password"],
- "rememberMe" : 1
+ "rememberMe": 1
}
- page = req.load("http://www%s/user/login" % domain, cookies=True, post=post_vars).decode("utf8")
+ page = req.load("http://www%s/user/login" % domain, cookies=True, post=post_vars, decode=True)
if "Provided password does not match." in page or "You must be logged in to view this page." in page:
self.wrongPassword()
diff --git a/module/plugins/accounts/WuploadCom.py b/module/plugins/accounts/WuploadCom.py
new file mode 100644
index 000000000..884a4768e
--- /dev/null
+++ b/module/plugins/accounts/WuploadCom.py
@@ -0,0 +1,51 @@
+# -*- 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: RaNaN
+"""
+
+from types import MethodType
+
+from module.plugins.Account import Account
+
+try:
+ from json import loads as json_loads
+except ImportError: # pragma: no cover
+ from module.lib.simplejson import loads as json_loads
+
+class WuploadCom(Account):
+ __name__ = "WuploadCom"
+ __version__ = "0.1"
+ __type__ = "account"
+ __description__ = """filesonic.com account plugin"""
+ __author_name__ = ("RaNaN", "Paul King")
+ __author_mail__ = ("RaNaN@pyload.org", "")
+
+ API_URL = "http://api.filesonic.com"
+
+ def init(self):
+ fs = self.core.pluginManager.getAccountPlugin("FilesonicCom")
+
+ methods = ["loadAccountInfo", "login"]
+ #methods to bind from fs
+
+ for m in methods:
+ setattr(self, m, MethodType(fs.__dict__[m], self, WuploadCom))
+
+ def getDomain(self, req):
+ xml = req.load(self.API_URL + "/utility?method=getWuploadDomainForCurrentIp&format=json",
+ decode=True)
+ return json_loads(xml)["FSApi_Utility"]["getWuploadDomainForCurrentIp"]["response"] \ No newline at end of file