private void AddParameters(StringBuilder urlBuilder, IAvitoRequestSettings settings) { const char PARAMETER_START = '?'; if (settings.HasParameters) { urlBuilder.Append(PARAMETER_START); urlBuilder.Append(settings.DefaultParameter); AddDistrictsParameter(urlBuilder, settings.Districts); AddFactors(urlBuilder, settings); AddPayMaxParameter(urlBuilder, settings.PayMax); AddPayMinParameter(urlBuilder, settings.PayMin); } }
private void AddFactors(StringBuilder urlBuilder, IAvitoRequestSettings settings) { const char FACTOR_DEVIDER = '.'; var factors = new List <string>(); AddIfNotNull(factors, GetMaterialFactor(settings.Materials)); AddIfNotNull(factors, GetFirstFloorFactor(settings.FirstFloor)); AddIfNotNull(factors, GetHouseFloorFactor(settings.HouseFloor)); AddIfNotNull(factors, GetSquareFactor(settings.MinSquare, settings.MaxSquare)); urlBuilder.Append(PARAMETER_DEVIDER); var factorsParameterBuilder = new StringBuilder("f="); factors.ForEach(f => factorsParameterBuilder.Append($"{f}{FACTOR_DEVIDER}")); urlBuilder.Append(factorsParameterBuilder.ToString().TrimEnd(FACTOR_DEVIDER)); }
public string GetUrl(IAvitoRequestSettings settings) { var urlBuilder = new StringBuilder(AVITO_MAIN_URL); foreach (var segment in settings.Segments) { urlBuilder.Append($"/{segment}"); } AddParameters(urlBuilder, settings); try { var url = new Uri(urlBuilder.ToString()); return(url.ToString()); } catch (Exception ex) { throw new Exception("Не получается построить урл", ex); } }
public async Task <string> Get(IAvitoRequestSettings settings) { var url = _urlHelper.GetUrl(settings); return(await _avitoDataGetter.Get(url)); }