#!/usr/bin/env python
# -*- coding: utf-8 -*-

from pyload.Api import Api, RequirePerm, Permission

from ApiComponent import ApiComponent

# TODO: multi user
class AddonApi(ApiComponent):
    """ Methods to interact with addons """

    @RequirePerm(Permission.Interaction)
    def getAllInfo(self):
        """Returns all information stored by addon plugins. Values are always strings

        :return:
        """
        # TODO

    @RequirePerm(Permission.Interaction)
    def getInfoByPlugin(self, plugin):
        """Returns public information associated with specific plugin.

        :param plugin: pluginName
        :return: list of :class:`AddonInfo`
        """
        return self.core.addonManager.getInfo(plugin)

    @RequirePerm(Permission.Interaction)
    def getAddonHandler(self):
        """ Lists all available addon handler

        :return: dict of plugin name to list of :class:`AddonService`
        """
        handler = {}
        for name, data in self.core.addonManager.iterAddons():
            if data.handler:
                handler[name] = data.handler.values()
        return handler

    @RequirePerm(Permission.Interaction)
    def callAddon(self, plugin, func, arguments):
        """ Calls any function exposed by an addon """
        pass

    @RequirePerm(Permission.Interaction)
    def callAddonHandler(self, plugin, func, pid_or_fid):
        """ Calls an addon handler registered to work with packages or files  """
        pass


if Api.extend(AddonApi):
    del AddonApi