summaryrefslogtreecommitdiffstats
path: root/module/plugins/accounts/ShareonlineBiz.py
diff options
context:
space:
mode:
Diffstat (limited to 'module/plugins/accounts/ShareonlineBiz.py')
-rw-r--r--module/plugins/accounts/ShareonlineBiz.py63
1 files changed, 43 insertions, 20 deletions
diff --git a/module/plugins/accounts/ShareonlineBiz.py b/module/plugins/accounts/ShareonlineBiz.py
index 596be9b7c..4214b4401 100644
--- a/module/plugins/accounts/ShareonlineBiz.py
+++ b/module/plugins/accounts/ShareonlineBiz.py
@@ -1,45 +1,68 @@
# -*- coding: utf-8 -*-
+import re
+
from module.plugins.Account import Account
class ShareonlineBiz(Account):
__name__ = "ShareonlineBiz"
__type__ = "account"
- __version__ = "0.25"
+ __version__ = "0.33"
__description__ = """Share-online.biz account plugin"""
__license__ = "GPLv3"
- __authors__ = [("mkaay", "mkaay@mkaay.de"),
- ("zoidberg", "zoidberg@mujmail.cz")]
+ __authors__ = [("Walter Purcaro", "vuolter@gmail.com")]
- def getUserAPI(self, user, req):
- return req.load("http://api.share-online.biz/account.php",
- {"username": user, "password": self.accounts[user]['password'], "act": "userDetails"})
+ def api_response(self, user, req):
+ return req.load("http://api.share-online.biz/cgi-bin",
+ get={'q' : "userdetails",
+ 'aux' : "traffic",
+ 'username': user,
+ 'password': self.getAccountData(user)['password']})
def loadAccountInfo(self, user, req):
- html = self.getUserAPI(user, req)
+ premium = False
+ validuntil = None
+ trafficleft = -1
+ maxtraffic = 100 * 1024 * 1024 * 1024 #: 100 GB
- info = {}
- for line in html.splitlines():
+ api = {}
+ for line in self.api_response(user, req).splitlines():
if "=" in line:
key, value = line.split("=")
- info[key] = value
- self.logDebug(info)
+ api[key] = value
+
+ self.logDebug(api)
+
+ if api['a'].lower() != "not_available":
+ req.cj.setCookie("share-online.biz", 'a', api['a'])
+
+ premium = api['group'] in ("PrePaid", "Premium", "Penalty-Premium")
+
+ validuntil = float(api['expire_date'])
+
+ traffic = float(api['traffic_1d'].split(";")[0])
+
+ if maxtraffic > traffic:
+ trafficleft = maxtraffic - traffic
+ else:
+ trafficleft = -1
- if "dl" in info and info['dl'].lower() != "not_available":
- req.cj.setCookie("share-online.biz", "dl", info['dl'])
- if "a" in info and info['a'].lower() != "not_available":
- req.cj.setCookie("share-online.biz", "a", info['a'])
+ maxtraffic /= 1024 #@TODO: Remove `/ 1024` in 0.4.10
+ trafficleft /= 1024 #@TODO: Remove `/ 1024` in 0.4.10
- return {"validuntil": float(info['expire_date']) if "expire_date" in info else -1,
- "trafficleft": -1,
- "premium": True if ("dl" in info or "a" in info) and (info['group'] != "Sammler") else False}
+ return {'premium' : premium,
+ 'validuntil' : validuntil,
+ 'trafficleft': trafficleft,
+ 'maxtraffic' : maxtraffic}
def login(self, user, data, req):
- html = self.getUserAPI(user, req)
- if "EXCEPTION" in html:
+ html = self.api_response(user, req)
+ err = re.search(r'\*\*(.+?)\*\*', html)
+ if err:
+ self.logError(err.group(1))
self.wrongPassword()