/// <summary> /// Converts the basic push response container. /// </summary> /// <param name="container">The container.</param> /// <returns></returns> private PushResponseContainer ConvertBasicPushResponseContainer(BasicPushResponseContainer container) { PushResponseContainer result = new PushResponseContainer(); foreach (var basicPush in container.Pushes) { result.Pushes.Add(ConvertBasicPushResponse(basicPush)); } result.Cursor = container.Cursor; return(result); }
/// <summary> /// Gets the pushes. /// </summary> /// <param name="filter">The filter.</param> /// <returns></returns> /// <exception cref="System.ArgumentNullException"> /// filter /// or /// filter /// </exception> /// <exception cref="System.Exception">Connect issue.</exception> public PushResponseContainer GetPushes(PushResponseFilter filter) { try { #region pre-processing if (filter == null) { throw new ArgumentNullException("filter"); } string queryString = string.Empty; List <string> queryStringList = new List <string>(); if (!string.IsNullOrWhiteSpace(filter.Cursor)) { string cursorQueryString = string.Format("cursor={0}", filter.Cursor); queryStringList.Add(cursorQueryString); } else { if (filter.ModifiedDate != null) { string modifiedDateQueryString = string.Format("modified_after={0}", filter.ModifiedDate.DateTimeToUnixTime()); queryStringList.Add(modifiedDateQueryString); } if (filter.Active != null) { string activeQueryString = string.Format("active={0}", (bool)filter.Active); queryStringList.Add(activeQueryString); } } //Email filtering can be done on either cursor or regular queries if (!string.IsNullOrWhiteSpace(filter.Email)) { string emailQueryString = string.Format("email={0}", filter.Email); queryStringList.Add(emailQueryString); } //Join all of the query strings if (queryStringList.Count() > 0) { queryString = string.Concat("?", string.Join("&", queryStringList)); } #endregion #region processing PushResponseContainer results = new PushResponseContainer(); BasicPushResponseContainer basicPushContainer = GetRequest <BasicPushResponseContainer>(string.Concat(PushbulletConstants.BaseUrl, PushbulletConstants.PushesUrls.Push, queryString).Trim()); PushResponseContainer pushContainer = ConvertBasicPushResponseContainer(basicPushContainer); if (filter.IncludeTypes != null && filter.IncludeTypes.Count() > 0) { foreach (var type in filter.IncludeTypes) { results.Pushes.AddRange(pushContainer.Pushes.Where(o => o.Type == type).ToList()); } results.Pushes = results.Pushes.OrderByDescending(o => o.Created).ToList(); } else { results = pushContainer; } return(results); #endregion processing } catch (Exception) { throw; } }