public async Task <IList <BoardgameResult> > SearchAsync(string term, bool exact = false) { string uri = $"{Endpoints.SEARCH}?search={HttpUtility.UrlEncode(term)}"; if (exact) { uri = $"{uri}&exact=1"; } HttpResponseMessage resp = await xmlRestClient.GetAsync(uri); if (!resp.IsSuccessStatusCode) { return(new List <BoardgameResult> { new BoardgameResult { StatusCode = (int)resp.StatusCode } }); } _BoardgameSearchResult result = await resp.Content.DeserializeXml <_BoardgameSearchResult>(); return(result.ConvertToBoardgameResultList()); }
public static IList <Boardgame> ConvertToBoardgameList(this _BoardgameSearchResult boardgames) { return(boardgames.Boardgames?.Select(b => new Boardgame { StatusCode = (int)HttpStatusCode.OK, PrimaryName = b.names.FirstOrDefault(n => n.IsPrimaryName)?.Value ?? "(no primary name)", OtherNames = b.names.Where(n => !n.IsPrimaryName).Select(p => p.Value).ToList(), ObjectId = b.ObjectId, YearPublished = b.YearPublished, Age = b.Age, Description = b.Description, Image = b.Image, MaxPlayers = b.MaxPlayers, MaxPlayTime = b.MaxPlayTime, MinPlayers = b.MinPlayers, MinPlayTime = b.MinPlayTime, PlayingTime = b.PlayingTime, Thumbnail = b.Thumbnail, Publishers = b.Publishers?.Select(p => new LinkedObject { ObjectId = p.ObjectId, Value = p.Value }).ToList() ?? new List <LinkedObject>(), Artists = b.Artists?.Select(p => new LinkedObject { ObjectId = p.ObjectId, Value = p.Value }).ToList() ?? new List <LinkedObject>(), Designers = b.Designers?.Select(p => new LinkedObject { ObjectId = p.ObjectId, Value = p.Value }).ToList() ?? new List <LinkedObject>(), Families = b.Families?.Select(p => new LinkedObject { ObjectId = p.ObjectId, Value = p.Value }).ToList() ?? new List <LinkedObject>(), Honors = b.Honors?.Select(p => new LinkedObject { ObjectId = p.ObjectId, Value = p.Value }).ToList() ?? new List <LinkedObject>(), Implementations = b.Implementations?.Select(p => new LinkedObject { ObjectId = p.ObjectId, Value = p.Value }).ToList() ?? new List <LinkedObject>(), Mechanics = b.Mechanics?.Select(p => new LinkedObject { ObjectId = p.ObjectId, Value = p.Value }).ToList() ?? new List <LinkedObject>(), PodcastEpisodes = b.PodcastEpisodes?.Select(p => new LinkedObject { ObjectId = p.ObjectId, Value = p.Value }).ToList() ?? new List <LinkedObject>(), Subdomains = b.Subdomains?.Select(p => new LinkedObject { ObjectId = p.ObjectId, Value = p.Value }).ToList() ?? new List <LinkedObject>(), Versions = b.Versions?.Select(p => new LinkedObject { ObjectId = p.ObjectId, Value = p.Value }).ToList() ?? new List <LinkedObject>(), SuggestedPlayerCountPoll = ConvertPlayerCountPoll(b.Polls), LanguageDependencePoll = ConvertLanguageDependence(b.Polls), PlayerAgePoll = ConvertPlayerAgePoll(b.Polls), Comments = b.Comments?.Select(c => new Comment { UserName = c.UserName, Rating = c.Rating, Text = c.Value }).ToList() ?? new List <Comment>(), Statistics = ConvertStatistics(b.Statistics) }) .ToList() ?? new List <Boardgame>()); }
public static IList <BoardgameResult> ConvertToBoardgameResultList(this _BoardgameSearchResult boardgames) { return(boardgames.Boardgames?.Select(b => new BoardgameResult { StatusCode = (int)HttpStatusCode.OK, Name = b.names.FirstOrDefault()?.Value ?? "(no primary name)", ObjectId = b.ObjectId, YearPublished = b.YearPublished }) .ToList() ?? new List <BoardgameResult>()); }
public async Task <IList <Boardgame> > GetBoardgamesAsync(int[] objectIds, bool includeComments = false, int commentPage = 1, bool includeStatistics = false) { string uri = $"{Endpoints.GET_BOARDGAMES}/{string.Join(",", objectIds)}"; List <string> queryParams = new List <string>(); if (includeComments) { queryParams.Add("comments=1"); queryParams.Add($"page={commentPage}"); } if (includeStatistics) { queryParams.Add("stats=1"); } if (queryParams.Any()) { uri = uri + $"?{string.Join("&", queryParams)}"; } HttpResponseMessage resp = await xmlRestClient.GetAsync(uri); if (!resp.IsSuccessStatusCode) { return(new List <Boardgame> { new Boardgame { StatusCode = (int)resp.StatusCode } }); } _BoardgameSearchResult result = await resp.Content.DeserializeXml <_BoardgameSearchResult>(); return(result.ConvertToBoardgameList()); }