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

__license__ = 'GPL v3'
__copyright__ = '2010, Lars Jacob jacob.lars at gmail.com'
__docformat__ = 'restructuredtext de'

'''
www.taz.de/digiabo
'''
import os
import zipfile
from calibre.web.feeds.news import BasicNewsRecipe
from calibre.ptempfile import PersistentTemporaryFile
try:
    from urllib.request import HTTPBasicAuthHandler, build_opener, install_opener, urlopen
    from urllib.error import HTTPError
except ImportError:
    from urllib2 import HTTPBasicAuthHandler, build_opener, install_opener, urlopen, HTTPError


class TazDigiabo(BasicNewsRecipe):

    title = u'Taz Digiabo'
    description = u'Das EPUB DigiAbo der Taz'
    language = 'de'
    lang = 'de-DE'

    __author__ = 'Lars Jacob'
    needs_subscription = True

    conversion_options = {
        'no_default_epub_cover': True
    }

    def build_index(self):
        domain = "http://dl.taz.de"

        url = domain + "/epub/"

        auth_handler = HTTPBasicAuthHandler()
        auth_handler.add_password(realm='TAZ-ABO',
                                  uri=url,
                                  user=self.username,
                                  passwd=self.password)
        opener = build_opener(auth_handler)
        install_opener(opener)

        try:
            f = urlopen(url)
        except HTTPError:
            self.report_progress(0, _('Can\'t login to download issue'))
            raise ValueError('Failed to login, check your username and'
                             ' password')

        tmp = PersistentTemporaryFile(suffix='.epub')
        self.report_progress(0, _('downloading epub'))
        tmp.write(f.read())
        tmp.close()

        zfile = zipfile.ZipFile(tmp.name, 'r')
        self.report_progress(0, _('extracting epub'))

        zfile.extractall(self.output_dir)

        tmp.close()
        index = os.path.join(self.output_dir, 'content.opf')

        self.report_progress(1, _('epub downloaded and extracted'))

        return index
