From 253acef3f1499f85db61f87a1be2290822f50566 Mon Sep 17 00:00:00 2001 From: Sergey Moshnikov Date: Wed, 22 Aug 2012 07:47:08 +0400 Subject: [PATCH] Handling both relative and absolute URLs as podcast thumbnails --- .../radiot/unittest/ThumbnailUriTestCase.java | 20 +++++++++++++ .../radiot/podcasts/core/RssFeedModel.java | 28 ++++++++++++++++++- 2 files changed, 47 insertions(+), 1 deletion(-) create mode 100644 Radio-T-Test/src/org/dandelion/radiot/unittest/ThumbnailUriTestCase.java diff --git a/Radio-T-Test/src/org/dandelion/radiot/unittest/ThumbnailUriTestCase.java b/Radio-T-Test/src/org/dandelion/radiot/unittest/ThumbnailUriTestCase.java new file mode 100644 index 00000000..1c25d598 --- /dev/null +++ b/Radio-T-Test/src/org/dandelion/radiot/unittest/ThumbnailUriTestCase.java @@ -0,0 +1,20 @@ +package org.dandelion.radiot.unittest; + +import junit.framework.TestCase; +import org.dandelion.radiot.podcasts.core.RssFeedModel; + +public class ThumbnailUriTestCase extends TestCase { + public void testConstructFromCompleteUrl() throws Exception { + String url = RssFeedModel.ThumbnailUrl.construct("http://www.radio-t.com/thumbnail.jpg"); + assertEquals("http://www.radio-t.com/thumbnail.jpg", url); + } + + public void testConstructFromRelativeUrl() throws Exception { + String url = RssFeedModel.ThumbnailUrl.construct("/thumbnail.jpg"); + assertEquals("http://www.radio-t.com/thumbnail.jpg", url); + } + + public void testNoUrl() throws Exception { + assertNull(RssFeedModel.ThumbnailUrl.construct(null)); + } +} diff --git a/Radio-T/src/org/dandelion/radiot/podcasts/core/RssFeedModel.java b/Radio-T/src/org/dandelion/radiot/podcasts/core/RssFeedModel.java index ebad301a..ce1fbfc0 100644 --- a/Radio-T/src/org/dandelion/radiot/podcasts/core/RssFeedModel.java +++ b/Radio-T/src/org/dandelion/radiot/podcasts/core/RssFeedModel.java @@ -6,6 +6,7 @@ import java.util.ArrayList; import java.util.List; +import android.net.Uri; import org.xml.sax.Attributes; import org.xml.sax.ContentHandler; @@ -107,6 +108,31 @@ protected InputStream openImageStream(String address) { } public Bitmap loadPodcastImage(PodcastItem item) { - return BitmapFactory.decodeStream(openImageStream(item.getThumbnailUrl())); + return BitmapFactory.decodeStream(openImageStream( + fullyQualifiedUrl(item.getThumbnailUrl()))); } + + private String fullyQualifiedUrl(String urlPart) { + return ThumbnailUrl.construct(urlPart); + } + + public static class ThumbnailUrl { + private static final String HOST = "http://www.radio-t.com"; + + public static String construct(String urlPart) { + if (null == urlPart) { + return null; + } + return constructFullUrl(urlPart); + } + + private static String constructFullUrl(String urlPart) { + Uri uri = Uri.parse(urlPart); + if (uri.isAbsolute()) { + return urlPart; + } else { + return HOST + urlPart; + } + } + } }