Apiki_Buscape_API.FiltrosFindOfferList.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[] parametros = new string[12];
            parametros[0] = this.categoryId.ToString();
            parametros[1] = this.keyword;

            string s = string.Join("&", parametros);
            */

            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 (this.productId != 0)
                param = "?productId=" + this.productId.ToString();
            if (!string.IsNullOrEmpty(this.barcode))
                param = "?barcode=" + this.barcode;

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

            // 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 ofertas.
        /// </summary>
        /// <param name="filtros">Objeto do tipo FiltrosFindOfferList que contém todos as opções de filtragem desejadas.</param>
        /// <returns>Retorna uma string com os dados das ofertas</returns>
        public string FindOfferList(FiltrosFindOfferList 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.findOfferList);

            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.findOfferList, this.applicationId, this.countryCode, param, paramLomadee);

            return GetContent(url);
        }
FiltrosFindOfferList