diff options
author | RaNaN <Mast3rRaNaN@hotmail.de> | 2013-08-08 17:38:35 +0200 |
---|---|---|
committer | RaNaN <Mast3rRaNaN@hotmail.de> | 2013-08-08 17:38:35 +0200 |
commit | 52f6599748ef61219112111dc5db71f3342b076d (patch) | |
tree | e3627ded64b7e98493ca1ec7bd182aaa1774252e /pyload/remote | |
parent | MultiHosters: moved settings to addon plugins. (diff) | |
download | pyload-52f6599748ef61219112111dc5db71f3342b076d.tar.xz |
adapted account api to multi user, fixed http referer bug
Diffstat (limited to 'pyload/remote')
-rw-r--r-- | pyload/remote/apitypes.py | 15 | ||||
-rw-r--r-- | pyload/remote/apitypes_debug.py | 5 | ||||
-rw-r--r-- | pyload/remote/pyload.thrift | 12 | ||||
-rw-r--r-- | pyload/remote/wsbackend/AbstractHandler.py | 13 |
4 files changed, 34 insertions, 11 deletions
diff --git a/pyload/remote/apitypes.py b/pyload/remote/apitypes.py index 0d9e35963..385f4ca07 100644 --- a/pyload/remote/apitypes.py +++ b/pyload/remote/apitypes.py @@ -97,9 +97,9 @@ class Role: User = 1 class AccountInfo(BaseObject): - __slots__ = ['plugin', 'loginname', 'owner', 'valid', 'validuntil', 'trafficleft', 'maxtraffic', 'premium', 'activated', 'shared', 'options'] + __slots__ = ['plugin', 'loginname', 'owner', 'valid', 'validuntil', 'trafficleft', 'maxtraffic', 'premium', 'activated', 'shared', 'config'] - def __init__(self, plugin=None, loginname=None, owner=None, valid=None, validuntil=None, trafficleft=None, maxtraffic=None, premium=None, activated=None, shared=None, options=None): + def __init__(self, plugin=None, loginname=None, owner=None, valid=None, validuntil=None, trafficleft=None, maxtraffic=None, premium=None, activated=None, shared=None, config=None): self.plugin = plugin self.loginname = loginname self.owner = owner @@ -110,7 +110,7 @@ class AccountInfo(BaseObject): self.premium = premium self.activated = activated self.shared = shared - self.options = options + self.config = config class AddonInfo(BaseObject): __slots__ = ['func_name', 'description', 'value'] @@ -161,6 +161,9 @@ class ConfigItem(BaseObject): self.input = input self.value = value +class Conflict(ExceptionObject): + pass + class DownloadInfo(BaseObject): __slots__ = ['url', 'plugin', 'hash', 'status', 'statusmsg', 'error'] @@ -415,9 +418,11 @@ class Iface(object): pass def generatePackages(self, links): pass + def getAccountInfo(self, plugin, loginname, refresh): + pass def getAccountTypes(self): pass - def getAccounts(self, refresh): + def getAccounts(self): pass def getAddonHandler(self): pass @@ -525,7 +530,7 @@ class Iface(object): pass def unpauseServer(self): pass - def updateAccount(self, plugin, login, password): + def updateAccount(self, plugin, loginname, password): pass def updateAccountInfo(self, account): pass diff --git a/pyload/remote/apitypes_debug.py b/pyload/remote/apitypes_debug.py index 0d04a8225..177029054 100644 --- a/pyload/remote/apitypes_debug.py +++ b/pyload/remote/apitypes_debug.py @@ -18,7 +18,7 @@ enums = [ ] classes = { - 'AccountInfo' : [basestring, basestring, int, bool, int, int, int, bool, bool, bool, (dict, basestring, basestring)], + 'AccountInfo' : [basestring, basestring, int, bool, int, int, int, bool, bool, bool, (list, ConfigItem)], 'AddonInfo' : [basestring, basestring, basestring], 'AddonService' : [basestring, basestring, (list, basestring), (None, int)], 'ConfigHolder' : [basestring, basestring, basestring, basestring, (list, ConfigItem), (None, (list, AddonInfo))], @@ -72,6 +72,7 @@ methods = { 'generateAndAddPackages': (list, int), 'generateDownloadLink': basestring, 'generatePackages': (dict, basestring, list), + 'getAccountInfo': AccountInfo, 'getAccountTypes': (list, basestring), 'getAccounts': (list, AccountInfo), 'getAddonHandler': (dict, basestring, list), @@ -127,7 +128,7 @@ methods = { 'togglePause': bool, 'toggleReconnect': bool, 'unpauseServer': None, - 'updateAccount': None, + 'updateAccount': AccountInfo, 'updateAccountInfo': None, 'updatePackage': None, 'updateUserData': None, diff --git a/pyload/remote/pyload.thrift b/pyload/remote/pyload.thrift index 9f2cfc8ee..702bd9b94 100644 --- a/pyload/remote/pyload.thrift +++ b/pyload/remote/pyload.thrift @@ -294,7 +294,7 @@ struct AccountInfo { 8: bool premium, 9: bool activated, 10: bool shared, - 11: map<string, string> options, + 11: list <ConfigItem> config, } struct OnlineCheck { @@ -335,6 +335,9 @@ exception Unauthorized { exception Forbidden { } +exception Conflict { +} + service Pyload { @@ -489,9 +492,12 @@ service Pyload { // Account Methods /////////////////////// - list<AccountInfo> getAccounts(1: bool refresh), list<string> getAccountTypes(), - void updateAccount(1: PluginName plugin, 2: string login, 3: string password), + + list<AccountInfo> getAccounts(), + AccountInfo getAccountInfo(1: PluginName plugin, 2: string loginname, 3: bool refresh), + + AccountInfo updateAccount(1: PluginName plugin, 2: string loginname, 3: string password), void updateAccountInfo(1: AccountInfo account), void removeAccount(1: AccountInfo account), diff --git a/pyload/remote/wsbackend/AbstractHandler.py b/pyload/remote/wsbackend/AbstractHandler.py index 8012d6cd8..f540435c4 100644 --- a/pyload/remote/wsbackend/AbstractHandler.py +++ b/pyload/remote/wsbackend/AbstractHandler.py @@ -18,6 +18,8 @@ from mod_pywebsocket.msgutil import send_message from mod_pywebsocket.util import get_class_logger + +from pyload.Api import User from pyload.remote.json_converter import loads, dumps @@ -115,7 +117,16 @@ class AbstractHandler: return tuple(o) def do_login(self, req, args, kwargs): - user = self.api.checkAuth(*args, **kwargs) + user = None + # Cookies login when one argument is given + if len(args) == 1: + s = self.load_session(args) + else: + s = self.api.checkAuth(*args, **kwargs) + if s: + uid = s.get('uid', None) + user = User(uid=uid) + if user: req.api = self.api.withUserContext(user.uid) return self.send_result(req, self.OK, True) |