コード例 #1
0
ファイル: FeedManager.cs プロジェクト: SyaskiMasyaski/banshee
        public Feed CreateFeed(string url, FeedAutoDownload autoDownload, bool is_subscribed)
        {
            Feed feed = null;

            url = url.Trim().TrimEnd('/');

            if (!Feed.Exists(url))
            {
                feed = new Feed(url, autoDownload);
                feed.IsSubscribed = is_subscribed;
                feed.Save();
                feed.Update();
            }

            return(feed);
        }
コード例 #2
0
ファイル: FeedManager.cs プロジェクト: thoja21/banshee-1
        public Feed CreateFeed(string url, string title, FeedAutoDownload autoDownload, int max_items, bool is_subscribed)
        {
            Feed feed = null;

            url = url.Trim().TrimEnd('/');

            if (!Feed.Exists(url))
            {
                feed              = new Feed(url, autoDownload);
                feed.Title        = title;
                feed.IsSubscribed = is_subscribed;
                feed.MaxItemCount = max_items;
                feed.Save();
                feed.Update();
            }

            return(feed);
        }
コード例 #3
0
ファイル: FeedUpdateTask.cs プロジェクト: thoja21/banshee-1
        private void OnDownloadDataReceived(object sender, Migo.Net.DownloadStringCompletedEventArgs args)
        {
            bool notify_on_save = true;

            lock (SyncRoot) {
                if (cancelled)
                {
                    return;
                }

                wc.DownloadStringCompleted -= OnDownloadDataReceived;
                FeedDownloadError error;

                WebException we = args.Error as WebException;
                if (we == null)
                {
                    try {
                        DateTime  last_built_at = feed.LastBuildDate;
                        RssParser parser        = new RssParser(feed.Url, args.Result);
                        parser.UpdateFeed(feed);
                        feed.SetItems(parser.GetFeedItems(feed));
                        error          = FeedDownloadError.None;
                        notify_on_save = feed.LastBuildDate > last_built_at;
                    } catch (FormatException e) {
                        Log.Warning(e);
                        error = FeedDownloadError.InvalidFeedFormat;
                    }
                }
                else
                {
                    error = FeedDownloadError.DownloadFailed;
                    HttpWebResponse resp = we.Response as HttpWebResponse;
                    if (resp != null)
                    {
                        switch (resp.StatusCode)
                        {
                        case HttpStatusCode.NotFound:
                        case HttpStatusCode.Gone:
                            error = FeedDownloadError.DoesNotExist;
                            break;

                        case HttpStatusCode.NotModified:
                            notify_on_save = false;
                            error          = FeedDownloadError.None;
                            break;

                        case HttpStatusCode.Unauthorized:
                            error = FeedDownloadError.UnsupportedAuth;
                            break;

                        default:
                            error = FeedDownloadError.DownloadFailed;
                            break;
                        }
                    }
                }

                feed.LastDownloadError = error;
                feed.LastDownloadTime  = DateTime.Now;

                feed.Save(notify_on_save);

                EmitCompletionEvents(error);
                completed = true;
            }
        }