Ejemplo n.º 1
0
        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>());
 }
Ejemplo n.º 4
0
        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());
        }