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); }
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); }
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; } }