# -*- coding: utf-8 -*-
#
# Test links:
# http://d-h.st/users/shine/?fld_id=37263#files

import re

from urlparse import urljoin

from module.plugins.internal.SimpleCrypter import SimpleCrypter, create_getInfo


class DevhostStFolder(SimpleCrypter):
    __name__    = "DevhostStFolder"
    __type__    = "crypter"
    __version__ = "0.04"

    __pattern__ = r'http://(?:www\.)?d-h\.st/users/(?P<USER>\w+)(/\?fld_id=(?P<ID>\d+))?'
    __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
                   ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]

    __description__ = """d-h.st folder decrypter plugin"""
    __license__     = "GPLv3"
    __authors__     = [("zapp-brannigan", "fuerst.reinje@web.de"),
                       ("Walter Purcaro", "vuolter@gmail.com")]


    LINK_PATTERN = r'(?:/> |;">)<a href="(.+?)"(?!>Back to \w+<)'
    OFFLINE_PATTERN = r'"/cHP">test\.png<'


    def getFileInfo(self):
        if re.search(self.OFFLINE_PATTERN, self.html):
            self.offline()

        try:
            id = re.match(self.__pattern__, self.pyfile.url).group('ID')
            if id == "0":
                raise

            p = r'href="(.+?)">Back to \w+<'
            m = re.search(p, self.html)
            html = self.load(urljoin("http://d-h.st", m.group(1)),
                             cookies=False)

            p = '\?fld_id=%s.*?">(.+?)<' % id
            m = re.search(p, html)
            name = folder = m.group(1)

        except Exception, e:
            self.logDebug(e)
            name = folder = re.match(self.__pattern__, self.pyfile.url).group('USER')

        return {'name': name, 'folder': folder}


getInfo = create_getInfo(DevhostStFolder)