예제 #1
0
        public async Task<SearchClanResult> SearchClans(ClanSearchCriteria criteria)
        {
            IClanSearchCriteriaService criteriaSvc = new ClanSearchCriteriaService();

            var queryString = criteriaSvc.BuildQueryStringFromCriteria(criteria);
            var url = string.Format(UrlConstants.SearchClansUrlTemplate, queryString);

            var result = await _apiClient.Get<SearchClanResult>(url);
            return result;
        }
        public bool IsValidSearchCriteria(ClanSearchCriteria criteria)
        {
            //todo: this should probably return a descriptive validation failure reason...

            if(criteria.Name.Length < 3)
            {
                return false;
            }

            if(criteria.ItemsAfter.HasValue && criteria.ItemsBefore.HasValue)
            {
                return false;
            }

            return true;
        }
        public string BuildQueryStringFromCriteria(ClanSearchCriteria criteria)
        {
            if(IsValidSearchCriteria(criteria) == false)
            {
                return string.Empty;
            }

            var sb = new StringBuilder();
            sb.Append("?");

            if(criteria.Name != null)
            {
                sb.AppendFormat("name={0}&", criteria.Name);
            }

            if(criteria.WarFrequency != null)
            {
                sb.AppendFormat("warFrequency={0}&", criteria.WarFrequency);
            }

            if(criteria.LocationId.HasValue)
            {
                sb.AppendFormat("locationId={0}&", criteria.LocationId.Value);
            }

            if(criteria.MinimumMembers.HasValue)
            {
                sb.AppendFormat("minMembers={0}&", criteria.MinimumMembers.Value);
            }

            if (criteria.MaximumMembers.HasValue)
            {
                sb.AppendFormat("maxMembers={0}&", criteria.MaximumMembers.Value);
            }

            if (criteria.MinimumClanPoints.HasValue)
            {
                sb.AppendFormat("minClanPoints={0}&", criteria.MinimumClanPoints.Value);
            }

            if (criteria.MinimumClanLevel.HasValue)
            {
                sb.AppendFormat("minClanLevel={0}&", criteria.MinimumClanLevel.Value);
            }

            if (criteria.Limit.HasValue)
            {
                sb.AppendFormat("limit={0}&", criteria.Limit.Value);
            }

            if (criteria.ItemsAfter.HasValue)
            {
                sb.AppendFormat("after={0}&", criteria.ItemsAfter.Value);
            }

            if (criteria.ItemsBefore.HasValue)
            {
                sb.AppendFormat("before={0}&", criteria.ItemsBefore.Value);
            }

            return sb.ToString();
        }