diff --git a/FeedlySharp/Endpoints/Entries.cs b/FeedlySharp/Endpoints/Entries.cs index 2e4af91..12c0593 100644 --- a/FeedlySharp/Endpoints/Entries.cs +++ b/FeedlySharp/Endpoints/Entries.cs @@ -11,16 +11,30 @@ namespace FeedlySharp { public partial class FeedlyClient { + /// + /// Gets the content of an entry. + /// + /// entries-endpoint (https://developer.feedly.com/v3/entries/#get-the-content-of-an-entry) + /// The entry id. + /// The cancellation token. + /// public async Task GetEntry(string id, CancellationToken cancellationToken = default(CancellationToken)) { - List entries = await Client.Request>(HttpMethod.Get, String.Format("v3/entries/{0}", WebUtility.UrlEncode(id)), null, false, true, cancellationToken); + List entries = await Client.Request>(HttpMethod.Get, String.Format("v3/entries/{0}", WebUtility.UrlEncode(id)), null, false, false, cancellationToken); return entries != null && entries.Any() ? entries[0] : null; } + /// + /// Gets the content of multiple entries. + /// + /// entries-endpoint (https://developer.feedly.com/v3/entries/#get-the-content-for-a-dynamic-list-of-entries) + /// The ids of the entries. + /// The cancellation token. + /// public async Task> GetEntries(string[] ids, CancellationToken cancellationToken = default(CancellationToken)) { - return await Client.Request>(HttpMethod.Post, "v3/entries/.mget", ids, true, true, cancellationToken); + return await Client.Request>(HttpMethod.Post, "v3/entries/.mget", ids, true, false, cancellationToken); } } } diff --git a/FeedlySharp/Endpoints/Feeds.cs b/FeedlySharp/Endpoints/Feeds.cs index 9872b08..12fd603 100644 --- a/FeedlySharp/Endpoints/Feeds.cs +++ b/FeedlySharp/Endpoints/Feeds.cs @@ -11,6 +11,13 @@ namespace FeedlySharp { public partial class FeedlyClient { + /// + /// Get the metadata about a specific feed. + /// + /// feeds-endpoint (https://developer.feedly.com/v3/feeds/#get-the-metadata-about-a-specific-feed) + /// The id of a the feed. + /// The cancellation token. + /// public async Task GetFeed(string id, CancellationToken cancellationToken = default(CancellationToken)) { id = id.StartsWith("feed/") ? id : "feed/" + id; @@ -18,6 +25,13 @@ namespace FeedlySharp } + /// + /// Get the metadata for a list of feeds. + /// + /// feeds-endpoint (https://developer.feedly.com/v3/feeds/#get-the-metadata-for-a-list-of-feeds) + /// The ids of the feeds. + /// The cancellation token. + /// public async Task> GetFeeds(string[] ids, CancellationToken cancellationToken = default(CancellationToken)) { ids = ids.Select(id => id.StartsWith("feed/") ? id : "feed/" + id).ToArray(); diff --git a/FeedlySharp/Endpoints/Markers.cs b/FeedlySharp/Endpoints/Markers.cs index 797ed4d..915f0c4 100644 --- a/FeedlySharp/Endpoints/Markers.cs +++ b/FeedlySharp/Endpoints/Markers.cs @@ -12,6 +12,15 @@ namespace FeedlySharp { public partial class FeedlyClient { + /// + /// Get the list of unread counts. + /// + /// markers-endpoint (https://developer.feedly.com/v3/markers/#get-the-list-of-unread-counts) + /// Let’s the server know if this is a background auto-refresh or not. In case of very high load on the service, the server can deny access to background requests and give priority to user facing operations. + /// Date used as a lower time limit, instead of the default 30 days + /// A user or system category can be passed to restrict the unread count response to feeds in this category. + /// The cancellation token. + /// public async Task> GetMarkersUnreadCount(bool isAutoRefresh = false, DateTime? newerThan = null, string categoryId = null, CancellationToken cancellationToken = default(CancellationToken)) { Dictionary parameters = new Dictionary(); @@ -32,43 +41,88 @@ namespace FeedlySharp return (await Client.Request(HttpMethod.Get, "v3/markers/counts", parameters, false, true, cancellationToken)).List; } - + /// + /// Marks multiple entries as read. + /// + /// markers-endpoint (https://developer.feedly.com/v3/markers/#mark-one-or-multiple-articles-as-read) + /// The entry ids. + /// The cancellation token. + /// public async Task MarkEntriesAsRead(string[] entryIds, CancellationToken cancellationToken = default(CancellationToken)) { await Client.Request(HttpMethod.Post, "v3/markers", new { action = "markAsRead", entryIds = entryIds, type = "entries" }, true, true, cancellationToken); return true; } + /// + /// Marks an entry as read. + /// + /// markers-endpoint (https://developer.feedly.com/v3/markers/#mark-one-or-multiple-articles-as-read) + /// The entry id. + /// The cancellation token. + /// public async Task MarkEntryAsRead(string entryId, CancellationToken cancellationToken = default(CancellationToken)) { return await MarkEntriesAsRead(new string[] { entryId }, cancellationToken); } - + /// + /// Keep multiple entries as unread. + /// + /// markers-endpoint (https://developer.feedly.com/v3/markers/#keep-one-or-multiple-articles-as-unread) + /// The entry ids. + /// The cancellation token. + /// public async Task KeepEntriesAsUnread(string[] entryIds, CancellationToken cancellationToken = default(CancellationToken)) { await Client.Request(HttpMethod.Post, "v3/markers", new { action = "keepUnread", entryIds = entryIds, type = "entries" }, true, true, cancellationToken); return true; } + /// + /// Keep an entry as unread. + /// + /// markers-endpoint (https://developer.feedly.com/v3/markers/#keep-one-or-multiple-articles-as-unread) + /// The entry id. + /// The cancellation token. + /// public async Task KeepEntryAsUnread(string entryId, CancellationToken cancellationToken = default(CancellationToken)) { return await KeepEntriesAsUnread(new string[] { entryId }, cancellationToken); } - + /// + /// Mark multiple feeds as read. + /// + /// markers-endpoint (https://developer.feedly.com/v3/markers/#mark-a-feed-as-read) + /// The feed ids. + /// The cancellation token. + /// public async Task MarkFeedsAsRead(string[] feedIds, CancellationToken cancellationToken = default(CancellationToken)) { await Client.Request(HttpMethod.Post, "v3/markers", new { action = "markAsRead", feedIds = feedIds, type = "feeds" }, true, true, cancellationToken); return true; } + /// + /// Mark a feed as read. + /// + /// markers-endpoint (https://developer.feedly.com/v3/markers/#mark-a-feed-as-read) + /// The feed id. + /// The cancellation token. + /// public async Task MarkFeedAsRead(string feedId, CancellationToken cancellationToken = default(CancellationToken)) { return await MarkFeedsAsRead(new string[] { feedId }, cancellationToken); } - + /// + /// Mark multiple categories as read. + /// + /// markers-endpoint (https://developer.feedly.com/v3/markers/#mark-a-category-as-read) + /// The category ids. + /// The cancellation token. + /// public async Task MarkCategoriesAsRead(string[] categoryIds, CancellationToken cancellationToken = default(CancellationToken)) { categoryIds = categoryIds.Select(x => ValueToResource("category", x, false)).ToArray(); @@ -76,36 +130,75 @@ namespace FeedlySharp return true; } + /// + /// Mark a category as read. + /// + /// markers-endpoint (https://developer.feedly.com/v3/markers/#mark-a-category-as-read) + /// The category id. + /// The cancellation token. + /// public async Task MarkCategoryAsRead(string categoryId, CancellationToken cancellationToken = default(CancellationToken)) { return await MarkCategoriesAsRead(new string[] { categoryId }, cancellationToken); } - + /// + /// Marks multiple entries as saved. + /// + /// markers-endpoint (https://developer.feedly.com/v3/markers/#mark-one-or-multiple-articles-as-saved) + /// The entry ids. + /// The cancellation token. + /// public async Task MarkEntriesAsSaved(string[] entryIds, CancellationToken cancellationToken = default(CancellationToken)) { await Client.Request(HttpMethod.Post, "v3/markers", new { action = "markAsSaved", categoryIds = entryIds, type = "entries" }, true, true, cancellationToken); return true; } + /// + /// Marks an entriy as saved. + /// + /// markers-endpoint (https://developer.feedly.com/v3/markers/#mark-one-or-multiple-articles-as-saved) + /// The entry id. + /// The cancellation token. + /// public async Task MarkEntryAsSaved(string entryId, CancellationToken cancellationToken = default(CancellationToken)) { return await MarkEntriesAsSaved(new string[] { entryId }, cancellationToken); } - + /// + /// Marks multiple entries as unsaved. + /// + /// markers-endpoint (https://developer.feedly.com/v3/markers/#mark-one-or-multiple-articles-as-unsaved) + /// The entry ids. + /// The cancellation token. + /// public async Task MarkEntriesAsUnsaved(string[] entryIds, CancellationToken cancellationToken = default(CancellationToken)) { await Client.Request(HttpMethod.Post, "v3/markers", new { action = "markAsUnsaved", categoryIds = entryIds, type = "entries" }, true, true, cancellationToken); return true; } + /// + /// Marks an entry as unsaved. + /// + /// markers-endpoint (https://developer.feedly.com/v3/markers/#mark-one-or-multiple-articles-as-unsaved) + /// The entry id. + /// The cancellation token. + /// public async Task MarkEntryAsUnsaved(string entryId, CancellationToken cancellationToken = default(CancellationToken)) { return await MarkEntriesAsUnsaved(new string[] { entryId }, cancellationToken); } - + /// + /// Get the latest read operations. + /// + /// markers-endpoint (https://developer.feedly.com/v3/markers/#get-the-latest-read-operations-to-sync-local-cache) + /// Date from where to fetch the data. Default is 30 days. + /// The cancellation token. + /// public async Task GetMarkersReadOperations(DateTime newerThan, CancellationToken cancellationToken = default(CancellationToken)) { return await Client.Request(HttpMethod.Get, "v3/markers/reads", new Dictionary()