using System; using System.Collections; using System.Collections.Generic; using IF.Lastfm.Core.Api.Enums; using Newtonsoft.Json.Linq; namespace IF.Lastfm.Core.Api.Helpers { public class PageResponse : IEnumerable { public PageResponse() { Page = 1; TotalPages = 1; } #region Properties public IEnumerable Content { get; set; } public bool Success { get; set; } public LastFmApiError Error { get; set; } public int Page { get; set; } public int TotalPages { get; set; } public int TotalItems { get; set; } public int PageSize { get; set; } #endregion #region IEnumerable public IEnumerator GetEnumerator() { if (Content != null) { return Content.GetEnumerator(); } else { return null; } } IEnumerator IEnumerable.GetEnumerator() { if (Content != null) { return Content.GetEnumerator(); } else { return null; } } #endregion #region Factory methods /// /// Sometimes we need this object before we can set the content. Make sure to set the content! /// /// public static PageResponse CreateSuccessResponse() { var r = new PageResponse { Success = true, Error = LastFmApiError.None }; return r; } public static PageResponse CreateSuccessResponse(IEnumerable content) { var r = new PageResponse { Content = content, Success = true, Error = LastFmApiError.None }; return r; } public static PageResponse CreateErrorResponse(LastFmApiError error) { var r = new PageResponse { Content = new[] {default(T)}, Success = false, Error = error }; return r; } #endregion public void AddPageInfoFromJToken(JToken attrToken) { if (attrToken == null) { return; } var page = attrToken.Value("page"); Page = !string.IsNullOrWhiteSpace(page) ? Convert.ToInt32(page) : 1; var totalPages = attrToken.Value("totalPages"); TotalPages = !string.IsNullOrWhiteSpace(totalPages) ? Convert.ToInt32(totalPages) : 1; var totalItems = attrToken.Value("total"); TotalItems = !string.IsNullOrWhiteSpace(totalItems) ? Convert.ToInt32(totalItems) : 1; var pagesize = attrToken.Value("perPage"); PageSize = !string.IsNullOrWhiteSpace(pagesize) ? Convert.ToInt32(pagesize) : 1; } // {"@attr": { // "user": "tehrikkit", // "page": "", // "perPage": "", // "totalPages": "", // "total": "15" //}} } }