BoardGameGeekApiClient.Service.BoardGameGeekClient.GetGameDetails C# (CSharp) Method

GetGameDetails() public method

public GetGameDetails ( int gameId ) : GameDetails
gameId int
return BoardGameGeekApiClient.Models.GameDetails
        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;
        }