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