# coding=utf-8
#
# This file is part of SickGear.
#

import feedparser

from exceptions_helper import ex
from sickgear import logger


class RSSFeeds(object):
    def __init__(self, provider=None):
        self.provider = provider

    def get_feed(self, url, **kwargs):

        if self.provider:
            success, err_msg = self.provider.check_auth_cookie()
            if not success:
                return
            response = self.provider.get_url(url, **kwargs)
            if not self.provider.should_skip() and response:
                try:
                    data = feedparser.parse(response)
                    data['rq_response'] = self.provider.session.response
                    if data and 'entries' in data:
                        return data

                    if data and 'error' in data.feed:
                        err_code = data.feed['error']['code']
                        err_desc = data.feed['error']['description']
                        logger.debug(f'RSS error:[{err_desc}] code:[{err_code}]')
                    else:
                        logger.debug(f'RSS error loading url: {url}')

                except (BaseException, Exception) as e:
                    logger.debug(f'RSS error: {ex(e)}')