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()); }