Android Open Source - RabbitEars Download Feed Task






From Project

Back to project page RabbitEars.

License

The source code is released under:

MIT License

If you think the Android project RabbitEars listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package com.fbs.rabbitears.tasks;
/*w w  w. j  ava2  s  .c  o m*/
import android.os.AsyncTask;

import com.fbs.rabbitears.Config;
import com.fbs.rabbitears.R;
import com.fbs.rabbitears.events.FeedDownloadEvent;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;

import de.greenrobot.event.EventBus;

/**
 * Download Feed Async
 */
public class DownloadFeedTask extends AsyncTask<String, Void, String>
{
    /**
     * Download feed in background
     * @param urls String... urls to download
     * @return String downloaded xml
     */
    @Override
    protected String doInBackground(String... urls)
    {
        try
        {
            for (String url : urls)
            {
                String downloaded = downloadFeed(new URL(url));
                String doctype    = downloaded.substring(0, 38).toLowerCase().replace('\'', '\"');

                if (doctype.startsWith("<?xml"))
                {
                    return downloaded;
                }
                else
                {
                    String message = Config.getResources().getString(R.string.feed_url_error_xml);
                    throw new Exception(message);
                }
            }
        }
        catch (MalformedURLException e)
        {
            String message = Config.getResources().getString(R.string.feed_url_error_url);

            EventBus.getDefault().post(
                    new FeedDownloadEvent(
                            new Exception(message, e)
                    )
            );
        }
        catch (Exception e)
        {
            EventBus.getDefault().post(new FeedDownloadEvent(e));
        }

        return null;
    }

    /**
     * Post downloaded xml on success if not null
     * @param feedXml String feed xml
     */
    @Override
    protected void onPostExecute(String feedXml)
    {
        if (feedXml != null)
        {
            EventBus.getDefault().post(new FeedDownloadEvent(feedXml));
        }
    }

    /**
     * Download XML feed markup string
     * @param feedUrl URL comic feed address
     * @return String XML feed markup
     * @throws IOException
     */
    private String downloadFeed(URL feedUrl)
            throws IOException
    {
        StringBuilder feedBuilder = new StringBuilder();
        InputStream   urlStream = feedUrl.openStream();

        BufferedReader reader =
                new BufferedReader(
                        new InputStreamReader(urlStream));

        String line;
        while ((line = reader.readLine()) != null)
        {
            feedBuilder.append(line);
        }

        return feedBuilder.toString();
    }
}




Java Source Code List

com.fbs.rabbitears.ApplicationTest.java
com.fbs.rabbitears.Config.java
com.fbs.rabbitears.RabbitEars.java
com.fbs.rabbitears.activities.BaseActivity.java
com.fbs.rabbitears.activities.FeedLister.java
com.fbs.rabbitears.activities.ItemLister.java
com.fbs.rabbitears.activities.ItemStreamer.java
com.fbs.rabbitears.activities.ItemViewer.java
com.fbs.rabbitears.activities.Settings.java
com.fbs.rabbitears.adapters.FeedArrayAdapter.java
com.fbs.rabbitears.adapters.FeedItemArrayAdapter.java
com.fbs.rabbitears.contracts.feed.Author.java
com.fbs.rabbitears.contracts.feed.Content.java
com.fbs.rabbitears.contracts.feed.Entry.java
com.fbs.rabbitears.contracts.feed.Feed.java
com.fbs.rabbitears.contracts.feed.Link.java
com.fbs.rabbitears.contracts.rss.Category.java
com.fbs.rabbitears.contracts.rss.Channel.java
com.fbs.rabbitears.contracts.rss.Enclosure.java
com.fbs.rabbitears.contracts.rss.Guid.java
com.fbs.rabbitears.contracts.rss.Image.java
com.fbs.rabbitears.contracts.rss.Item.java
com.fbs.rabbitears.contracts.rss.Rss.java
com.fbs.rabbitears.events.Event.java
com.fbs.rabbitears.events.FeedDownloadEvent.java
com.fbs.rabbitears.events.ItemProcessEvent.java
com.fbs.rabbitears.fragments.AddFeedDialog.java
com.fbs.rabbitears.fragments.BaseDialogFragment.java
com.fbs.rabbitears.helpers.DeserializationHelper.java
com.fbs.rabbitears.helpers.FileHelper.java
com.fbs.rabbitears.helpers.ModelHelper.java
com.fbs.rabbitears.helpers.ViewHelper.java
com.fbs.rabbitears.models.FeedItem.java
com.fbs.rabbitears.models.Feed.java
com.fbs.rabbitears.models.ItemMedia.java
com.fbs.rabbitears.tasks.DownloadFeedImageTask.java
com.fbs.rabbitears.tasks.DownloadFeedTask.java
com.fbs.rabbitears.tasks.ProcessFeedItemsTask.java
com.fbs.rabbitears.utils.RssParser.java
com.fbs.rabbitears.utils.Size.java
com.fbs.rabbitears.views.MediaStreamer.java