diff options
Diffstat (limited to 'src/de/danoeh/antennapod/syndication')
-rw-r--r-- | src/de/danoeh/antennapod/syndication/handler/TypeGetter.java | 18 | ||||
-rw-r--r-- | src/de/danoeh/antennapod/syndication/handler/UnsupportedFeedtypeException.java | 19 |
2 files changed, 30 insertions, 7 deletions
diff --git a/src/de/danoeh/antennapod/syndication/handler/TypeGetter.java b/src/de/danoeh/antennapod/syndication/handler/TypeGetter.java index 5ed9ff2b0..2496e112a 100644 --- a/src/de/danoeh/antennapod/syndication/handler/TypeGetter.java +++ b/src/de/danoeh/antennapod/syndication/handler/TypeGetter.java @@ -4,6 +4,8 @@ import android.util.Log; import de.danoeh.antennapod.BuildConfig; import de.danoeh.antennapod.feed.Feed; import org.apache.commons.io.input.XmlStreamReader; +import org.jsoup.Jsoup; +import org.jsoup.nodes.Document; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; import org.xmlpull.v1.XmlPullParserFactory; @@ -64,7 +66,7 @@ public class TypeGetter { } else { if (BuildConfig.DEBUG) Log.d(TAG, "Type is invalid"); - throw new UnsupportedFeedtypeException(Type.INVALID); + throw new UnsupportedFeedtypeException(Type.INVALID, tag); } } else { eventType = xpp.next(); @@ -73,7 +75,19 @@ public class TypeGetter { } catch (XmlPullParserException e) { e.printStackTrace(); - } catch (IOException e) { + // XML document might actually be a HTML document -> try to parse as HTML + String rootElement = null; + try { + if (Jsoup.parse(new File(feed.getFile_url()), null) != null) { + rootElement = "html"; + } + } catch (IOException e1) { + e1.printStackTrace(); + } finally { + throw new UnsupportedFeedtypeException(Type.INVALID, rootElement); + } + + } catch (IOException e) { e.printStackTrace(); } } diff --git a/src/de/danoeh/antennapod/syndication/handler/UnsupportedFeedtypeException.java b/src/de/danoeh/antennapod/syndication/handler/UnsupportedFeedtypeException.java index 67fbc9cc9..605dad2fb 100644 --- a/src/de/danoeh/antennapod/syndication/handler/UnsupportedFeedtypeException.java +++ b/src/de/danoeh/antennapod/syndication/handler/UnsupportedFeedtypeException.java @@ -5,18 +5,27 @@ import de.danoeh.antennapod.syndication.handler.TypeGetter.Type; public class UnsupportedFeedtypeException extends Exception { private static final long serialVersionUID = 9105878964928170669L; private TypeGetter.Type type; + private String rootElement; public UnsupportedFeedtypeException(Type type) { super(); this.type = type; - } - - public TypeGetter.Type getType() { + + public UnsupportedFeedtypeException(Type type, String rootElement) { + this.type = type; + this.rootElement = rootElement; + } + + public TypeGetter.Type getType() { return type; } - - @Override + + public String getRootElement() { + return rootElement; + } + + @Override public String getMessage() { if (type == TypeGetter.Type.INVALID) { return "Invalid type"; |