Skip to content

Commit

Permalink
Merge pull request #174 from Kentico/Items_feed_response_fix
Browse files Browse the repository at this point in the history
Add interface for DeliveryItemsFeed
  • Loading branch information
Enngage committed Oct 10, 2019
2 parents 12b0a6f + 6f63072 commit 899bc85
Show file tree
Hide file tree
Showing 6 changed files with 57 additions and 14 deletions.
8 changes: 4 additions & 4 deletions Kentico.Kontent.Delivery/DeliveryClient.cs
Original file line number Diff line number Diff line change
Expand Up @@ -219,7 +219,7 @@ public async Task<DeliveryItemListingResponse<T>> GetItemsAsync<T>(IEnumerable<I
/// </summary>
/// <param name="parameters">An array of query parameters, for example, for filtering or ordering.</param>
/// <returns>The <see cref="DeliveryItemsFeed"/> instance that can be used to enumerate through content items. If no query parameters are specified, all content items are enumerated.</returns>
public DeliveryItemsFeed GetItemsFeed(params IQueryParameter[] parameters)
public IDeliveryItemsFeed GetItemsFeed(params IQueryParameter[] parameters)
{
return GetItemsFeed((IEnumerable<IQueryParameter>) parameters);
}
Expand All @@ -229,7 +229,7 @@ public DeliveryItemsFeed GetItemsFeed(params IQueryParameter[] parameters)
/// </summary>
/// <param name="parameters">A collection of query parameters, for example, for filtering or ordering.</param>
/// <returns>The <see cref="DeliveryItemsFeed"/> instance that can be used to enumerate through content items. If no query parameters are specified, all content items are enumerated.</returns>
public DeliveryItemsFeed GetItemsFeed(IEnumerable<IQueryParameter> parameters)
public IDeliveryItemsFeed GetItemsFeed(IEnumerable<IQueryParameter> parameters)
{
ValidateItemsFeedParameters(parameters);
var endpointUrl = UrlBuilder.GetItemsFeedUrl(parameters);
Expand All @@ -248,7 +248,7 @@ async Task<DeliveryItemsFeedResponse> GetItemsBatchAsync(string continuationToke
/// <typeparam name="T">Type of the model. (Or <see cref="object"/> if the return type is not yet known.)</typeparam>
/// <param name="parameters">An array of query parameters, for example, for filtering or ordering.</param>
/// <returns>The <see cref="DeliveryItemsFeed{T}"/> instance that can be used to enumerate through content items. If no query parameters are specified, all content items are enumerated.</returns>
public DeliveryItemsFeed<T> GetItemsFeed<T>(params IQueryParameter[] parameters)
public IDeliveryItemsFeed<T> GetItemsFeed<T>(params IQueryParameter[] parameters)
{
return GetItemsFeed<T>((IEnumerable<IQueryParameter>) parameters);
}
Expand All @@ -259,7 +259,7 @@ public DeliveryItemsFeed<T> GetItemsFeed<T>(params IQueryParameter[] parameters)
/// <typeparam name="T">Type of the model. (Or <see cref="object"/> if the return type is not yet known.)</typeparam>
/// <param name="parameters">A collection of query parameters, for example, for filtering or ordering.</param>
/// <returns>The <see cref="DeliveryItemsFeed{T}"/> instance that can be used to enumerate through content items. If no query parameters are specified, all content items are enumerated.</returns>
public DeliveryItemsFeed<T> GetItemsFeed<T>(IEnumerable<IQueryParameter> parameters)
public IDeliveryItemsFeed<T> GetItemsFeed<T>(IEnumerable<IQueryParameter> parameters)
{
var enhancedParameters = ExtractParameters<T>(parameters).ToList();
ValidateItemsFeedParameters(enhancedParameters);
Expand Down
16 changes: 8 additions & 8 deletions Kentico.Kontent.Delivery/IDeliveryClient.cs
Original file line number Diff line number Diff line change
Expand Up @@ -92,31 +92,31 @@ public interface IDeliveryClient
/// Returns a feed that is used to traverse through content items matching the optional filtering parameters.
/// </summary>
/// <param name="parameters">A collection of query parameters, for example, for filtering or ordering.</param>
/// <returns>The <see cref="DeliveryItemsFeed"/> instance that can be used to enumerate through content items. If no query parameters are specified, all content items are enumerated.</returns>
DeliveryItemsFeed GetItemsFeed(params IQueryParameter[] parameters);
/// <returns>The <see cref="IDeliveryItemsFeed"/> instance that can be used to enumerate through content items. If no query parameters are specified, all content items are enumerated.</returns>
IDeliveryItemsFeed GetItemsFeed(params IQueryParameter[] parameters);

/// <summary>
/// Returns a feed that is used to traverse through content items matching the optional filtering parameters.
/// </summary>
/// <param name="parameters">A collection of query parameters, for example, for filtering or ordering.</param>
/// <returns>The <see cref="DeliveryItemsFeed"/> instance that can be used to enumerate through content items. If no query parameters are specified, all content items are enumerated.</returns>
DeliveryItemsFeed GetItemsFeed(IEnumerable<IQueryParameter> parameters);
/// <returns>The <see cref="IDeliveryItemsFeed"/> instance that can be used to enumerate through content items. If no query parameters are specified, all content items are enumerated.</returns>
IDeliveryItemsFeed GetItemsFeed(IEnumerable<IQueryParameter> parameters);

/// <summary>
/// Returns a feed that is used to traverse through strongly typed content items matching the optional filtering parameters.
/// </summary>
/// <typeparam name="T">Type of the model. (Or <see cref="object"/> if the return type is not yet known.)</typeparam>
/// <param name="parameters">A collection of query parameters, for example, for filtering or ordering.</param>
/// <returns>The <see cref="DeliveryItemsFeed{T}"/> instance that can be used to enumerate through content items. If no query parameters are specified, all content items are enumerated.</returns>
DeliveryItemsFeed<T> GetItemsFeed<T>(params IQueryParameter[] parameters);
/// <returns>The <see cref="IDeliveryItemsFeed{T}"/> instance that can be used to enumerate through content items. If no query parameters are specified, all content items are enumerated.</returns>
IDeliveryItemsFeed<T> GetItemsFeed<T>(params IQueryParameter[] parameters);

/// <summary>
/// Returns a feed that is used to traverse through strongly typed content items matching the optional filtering parameters.
/// </summary>
/// <typeparam name="T">Type of the model. (Or <see cref="object"/> if the return type is not yet known.)</typeparam>
/// <param name="parameters">A collection of query parameters, for example, for filtering or ordering.</param>
/// <returns>The <see cref="DeliveryItemsFeed{T}"/> instance that can be used to enumerate through content items. If no query parameters are specified, all content items are enumerated.</returns>
DeliveryItemsFeed<T> GetItemsFeed<T>(IEnumerable<IQueryParameter> parameters);
/// <returns>The <see cref="IDeliveryItemsFeed{T}"/> instance that can be used to enumerate through content items. If no query parameters are specified, all content items are enumerated.</returns>
IDeliveryItemsFeed<T> GetItemsFeed<T>(IEnumerable<IQueryParameter> parameters);

/// <summary>
/// Returns a content type as JSON data.
Expand Down
2 changes: 1 addition & 1 deletion Kentico.Kontent.Delivery/Responses/DeliveryItemsFeed.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ namespace Kentico.Kontent.Delivery
/// <summary>
/// Represents a feed that can be used to retrieve content items from Kentico Kontent Delivery API in smaller batches.
/// </summary>
public class DeliveryItemsFeed
public class DeliveryItemsFeed : IDeliveryItemsFeed
{
internal delegate Task<DeliveryItemsFeedResponse> GetFeedResponse(string continuationToken);

Expand Down
21 changes: 21 additions & 0 deletions Kentico.Kontent.Delivery/Responses/IDeliveryItemsFeed.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
using System.Threading.Tasks;

namespace Kentico.Kontent.Delivery
{
/// <summary>
/// Represents a feed that can be used to retrieve content items from Kentico Kontent Delivery API in smaller batches.
/// </summary>
public interface IDeliveryItemsFeed
{
/// <summary>
/// Indicates whether there are more batches to fetch.
/// </summary>
bool HasMoreResults { get; }

/// <summary>
/// Retrieves the next feed batch if available.
/// </summary>
/// <returns>Instance of <see cref="DeliveryItemsFeedResponse"/> class that contains a list of content items.</returns>
Task<DeliveryItemsFeedResponse> FetchNextBatchAsync();
}
}
2 changes: 1 addition & 1 deletion Kentico.Kontent.Delivery/StrongTyping/DeliveryItemsFeed.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ namespace Kentico.Kontent.Delivery
/// Represents a feed that can be used to retrieve strongly typed content items from Kentico Kontent Delivery API in smaller batches.
/// </summary>
/// <typeparam name="T">The type of content items in the feed.</typeparam>
public class DeliveryItemsFeed<T>
public class DeliveryItemsFeed<T> : IDeliveryItemsFeed<T>
{
internal delegate Task<DeliveryItemsFeedResponse<T>> GetFeedResponse(string continuationToken);

Expand Down
22 changes: 22 additions & 0 deletions Kentico.Kontent.Delivery/StrongTyping/IDeliveryItemsFeed.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
using System.Threading.Tasks;

namespace Kentico.Kontent.Delivery
{
/// <summary>
/// Represents a feed that can be used to retrieve strongly typed content items from Kentico Kontent Delivery API in smaller batches.
/// </summary>
/// <typeparam name="T">The type of content items in the feed.</typeparam>
public interface IDeliveryItemsFeed<T>
{
/// <summary>
/// Indicates whether there are more batches to fetch.
/// </summary>
bool HasMoreResults { get; }

/// <summary>
/// Retrieves the next feed batch if available.
/// </summary>
/// <returns>Instance of <see cref="DeliveryItemsFeedResponse{T}"/> class that contains a list of strongly typed content items.</returns>
Task<DeliveryItemsFeedResponse<T>> FetchNextBatchAsync();
}
}

0 comments on commit 899bc85

Please sign in to comment.