Пример #1
0
 public void Alvo_SqliteSalvar_HistoricoMenor()
 {
     var alvo = new Alvo(new Site("Infonet"), 5);
     alvo.RetornoRequisicao = DateTime.Now.ToString();
     alvo.Status = "n";
     alvo.SqliteSalvar();
 }
Пример #2
0
        public void AlvoEquals_False()
        {
            var alvo1 = new Alvo(new Site("xxx"), 4);
            var alvo2 = new Alvo(new Site("yyy"), 4);

            Assert.AreNotEqual(alvo1, alvo2);
        }
Пример #3
0
        public void GetAlvoAtualizadoComProxy()
        {
            var bsn = new Bsn();
            bsn.UrlProxy = "http://inet-se.petrobras.com.br";
            var alvo = new Alvo("Infonet", 248534);

            bsn.Buscar(alvo);
        }
Пример #4
0
        public void GetAlvoAtualizadoTest_StatusIgualP()
        {
            Alvo alvo = new Alvo("Infonet", 1);

            var alvoAtualizado = buscador.Buscar(alvo);

            Assert.AreEqual("r", alvoAtualizado.Status);
        }
Пример #5
0
        public void AlvoEquals_True()
        {
            var alvo1 = new Alvo(new Site("xxx"), 4);
            var alvo2 = new Alvo(new Site("xxx"), 4);

            Assert.AreEqual(alvo1, alvo2);
            Assert.IsTrue(alvo1.Equals(alvo2));
            Assert.IsTrue(alvo2.Equals(alvo1));
        }
Пример #6
0
        public void GetAlvoAtualizadoTest_RetornoRequisicaoConteudoCorreto()
        {
            var alvo = new Alvo("Infonet", 246201);

            var alvoAtual = buscador.Buscar(alvo);

            Assert.IsTrue(alvoAtual.RetornoRequisicao.Contains(
                "estacionamento  2 salas cozinha WC varanda"));
        }
Пример #7
0
        public void Alvo_SqliteSalvar_HistoricoIgual()
        {
            var alvo = new Alvo(new Site("Infonet"), 4);
            alvo.RetornoRequisicao = DateTime.Now.ToString();
            alvo.Status = "nn";
            alvo.SqliteSalvar();

            var alvoDestino = Alvo.SqliteFind("Infonet", 4);

            Assert.AreEqual(alvo.RetornoRequisicao, alvoDestino.RetornoRequisicao);
        }
Пример #8
0
        public void GetAlvoAtualizadoTest_RetornoRequisicaoFelizola908()
        {
            var alvo = new Alvo("Felizola", 908);

            var alvoAtual = buscador.Buscar(alvo);

            //Assert.IsTrue(alvoAtual.RetornoRequisicao.Contains(
            //    "3 SALAS, 2 VARANDAS,"));
            Assert.IsTrue(alvoAtual.RetornoRequisicao.Contains(
                "Imovel"));
        }
Пример #9
0
        /// <summary>
        /// Pede que o buscador se conecte ao Site de Origem e retorna uma
        /// versão atualizada do Conteúdo do Alvo
        /// </summary>
        /// <param name="alvo"></param>
        /// <returns></returns>
        public Alvo Buscar(Alvo alvo)
        {
            Buscador buscador = new Buscador();

            if (!string.IsNullOrEmpty(UrlProxy))
            {
                buscador.UrlProxy = UrlProxy;
            }

            return buscador.Buscar(alvo);
        }
Пример #10
0
        /// <summary>
        /// Retorna o Alvo passado com o Anuncio extraido
        /// </summary>
        /// <param name="alvo"></param>
        /// <returns></returns>
        public Alvo Analisar(Alvo alvo)
        {
            var alvoAnalisado = analisador.Analisar(alvo);

            if (ModoVerboso)
            {
                alvoAnalisado.RetornoRequisicao = "...RetornoRequisicao...(Modo verboso)";
                alvoAnalisado.LinkVisitado = "...LinkVisitado...(Modo verboso)";
                Console.WriteLine(string.Format("Anuncio: '{0}'",
                    alvoAnalisado.Anuncio));
            }

            return alvoAnalisado;
        }
Пример #11
0
        public void ToCSV()
        {
            var alvo = new Alvo(new Site("adsf"), 1);
            var anuncio = new Anuncio(alvo);
            anuncio.Area = 123;
            anuncio.Preco = 456;
            anuncio.Bairro = "bairro";
            anuncio.NumeroQuartos = 4;

            string strCSV = anuncio.ToCSV();

            Assert.AreEqual("\"456\",\"123\",\"bairro\",\"adsf\",\"1\",\"NI\",\"NI\",\"4\"",
                strCSV);
        }
Пример #12
0
        public void Alvo_SqliteSalvar_ComAnuncio()
        {
            var site = Site.GetSitePorNome("Infonet");
            var alvo = new Alvo(site, 3);
            alvo.LinkVisitado = "http://teste";
            alvo.Status = "n";
            alvo.UltimaVisita = DateTime.Now;
            alvo.RetornoRequisicao = "<html/>";

            alvo.Anuncio = new Anuncio(alvo);
            alvo.Anuncio.TipoImovel = TipoImovel.CS;
            alvo.Anuncio.TipoTransacao = TipoTransacao.VD;
            alvo.Anuncio.Bairro = "...";

            alvo.SqliteSalvar();
        }
Пример #13
0
        public void FromCSV_ToCSV_Roundtrip()
        {
            var alvoOrigem = new Alvo(new Site("asdf"), 1);

            var anuncioOrigem = new Anuncio(alvoOrigem);
            anuncioOrigem.Area = 111;
            anuncioOrigem.Preco = 222;
            anuncioOrigem.Bairro = "zzz";
            anuncioOrigem.TipoImovel = TipoImovel.AP;
            anuncioOrigem.TipoTransacao = TipoTransacao.AL;
            anuncioOrigem.NumeroQuartos = 4;

            var anuncioDestino = Anuncio.FromCSV(anuncioOrigem.ToCSV());

            Assert.AreEqual(anuncioOrigem.Area, anuncioDestino.Area);
            Assert.AreEqual(anuncioOrigem.Preco, anuncioDestino.Preco);
            Assert.AreEqual(anuncioOrigem.Bairro, anuncioDestino.Bairro);
            Assert.AreEqual(anuncioOrigem.TipoImovel, anuncioDestino.TipoImovel);
            Assert.AreEqual(anuncioOrigem.TipoTransacao, anuncioDestino.TipoTransacao);
            Assert.AreEqual(anuncioOrigem.NumeroQuartos, anuncioDestino.NumeroQuartos);

            Assert.IsTrue(anuncioOrigem.Equals(anuncioDestino));
        }
Пример #14
0
        public void ParseToCSV_Roundtrip()
        {
            var alvoOrigem = new Alvo(siteInfonet, 1);
            alvoOrigem.HistoricoStatus = "teste";
            alvoOrigem.UltimaVisita = new DateTime(2013, 2, 1, 1, 1, 1);
            alvoOrigem.DuracaoVisita = new TimeSpan(1, 2, 3, 123);
            alvoOrigem.RetornoRequisicao = "codigo html da página";
            alvoOrigem.LinkVisitado = "http://teste.com.br";
            alvoOrigem.UltimaExcecao = "OutOfBeerException";

            alvoOrigem.Anuncio = new Anuncio(alvoOrigem);
            alvoOrigem.Anuncio.Area = 111;
            alvoOrigem.Anuncio.Bairro = "asdfqwer";
            alvoOrigem.Anuncio.Preco = 222;
            alvoOrigem.Anuncio.TipoImovel = TipoImovel.AP;
            alvoOrigem.Anuncio.TipoTransacao = TipoTransacao.AL;

            string alvoCSV = alvoOrigem.ToCSV();
            var alvoDestino = Alvo.FromCSV(alvoCSV);

            Assert.AreEqual(alvoOrigem.UltimaVisita, alvoDestino.UltimaVisita);
            Assert.AreEqual(alvoOrigem.HistoricoStatus, alvoDestino.HistoricoStatus);
            Assert.AreEqual(alvoOrigem.UltimaVisita, alvoDestino.UltimaVisita);
            Assert.AreEqual(alvoOrigem.DuracaoVisita, alvoDestino.DuracaoVisita);
            Assert.AreEqual(alvoOrigem.RetornoRequisicao, alvoDestino.RetornoRequisicao);
            Assert.AreEqual(alvoOrigem.LinkVisitado, alvoDestino.LinkVisitado);
            Assert.AreEqual(alvoOrigem.UltimaExcecao, alvoDestino.UltimaExcecao);

            Assert.IsNotNull(alvoDestino.Anuncio);
            Assert.AreEqual(alvoOrigem.Anuncio.Area, alvoDestino.Anuncio.Area);
            Assert.AreEqual(alvoOrigem.Anuncio.Bairro, alvoDestino.Anuncio.Bairro);
            Assert.AreEqual(alvoOrigem.Anuncio.Preco, alvoDestino.Anuncio.Preco);
            Assert.AreEqual(alvoOrigem.Anuncio.TipoImovel, alvoDestino.Anuncio.TipoImovel);
            Assert.AreEqual(alvoOrigem.Anuncio.TipoTransacao, alvoDestino.Anuncio.TipoTransacao);
            Assert.IsTrue(alvoOrigem.Anuncio.Equals(alvoDestino.Anuncio));
        }
Пример #15
0
 /**
  * Return true when the Page doesn't match any Ignored signature
  *
  * @param page
  * @return
  */
 public bool isValidPage(Alvo page)
 {
     foreach (string text in getTextsInIgnoredPages())
     {
         if (page.RetornoRequisicao.Contains(text))
         {
             return false;
         }
     }
     return true;
 }
Пример #16
0
 public bool isPageNotFound(Alvo page)
 {
     return page.RetornoRequisicao.Contains(PageNotFoundSignature);
 }
Пример #17
0
 /**
  * returns true if page is a Announcement of site.
  *
  * @param page
  * @return
  */
 public bool isAnnouncement(Alvo page)
 {
     if (!isValidPage(page))
     {
         return false;
     }
     return page.RetornoRequisicao.Contains(this.AnnoucementeSignature);
 }
Пример #18
0
        public Anuncio ExtrairAnuncio(Alvo alvo)
        {
            try
            {
                var novoAnuncio = new Anuncio(alvo);
                novoAnuncio.Bairro = this.ExtrairCampo(this.RegexBairro, alvo);
                novoAnuncio.Preco = ObterPreco(alvo);
                novoAnuncio.NumeroQuartos = this.ExtrairCampoInt(this.RegexNumeroQuartos, alvo);
                novoAnuncio.Area = ExtrairCampoDecimal(this.RegexArea, alvo);
                novoAnuncio.TipoImovel = ObterTipoImovel(alvo);
                novoAnuncio.TipoTransacao = ObterTipoTransacao(alvo);

                return novoAnuncio;
            }
            catch (Exception ex)
            {
                throw new Exception(string.Format(
                    "Não foi possível extrair Anuncio do Alvo({0}).", alvo), ex);
            }
        }
Пример #19
0
        public void Alvo_SqliteSalvar_Update_Roundtrip()
        {
            var site = Site.GetSitePorNome("Infonet");
            var alvoOrigem = new Alvo(site, 1);
            alvoOrigem.LinkVisitado = "http://teste";
            alvoOrigem.Status = "n";
            alvoOrigem.UltimaVisita = DateTime.Today.AddMinutes(100);
            alvoOrigem.RetornoRequisicao = "<html/>";
            alvoOrigem.UltimaExcecao = "TooManyNerdsException";

            alvoOrigem.SqliteSalvar();

            var alvoDestino = Alvo.SqliteFind(alvoOrigem.SiteOrigem.Nome,
                alvoOrigem.Id);

            Assert.AreEqual(alvoOrigem, alvoDestino);
            Assert.AreEqual(alvoOrigem.LinkVisitado, alvoDestino.LinkVisitado);
            Assert.AreEqual(alvoOrigem.Status, alvoDestino.Status);
            Assert.AreEqual(alvoOrigem.UltimaVisita, alvoDestino.UltimaVisita);
            Assert.AreEqual(alvoOrigem.RetornoRequisicao, alvoDestino.RetornoRequisicao);
            Assert.AreEqual(alvoOrigem.UltimaExcecao, alvoDestino.UltimaExcecao);
        }
Пример #20
0
        public void ParseToCSV_Roundtrip_AnuncioNulo()
        {
            var alvoOrigem = new Alvo(siteInfonet, 1);
            alvoOrigem.HistoricoStatus = "teste";
            alvoOrigem.UltimaVisita = new DateTime(2013, 2, 1, 1, 1, 1);
            alvoOrigem.DuracaoVisita = new TimeSpan(1, 0, 0);
            alvoOrigem.RetornoRequisicao = "codigo html da página";
            alvoOrigem.LinkVisitado = "http://teste.com.br";

            string alvoCSV = alvoOrigem.ToCSV();
            var alvoDestino = Alvo.FromCSV(alvoCSV);

            Assert.AreEqual(alvoOrigem.UltimaVisita, alvoDestino.UltimaVisita);
            Assert.AreEqual(alvoOrigem.HistoricoStatus, alvoDestino.HistoricoStatus);
            Assert.AreEqual(alvoOrigem.UltimaVisita, alvoDestino.UltimaVisita);
            Assert.AreEqual(alvoOrigem.DuracaoVisita, alvoDestino.DuracaoVisita);
            Assert.AreEqual(alvoOrigem.RetornoRequisicao, alvoDestino.RetornoRequisicao);
            Assert.AreEqual(alvoOrigem.LinkVisitado, alvoDestino.LinkVisitado);
        }
Пример #21
0
 public void Persistir(Alvo alvo)
 {
     alvo.SqliteSalvar();
 }
Пример #22
0
 private string ExtrairCampo(string strRegex, Alvo pagina)
 {
     return Utils.ExtrairCampoString(strRegex, pagina.RetornoRequisicao);
 }
Пример #23
0
        private TipoImovel ObterTipoImovel(Alvo alvo)
        {
            string tipoImovel = ExtrairCampo(RegexTipoImovel, alvo);

            if (tipoImovel == null)
                return TipoImovel.IN;

            try
            {
                switch (tipoImovel.ToUpper())
                {
                    case "APARTAMENTOS":
                    case "APARTAMENTO":
                        return TipoImovel.AP;
                    case "CASAS":
                    case "CASA":
                    case "CASA EM CONDOMINIO":
                        return TipoImovel.CS;
                    case "SALA COMERCIAL":
                        return TipoImovel.SC;
                    case "PONTO COMERCIAL":
                        return TipoImovel.PC;
                    default:
                        return TipoImovel.IN;
                }
            }
            catch (Exception ex)
            {
                throw new Exception(string.Format("Excecao ocorreu ao tentar buscar a regex #{0}# no Alvo({1},{2})",
                    RegexTipoImovel, alvo.SiteOrigem, alvo.Id), ex);
            }
        }
Пример #24
0
        private int ExtrairCampoInt(string strRegex, Alvo pagina)
        {
            var campo = Utils.ExtrairCampoString(strRegex, pagina.RetornoRequisicao);

            if (!string.IsNullOrEmpty(campo))
                return Convert.ToInt32(campo);
            else
                return -1;
        }
Пример #25
0
        private decimal ExtrairCampoDecimal(string strRegex, Alvo pagina)
        {
            var campo = Utils.ExtrairCampoString(strRegex, pagina.RetornoRequisicao);

            if (!string.IsNullOrEmpty(campo))
                return Convert.ToDecimal(campo);
            else
                return -1m;
        }
Пример #26
0
        public static Alvo FromCSV(string alvoCSV)
        {
            var campos = Utils.FromCSV(alvoCSV);

            if (campos.Length != 9)
                throw new Exception(string.Format(
                    "A string '{0}' deveria retornar um array de 9 itens. Retornou {1}.",
                    alvoCSV, campos.Length));

            Alvo alvo;

            try
            {
                alvo = new Alvo(campos[0], Convert.ToInt32(campos[1]));
                alvo.HistoricoStatus = campos[2];
                alvo.DuracaoVisita = TimeSpan.FromSeconds(Convert.ToDouble(campos[3]));
                alvo.UltimaVisita = DateTime.Parse(campos[4]);
                alvo.RetornoRequisicao = campos[5];
                alvo.LinkVisitado = campos[6];
                alvo.Anuncio = Anuncio.FromCSV(campos[7]);
                alvo.UltimaExcecao = campos[8];
            }
            catch (Exception ex)
            {
                throw new Exception(string.Format("Erro ao parsear a strind '{0}'. Array gerado tem tamanho {1}.",
                    alvoCSV, campos.Length), ex);
            }

            return alvo;
        }
Пример #27
0
        private decimal ObterPreco(Alvo alvo)
        {
            string preco = Utils.ExtrairCampoString(this.RegexPreco, alvo.RetornoRequisicao);

            if (string.IsNullOrEmpty(preco))
                return -1;

            decimal retorno;
            if (Decimal.TryParse(preco, out retorno))
            {
                return retorno;
            }
            else
            {
                return 0;
            }
        }
Пример #28
0
        public static Alvo Parse(System.Data.DataRow alvoRow)
        {
            Alvo retorno = null;
            var siteOrigem = Site.GetSitePorNome(alvoRow["siteOrigem"].ToString());
            var id = Convert.ToInt32(alvoRow["id"]);
            retorno = new Alvo(siteOrigem, id);
            retorno.RetornoRequisicao = alvoRow["retornoRequisicao"].ToString();
            retorno.LinkVisitado = alvoRow["linkVisitado"].ToString();
            retorno.HistoricoStatus = alvoRow["historicoStatus"].ToString();
            retorno.UltimaExcecao = alvoRow["ultimaExcecao"].ToString();
            var ultimaVisita = alvoRow["ultimaVisita"].ToString();
            if (!string.IsNullOrEmpty(ultimaVisita))
                retorno.UltimaVisita = Convert.ToDateTime(ultimaVisita);

            return retorno;
        }
Пример #29
0
        private TipoTransacao ObterTipoTransacao(Alvo pagina)
        {
            string tipoTransacao = ExtrairCampo(RegexTipoTransacao, pagina);

            if (tipoTransacao == null)
                return TipoTransacao.IN;

            switch (tipoTransacao.ToUpper())
            {
                case "ALUGAR":
                case "ALUGUEL":
                    return TipoTransacao.AL;
                case "VENDER":
                case "VENDA":
                    return TipoTransacao.VD;
                default:
                    return TipoTransacao.IN;
            }
        }
Пример #30
0
        public void Anuncio_SqliteSalvar_Insert_Roundtrip()
        {
            var alvo = new Alvo("Infonet", 3);
            var anuncioOrigem = new Anuncio(alvo);
            anuncioOrigem.NumeroQuartos = 4;
            anuncioOrigem.Area = 555.55m;
            anuncioOrigem.TipoImovel = TipoImovel.CS;
            anuncioOrigem.TipoTransacao = TipoTransacao.VD;
            anuncioOrigem.Preco = 9.99m;
            anuncioOrigem.Bairro = "Cirurgia";

            anuncioOrigem.SqliteSalvar();
            var anuncioDestino = Anuncio.SqliteFind("Infonet", 3);

            Assert.AreEqual(anuncioOrigem.NumeroQuartos, anuncioDestino.NumeroQuartos);
            Assert.AreEqual(anuncioOrigem.Area, anuncioDestino.Area);
            Assert.AreEqual(anuncioOrigem.TipoImovel, anuncioDestino.TipoImovel);
            Assert.AreEqual(anuncioOrigem.TipoTransacao, anuncioDestino.TipoTransacao);
            Assert.AreEqual(anuncioOrigem.Preco, anuncioDestino.Preco);
            Assert.AreEqual(anuncioOrigem.Bairro, anuncioDestino.Bairro);
        }