Apiki_Buscape_API.FiltrosFindProducts.MakeUrlParameters C# (CSharp) Method

MakeUrlParameters() public method

Usa as propriedades do objeto que foram setadas com algum valor para montar os parâmetros da URL de requisição à API do BuscaPé.
public MakeUrlParameters ( ) : string
return string
        public string MakeUrlParameters()
        {
            string param = string.Empty;

            /* Primeiro checamos os parâmetros obrigatórios */
            if (this.categoryId != 0)
                param = "?categoryId=" + this.categoryId.ToString();
            if (!string.IsNullOrEmpty(this.keyword))
            {
                if (!string.IsNullOrEmpty(param))
                    param += "&keyword=" + this.keyword;
                else
                    param = "?keyword=" + this.keyword;
            }

            if (string.IsNullOrEmpty(param))
                return string.Empty;

            /* Agora efetuamos os filtros adicionais informados */
            if (this.results != 0)
                param += "&results=" + this.results;

            if (this.page != 0)
                param += "&page=" + this.page;

            if (this.priceMin != 0.0)
                param += "&priceMin=" + this.priceMin;

            if (this.priceMax != 0.0)
                param += "&priceMax=" + this.priceMax;

            string[] validSort = new string[] { "price", "dprice", "rate", "drate", "seller", "dseller",
                                                "installment", "dinstallment", "numberofinstallments",
                                                "dnumberofinstallments", "trustedStore" };
            if (validSort.Contains(this.sort))
                param += "&sort=" + this.sort;

            string[] validMedal = new string[] { "all", "diamond", "gold", "silver", "bronze" };
            if (validMedal.Contains(this.medal))
                param += "&medal=" + this.medal;

            /* Validamos agora os filtros por localização */
            if (this.coordenadasSimples.latitude != 0.00 && this.coordenadasSimples.longitude != 0.00 && this.coordenadasSimples.radius != 0.00)
            {
                param += "&latitude=" + this.coordenadasSimples.latitude.ToString();
                param += "&longitude=" + this.coordenadasSimples.longitude.ToString();
                param += "&radius=" + this.coordenadasSimples.radius.ToString();
            }
            else if (this.coordenadasComplexas.north != 0.00 && this.coordenadasComplexas.south != 0.00 && this.coordenadasComplexas.east != 0.00 && this.coordenadasComplexas.west != 0.00)
            {
                param += "&north=" + this.coordenadasComplexas.north.ToString();
                param += "&south=" + this.coordenadasComplexas.south.ToString();
                param += "&east=" + this.coordenadasComplexas.east.ToString();
                param += "&west=" + this.coordenadasComplexas.west.ToString();
            }

            /* Agora montamos a query com os filtros spec */
            if (this.specFilters.Count > 0)
            {
                foreach (SpecIds spec in this.specFilters)
                    param += "&specId" + spec.NameId + "=" + spec.ValueId;

            }

            // Troca as vírgulas dos números decimais por pontos, que é o esperado pela API
            param = param.Replace(',', '.');

            return param;
        }

Usage Example

        /// <summary>
        /// Recupera uma lista de produtos únicos
        /// </summary>
        /// <param name="filtros">Objeto do tipo FiltrosFindProducts que contém todas as opções de filtragem.</param>
        /// <returns>Retorna uma string com os dados das ofertas.</returns>
        public string FindProductList(FiltrosFindProducts filtros)
        {
            string param = filtros.MakeUrlParameters();
            string paramLomadee = string.Empty;

            if (string.IsNullOrEmpty(param))
                this.ShowErrors("Pelo menos um parâmetro de pesquisa é requerido na função " + Services.findProductList);

            param += (!string.IsNullOrEmpty(this.sourceId)) ? "&sourceId=" + this.sourceId : string.Empty;
            paramLomadee = (filtros.IsLomadee) ? "/lomadee" : string.Empty;

            string url = string.Format("http://{0}.buscape.com/service/{1}{5}/{2}/{3}/{4}", this.server, Services.findProductList, this.applicationId, this.countryCode, param, paramLomadee);

            return GetContent(url);
        }
FiltrosFindProducts