diff options
author | RaNaN <Mast3rRaNaN@hotmail.de> | 2011-06-02 13:00:20 +0200 |
---|---|---|
committer | RaNaN <Mast3rRaNaN@hotmail.de> | 2011-06-02 13:00:20 +0200 |
commit | 9415f17b63a1167c5f933e2ef7784d1aa4cf3e30 (patch) | |
tree | 4ccfefac0cea6622381f0abddf62bc94557552ea /module/plugins/accounts | |
parent | wupload plugin (free) (diff) | |
download | pyload-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.py | 35 | ||||
-rw-r--r-- | module/plugins/accounts/WuploadCom.py | 51 |
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 |