public async static Task<PagedList<Article>> GetConnectedArticlesAsync(string relation, string articleId, string query = null, string label = null, IEnumerable<string> fields = null, int pageNumber = 1, int pageSize = 20) { var request = new FindConnectedArticlesRequest { Relation = relation, ArticleId = articleId, Label = label, Query = query, PageNumber = pageNumber, PageSize = pageSize }; if (fields != null) request.Fields.AddRange(fields); var response = await request.ExecuteAsync(); if (response.Status.IsSuccessful == false) throw response.Status.ToFault(); IEnumerable<Article> articles = null; // if label is specified, then get the labelled endpoint if (string.IsNullOrWhiteSpace(label) == false) articles = response.Connections.Select(c => c.Endpoints[label].Content); else articles = response.Connections.Select(c => { if (c.Endpoints.EndpointA.ArticleId == articleId) return c.Endpoints.EndpointB.Content; else return c.Endpoints.EndpointA.Content; }); var list = new PagedList<Article>() { PageNumber = response.PagingInfo.PageNumber, PageSize = response.PagingInfo.PageSize, TotalRecords = response.PagingInfo.TotalRecords, GetNextPage = async skip => await GetConnectedArticlesAsync(relation, articleId, query, label, fields, pageNumber + skip + 1, pageSize) }; list.AddRange(articles); return list; }
public async static Task<PagedList<Connection>> GetConnectionsAsync(string relation, string articleId, string query = null, string label = null, IEnumerable<string> fields = null, int pageNumber = 1, int pageSize = 20) { var request = new FindConnectedArticlesRequest { Relation = relation, ArticleId = articleId, Query = query, Label = label, PageNumber = pageNumber, PageSize = pageSize }; if (fields != null) request.Fields.AddRange(fields); var response = await request.ExecuteAsync(); if (response.Status.IsSuccessful == false) throw response.Status.ToFault(); var list = new PagedList<Connection> { PageNumber = response.PagingInfo.PageNumber, PageSize = response.PagingInfo.PageSize, TotalRecords = response.PagingInfo.TotalRecords, GetNextPage = async skip => await GetConnectionsAsync(relation, articleId, query, null, fields, pageNumber + skip + 1, pageSize) }; list.AddRange(response.Connections); return list; }