# -*- 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 .
@author: mkaay
@interface-version: 0.2
"""
from thread import start_new_thread
class Expose(object):
""" used for decoration to declare rpc services """
def __init__(self, *args, **kwargs):
self._f = args[0]
hookManager.addRPC(self._f.__module__, self._f.func_name, self._f.func_doc)
def __get__(self, obj, klass):
self._obj = obj
return self
def __call__(self, *args, **kwargs):
return self._f(self._obj, *args, **kwargs)
def threaded(f):
def run(*args,**kwargs):
return start_new_thread(f, args, kwargs)
return run
class Hook():
__name__ = "Hook"
__version__ = "0.2"
__type__ = "hook"
__threaded__ = []
__config__ = [ ("name", "type", "desc" , "default") ]
__description__ = """interface for hook"""
__author_name__ = ("mkaay", "RaNaN")
__author_mail__ = ("mkaay@mkaay.de", "RaNaN@pyload.org")
def __init__(self, core):
self.core = core
self.log = core.log
self.config = core.config
self.interval = 60
self.setup()
def __repr__(self):
return "" % self.__name__
def setup(self):
""" more init stuff if needed"""
pass
def isActivated(self):
""" checks if hook is activated"""
return self.config.getPlugin(self.__name__, "activated")
def getConfig(self, option):
""" gets config values """
return self.config.getPlugin(self.__name__, option)
def setConfig(self, option, value):
""" sets config value """
self.config.setPlugin(self.__name__, option, value)
#log functions
def logInfo(self, msg):
self.log.info("%s: %s" % (self.__name__, msg))
def logWarning(self, msg):
self.log.warning("%s: %s" % (self.__name__, msg))
def logError(self, msg):
self.log.error("%s: %s" % (self.__name__, msg))
def logDebug(self, msg):
self.log.debug("%s: %s" % (self.__name__, msg))
#event methods - overwrite these if needed
def coreReady(self):
pass
def downloadStarts(self, pyfile):
pass
def downloadFinished(self, pyfile):
pass
def downloadFailed(self, pyfile):
pass
def packageFinished(self, pypack):
pass
def packageFailed(self, pypack):
pass
def beforeReconnecting(self, ip):
pass
def afterReconnecting(self, ip):
pass
def periodical(self):
pass
def unrarFinished(self, folder, fname):
pass
def newCaptchaTask(self, task):
""" new captcha task for the plugin, it MUST set the handler and timeout or will be ignored """
pass
def captchaCorrect(self, task):
pass
def captchaInvalid(self, task):
pass