コード例 #1
0
        public static async Task <List <SetData> > FindAsync(Dictionary <string, string> query)
        {
            var queryString = string.Empty;

            using (var client = QueryBuilderHelper.SetupClient())
            {
                var stringTask = await QueryBuilderHelper.BuildTaskStringAsync(query, queryString, client, ResourceTypes.Sets);

                var set = QueryBuilderHelper.CreateObject <Set>(stringTask);

                return(set.Cards);
            }
        }
コード例 #2
0
        public static async Task <T> GetAsync <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 = await QueryBuilderHelper.BuildTaskStringAsync(query, queryString, client, type);

                    return(QueryBuilderHelper.CreateObject <T>(stringTask));
                }
            }
            catch (Exception ex)
            {
                return((T)Convert.ChangeType(ex.Message, typeof(T)));
            }
        }
コード例 #3
0
        public static async Task <Pokemon> GetPokemonCardsAsync(Dictionary <string, string> query = null)
        {
            try
            {
                var queryString = string.Empty;
                using (var client = QueryBuilderHelper.SetupClient())
                {
                    var stringTask = await QueryBuilderHelper.BuildTaskStringAsync(query, queryString, client);

                    return(QueryBuilderHelper.CreateObject <Pokemon>(stringTask));
                }
            }
            catch (Exception ex)
            {
                return(new Pokemon {
                    Errors = new List <string> {
                        ex.Message
                    }
                });
            }
        }
コード例 #4
0
        public static async Task <List <string> > GetSubTypesAsync(Dictionary <string, string> query = null)
        {
            try
            {
                var queryString = string.Empty;
                var superTypes  = new List <string>();
                using (var client = QueryBuilderHelper.SetupClient())
                {
                    var stringTask = await QueryBuilderHelper.BuildTaskStringAsync(null, queryString, client, ResourceTypes.SubTypes);

                    var type = QueryBuilderHelper.CreateObject <SubType>(stringTask);
                    superTypes.AddRange(type.Types);
                    return(superTypes);
                }
            }
            catch (Exception ex)
            {
                return(new List <string> {
                    ex.Message
                });
            }
        }
コード例 #5
0
        /// <summary>
        ///     Async: Get all of the cards. This call will take a while to finish.
        /// </summary>
        /// <param name="query"></param>
        /// <returns></returns>
        public static async Task <List <PokemonCard> > AllAsync(Dictionary <string, string> query = null)
        {
            using (var client = QueryBuilderHelper.SetupClient())
            {
                var items      = new List <Pokemon>();
                var mergedList = new List <PokemonCard>();
                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, "500" }
                    };
                }

                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.BuildTaskStringAsync(query, queryString, client, ResourceTypes.Cards);

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

                        var item = QueryBuilderHelper.CreateObject <Pokemon>(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 pokemon in items)
                {
                    mergedList.AddRange(pokemon.Cards);
                }

                return(mergedList);
            }
        }