# -*- coding: utf-8 -*-

import datetime
import hashlib
import time

from pyload.plugin.Account import Account
from pyload.utils import json_loads


class RapideoPl(Account):
    __name = "RapideoPl"
    __version = "0.01"
    __type = "account"
    __description = "Rapideo.pl account plugin"
    __license = "GPLv3"
    __authors = [("goddie", "dev@rapideo.pl")]

    _api_url = "http://enc.rapideo.pl"

    _api_query = {
        "site": "newrd",
        "username": "",
        "password": "",
        "output": "json",
        "loc": "1",
        "info": "1"
    }

    _req = None
    _usr = None
    _pwd = None

    def loadAccountInfo(self, name, req):
        self._req = req
        try:
            result = json_loads(self.runAuthQuery())
        except Exception:
            # todo: return or let it be thrown?
            return

        premium = False
        valid_untill = -1
        if "expire" in result.keys() and result["expire"]:
            premium = True
            valid_untill = time.mktime(datetime.datetime.fromtimestamp(int(result["expire"])).timetuple())

        traffic_left = result["balance"]

        return ({
                    "validuntil": valid_untill,
                    "trafficleft": traffic_left,
                    "premium": premium
                })

    def login(self, user, data, req):
        self._usr = user
        self._pwd = hashlib.md5(data["password"]).hexdigest()
        self._req = req
        try:
            response = json_loads(self.runAuthQuery())
        except Exception:
            self.wrongPassword()

        if "errno" in response.keys():
            self.wrongPassword()
        data['usr'] = self._usr
        data['pwd'] = self._pwd

    def createAuthQuery(self):
        query = self._api_query
        query["username"] = self._usr
        query["password"] = self._pwd

        return query

    def runAuthQuery(self):
        data = self._req.load(self._api_url, post=self.createAuthQuery())

        return data