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))); } }
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 } }); } }
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); } }