public GameDetails GetGameDetails(int gameId)
{
GameDetails details = null;
try
{
var apiUri = new Uri(BASE_URL_API_V2 + $"/thing?id={gameId}&stats=1");
var xDoc = _apiDownloadService.DownloadApiResult(apiUri);
// LINQ to XML.
var xElements = xDoc.Descendants("items").ToList();
if (xElements.Count() == 1)
{
var gameCollection = xElements.Select(boardgame => new GameDetails
{
Name = boardgame.Element("item").GetBoardGameName(),
GameId = boardgame.Element("item").GetIntValue("id", gameId).Value,
Artists = boardgame.Element("item").GetArtists(),
AverageRating =
boardgame.Element("item")
.Element("statistics")
.Element("ratings")
.Element("average")
.GetDecimalValue("value"),
AverageWeight =
boardgame.Element("item")
.Element("statistics")
.Element("ratings")
.Element("averageweight")
.GetDecimalValue("value"),
BGGRating =
boardgame.Element("item")
.Element("statistics")
.Element("ratings")
.Element("bayesaverage")
.GetDecimalValue("value"),
Description = boardgame.Element("item").Element("description").Value,
Designers = boardgame.Element("item").GetDesigners(),
Expansions = boardgame.Element("item").GetExpansionsLinks(),
Mechanics = boardgame.Element("item").GetMechanics(),
Categories = boardgame.Element("item").GetCategories(),
Image = boardgame.Element("item").Element("image").GetStringValue(),
IsExpansion = boardgame.Element("item").IsExpansion(),
Thumbnail = boardgame.Element("item").Element("thumbnail").GetStringValue(),
MaxPlayers = boardgame.Element("item").Element("maxplayers").GetIntValue("value"),
MinPlayers = boardgame.Element("item").Element("minplayers").GetIntValue("value"),
PlayerPollResults = boardgame.Element("item").Element("poll").GetPlayerPollResults(),
MaxPlayTime = boardgame.Element("item").Element("maxplaytime").GetIntValue("value"),
MinPlayTime = boardgame.Element("item").Element("minplaytime").GetIntValue("value"),
Publishers = boardgame.Element("item").GetPublishers(),
Rank =
boardgame.Element("item")
.Element("statistics")
.Element("ratings")
.Element("ranks")
.GetRanking(),
YearPublished = boardgame.Element("item").Element("yearpublished").GetIntValue("value"),
});
details = gameCollection.FirstOrDefault();
}
}
catch (Exception ex)
{
_rollbar.SendException(ex);
}
return details;
}