summaryrefslogtreecommitdiffstats
path: root/pyload/remote
diff options
context:
space:
mode:
authorGravatar RaNaN <Mast3rRaNaN@hotmail.de> 2013-08-08 17:38:35 +0200
committerGravatar RaNaN <Mast3rRaNaN@hotmail.de> 2013-08-08 17:38:35 +0200
commit52f6599748ef61219112111dc5db71f3342b076d (patch)
treee3627ded64b7e98493ca1ec7bd182aaa1774252e /pyload/remote
parentMultiHosters: moved settings to addon plugins. (diff)
downloadpyload-52f6599748ef61219112111dc5db71f3342b076d.tar.xz
adapted account api to multi user, fixed http referer bug
Diffstat (limited to 'pyload/remote')
-rw-r--r--pyload/remote/apitypes.py15
-rw-r--r--pyload/remote/apitypes_debug.py5
-rw-r--r--pyload/remote/pyload.thrift12
-rw-r--r--pyload/remote/wsbackend/AbstractHandler.py13
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)