Example #1
0
        public static T Get <T>(Dictionary <string, string> query = null)
        {
            try
            {
                var queryString = string.Empty;
                var type        = QueryBuilderHelper.GetType <T>(ref query);

                using (var client = QueryBuilderHelper.SetupClient())
                {
                    var stringTask = QueryBuilderHelper.BuildTaskString(query, ref queryString, client, type);
                    var result     = QueryBuilderHelper.CreateObject <T>(stringTask);

                    if (result is IBaseQueryModel model)
                    {
                        model.PagingInfo = HttpResponseToPagingInfo.MapFrom(stringTask.Headers);
                        return((T)model);
                    }

                    return(result);
                }
            }
            catch (Exception ex)
            {
                return((T)Convert.ChangeType(ex.Message, typeof(T)));
            }
        }
Example #2
0
        public static Pokemon GetPokemonCards(Dictionary <string, string> query = null)
        {
            try
            {
                var queryString = string.Empty;
                using (var client = QueryBuilderHelper.SetupClient())
                {
                    var stringTask = QueryBuilderHelper.BuildTaskString(query, ref queryString, client);
                    var result     = QueryBuilderHelper.CreateObject <Pokemon>(stringTask);

                    result.PagingInfo = HttpResponseToPagingInfo.MapFrom(stringTask.Headers);

                    return(result);
                }
            }
            catch (Exception ex)
            {
                return(new Pokemon {
                    Errors = new List <string> {
                        ex.Message
                    }
                });
            }
        }
Example #3
0
        public static async Task <List <SetData> > All(Dictionary <string, string> query = null)
        {
            using (var client = QueryBuilderHelper.SetupClient())
            {
                var items      = new List <Set>();
                var mergedList = new List <SetData>();
                var fetchAll   = QueryBuilderHelper.FetchAll(ref query);

                if (query != null)
                {
                    if (!query.ContainsKey(CardQueryTypes.Page))
                    {
                        query.Add(CardQueryTypes.Page, "1");
                    }
                    query.Add(CardQueryTypes.PageSize, "500");
                }
                else
                {
                    query = new Dictionary <string, string>
                    {
                        { CardQueryTypes.Page, "1" },
                        { CardQueryTypes.PageSize, "100" }
                    };
                }

                var totalCount = int.Parse(query[CardQueryTypes.PageSize]);
                int amount;
                for (var i = 0; i < totalCount; i += amount)
                {
                    var queryString = string.Empty;
                    var stringTask  = await QueryBuilderHelper.BuildTaskString(query, queryString, client, ResourceTypes.Sets);

                    if (stringTask.IsSuccessStatusCode)
                    {
                        var info = HttpResponseToPagingInfo.MapFrom(stringTask.Headers);
                        totalCount = info.TotalCount;
                        amount     = info.Count;

                        var item = QueryBuilderHelper.CreateObject <Set>(stringTask);
                        query[CardQueryTypes.Page] = (int.Parse(query[CardQueryTypes.Page]) + 1).ToString();
                        items.Add(item);

                        if (!fetchAll)
                        {
                            break;
                        }
                    }
                    else
                    {
                        break;
                    }
                }

                // Create the list returned as a single list instead of a list of lists
                foreach (var set in items)
                {
                    mergedList.AddRange(set.Cards);
                }

                return(mergedList);
            }
        }