Esempio n. 1
0
def podcast_data(obj, domain, scaled_logo_size=64):
    if obj is None:
        raise ValueError('podcast should not be None')

    if isinstance(obj, SubscribedPodcast):
        url = obj.ref_url
        podcast = obj.podcast
    else:
        podcast = obj
        url = podcast.url

    subscribers = podcast.subscribers
    last_subscribers = podcast.subscribers

    scaled_logo_url = get_logo_url(podcast, scaled_logo_size)

    return {
        "url": url,
        "title": podcast.title,
        "description": podcast.description,
        "subscribers": subscribers,
        "subscribers_last_week": last_subscribers,
        "logo_url": podcast.logo_url,
        "scaled_logo_url": 'http://%s%s' % (domain, scaled_logo_url),
        "website": podcast.link,
        "mygpo_link": 'http://%s%s' % (domain, get_podcast_link_target(podcast)),
    }
Esempio n. 2
0
def create_podcast_logo(podcast, size):
    if not podcast:
        return ''

    size = int(size)
    s = '<img src="%s" alt="" />' % (get_logo_url(podcast, size),)
    return mark_safe(s)
Esempio n. 3
0
def podcast_data(obj, domain, scaled_logo_size=64):
    if obj is None:
        raise ValueError('podcast should not be None')

    if isinstance(obj, SubscribedPodcast):
        url = obj.ref_url
        podcast = obj.podcast
    else:
        podcast = obj
        url = podcast.url

    subscribers = podcast.subscribers

    scaled_logo_url = get_logo_url(podcast, scaled_logo_size)

    return {
        "url": url,
        "title": podcast.title,
        "author": podcast.author,
        "description": podcast.description,
        "subscribers": subscribers,
        "logo_url": podcast.logo_url,
        "scaled_logo_url": 'http://%s%s' % (domain, scaled_logo_url),
        "website": podcast.link,
        "mygpo_link":
        'http://%s%s' % (domain, get_podcast_link_target(podcast)),
    }
Esempio n. 4
0
    def test_get_nonexisting(self):
        URL = 'http://example.com/non-existing-logo.png'

        self.podcast.logo_url = URL

        logo_url = get_logo_url(self.podcast, 32)

        response = self.client.get(logo_url)
        self.assertEqual(404, response.status_code)
Esempio n. 5
0
    def test_get_nonexisting(self):
        URL = 'http://example.com/non-existing-logo.png'

        self.podcast.logo_url = URL

        logo_url = get_logo_url(self.podcast, 32)

        response = self.client.get(logo_url)
        self.assertEqual(404, response.status_code)
Esempio n. 6
0
def opengraph_episode(episode, podcast):
    s = OPENGRAPH_STR % dict(
        title     = episode.title,
        type      = 'episode',
        image     = 'http://gpodder.net%s' % get_logo_url(podcast, PODCAST_LOGO_BIG_SIZE),
        url       = 'http://gpodder.net%s' % get_episode_link_target(episode, podcast),
        site_name = 'gpodder.net',
        admins    = '0'
    )
    return s
Esempio n. 7
0
def opengraph_podcast(podcast):
    s = OPENGRAPH_STR % dict(
        title=podcast.title,
        type='episode',
        image='http://gpodder.net%s' %
        get_logo_url(podcast, PODCAST_LOGO_BIG_SIZE),
        url='http://gpodder.net%s' % get_podcast_link_target(podcast),
        site_name='gpodder.net',
        admins='0')
    return mark_safe(s)
Esempio n. 8
0
def opengraph_podcast(podcast):
    s = OPENGRAPH_STR % dict(
        title=podcast.title,
        type='episode',
        image='http://gpodder.net%s' % get_logo_url(podcast, PODCAST_LOGO_BIG_SIZE),
        url='http://gpodder.net%s' % get_podcast_link_target(podcast),
        site_name='gpodder.net',
        admins='0',
    )
    return mark_safe(s)
Esempio n. 9
0
def opengraph_podcast(podcast):
    s = OPENGRAPH_STR % dict(
        title=podcast.title,
        type="episode",
        image="http://gpodder.net%s" %
        get_logo_url(podcast, PODCAST_LOGO_BIG_SIZE),
        url="http://gpodder.net%s" % get_podcast_link_target(podcast),
        site_name="gpodder.net",
        admins="0",
    )
    return mark_safe(s)
Esempio n. 10
0
def opengraph_episode(episode, podcast):
    s = OPENGRAPH_STR % dict(
        title=episode.title,
        type='episode',
        image='http://gpodder.net%s' %
        get_logo_url(podcast, PODCAST_LOGO_BIG_SIZE),
        url='http://gpodder.net%s' % get_episode_link_target(episode, podcast),
        site_name='gpodder.net',
        admins='0',
    )
    return s
Esempio n. 11
0
    def _fetch_cover(self, podcast, size=32):
        logo_url = get_logo_url(podcast, size)

        response = self.client.get(logo_url)
        self.assertEqual(302, response.status_code)
        redir = response['Location']

        logger.warning('Redirecting to {}'.format(redir))

        response = self.client.get(redir)
        self.assertEqual(200, response.status_code)
        return response
Esempio n. 12
0
    def _fetch_cover(self, podcast, size=32):
        logo_url = get_logo_url(podcast, size)

        response = self.client.get(logo_url)
        self.assertEqual(302, response.status_code)
        redir = response['Location']

        logger.warn('Redirecting to {}'.format(redir))

        response = self.client.get(redir)
        self.assertEqual(200, response.status_code)
        return response
Esempio n. 13
0
    def test_get_existing_thumbnail(self):
        """ Retrieve an already existing thumbnail

        No distinction is visible outside, but it covers different
        code paths """

        self._save_logo()
        logo_url = get_logo_url(self.podcast, 32)

        response = self.client.get(logo_url)
        self.assertEqual(302, response.status_code, response.content)

        response = self.client.get(logo_url)
        self.assertEqual(302, response.status_code, response.content)
Esempio n. 14
0
    def test_get_existing_thumbnail(self):
        """ Retrieve an already existing thumbnail

        No distinction is visible outside, but it covers different
        code paths """

        self._save_logo()
        logo_url = get_logo_url(self.podcast, 32)

        response = self.client.get(logo_url)
        self.assertEqual(302, response.status_code, response.content)

        response = self.client.get(logo_url)
        self.assertEqual(302, response.status_code, response.content)
Esempio n. 15
0
    def test_new_logo(self):
        with responses.RequestsMock() as rsps, open(
                IMG_PATH1,
                'rb') as body1, open(IMG_PATH1,
                                     'rb') as body2, open(IMG_PATH2,
                                                          'rb') as body3:
            rsps.add(
                responses.GET,
                self.URL,
                status=200,
                body=body1,
                content_type='image/png',
            )
            rsps.add(
                responses.GET,
                self.URL,
                status=200,
                body=body2,
                content_type='image/png',
            )
            rsps.add(
                responses.GET,
                self.URL,
                status=200,
                body=body3,
                content_type='image/png',
            )

            logo_url = get_logo_url(self.podcast, 32)

            # first request
            CoverArt.save_podcast_logo(self.URL)
            response1 = self._fetch_cover(self.podcast)

            # stayed the same
            CoverArt.save_podcast_logo(self.URL)
            response2 = self._fetch_cover(self.podcast)

            self.assertEqual(list(response1.streaming_content),
                             list(response2.streaming_content))

            # changed
            CoverArt.save_podcast_logo(self.URL)
            response3 = self._fetch_cover(self.podcast)

            self.assertNotEqual(list(response2.streaming_content),
                                list(response3.streaming_content))
Esempio n. 16
0
    def test_new_logo(self):
        with responses.RequestsMock() as rsps, open(IMG_PATH1, 'rb') as body1, open(
            IMG_PATH1, 'rb'
        ) as body2, open(IMG_PATH2, 'rb') as body3:
            rsps.add(
                responses.GET,
                self.URL,
                status=200,
                body=body1,
                content_type='image/png',
            )
            rsps.add(
                responses.GET,
                self.URL,
                status=200,
                body=body2,
                content_type='image/png',
            )
            rsps.add(
                responses.GET,
                self.URL,
                status=200,
                body=body3,
                content_type='image/png',
            )

            logo_url = get_logo_url(self.podcast, 32)

            # first request
            CoverArt.save_podcast_logo(self.URL)
            response1 = self._fetch_cover(self.podcast)

            # stayed the same
            CoverArt.save_podcast_logo(self.URL)
            response2 = self._fetch_cover(self.podcast)

            self.assertEqual(
                list(response1.streaming_content), list(response2.streaming_content)
            )

            # changed
            CoverArt.save_podcast_logo(self.URL)
            response3 = self._fetch_cover(self.podcast)

            self.assertNotEqual(
                list(response2.streaming_content), list(response3.streaming_content)
            )
Esempio n. 17
0
    def test_error_open_file(self):
        class ErrFileSystemStorage(FileSystemStorage):
            def open(*args, **kwargs):
                raise IOError

        self._save_logo()
        from mygpo.web import logo

        _logo_storage = logo.LOGO_STORAGE
        logo.LOGO_STORAGE = ErrFileSystemStorage(location=settings.MEDIA_ROOT)

        logo_url = get_logo_url(self.podcast, 32)

        response = self.client.get(logo_url)
        self.assertEqual(404, response.status_code)

        logo.LOGO_STORAGE = _logo_storage
Esempio n. 18
0
    def test_error_open_file(self):
        class ErrFileSystemStorage(FileSystemStorage):
            def open(*args, **kwargs):
                raise IOError

        self._save_logo()
        from mygpo.web import logo

        _logo_storage = logo.LOGO_STORAGE
        logo.LOGO_STORAGE = ErrFileSystemStorage(location=settings.MEDIA_ROOT)

        logo_url = get_logo_url(self.podcast, 32)

        response = self.client.get(logo_url)
        self.assertEqual(404, response.status_code)

        logo.LOGO_STORAGE = _logo_storage
Esempio n. 19
0
def create_podcast_logo(podcast, size):
    if not podcast:
        return ""

    size = int(size)
    return '<img src="%s" alt="" />' % (get_logo_url(podcast, size),)