Beispiel #1
0
        /// <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);
        }
Beispiel #2
0
        /// <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;
            }
        }