public function testGetMarcas()
 {
     $tabelas = FipeGratis::getTabelas(FipeGratis::CARRO);
     $codigoTabela = $tabelas[0]['codigo'];
     $marcas = FipeGratis::getMarcas(FipeGratis::CARRO, $codigoTabela);
     $codigoMarca = $marcas[0]['codigo'];
     $modelos = FipeGratis::getModelos(FipeGratis::CARRO, $codigoTabela, $codigoMarca);
     $codigoModelo = $modelos[0]['codigo'];
     $anos = FipeGratis::getAnos(FipeGratis::CARRO, $codigoTabela, $codigoMarca, $codigoModelo);
     $codigoAno = $anos[0]['codigo'];
     $precoMedio = FipeGratis::getPrecoMedio(FipeGratis::CARRO, $codigoTabela, $codigoMarca, $codigoModelo, $codigoAno);
     $this->assertEquals(count($tabelas) > 0, true);
     $this->assertEquals(count($marcas) > 0, true);
     $this->assertEquals(count($modelos) > 0, true);
     $this->assertEquals(count($anos) > 0, true);
     $this->assertEquals(is_float($precoMedio), true);
 }
Example #2
0
 /**
  * Metodo para buscar o preço médio de acordo com o tipo, tabela, marca, modelo e ano informado
  *
  * @param  string $tipo
  * @param  int $codMarca
  * @param  int $codModelo
  * @throws Exception
  * @return array
  */
 public static function getPrecoMedio($tipo = null, $tabelaReferencia = null, $codMarca = null, $codModelo = null, $codAno = null)
 {
     /*
      * Verificando se exite $codAno
      */
     $validate = array_filter(FipeGratis::getAnos($tipo, $tabelaReferencia, $codMarca, $codModelo), function ($tables) use($codAno) {
         return $tables['codigo'] == $codAno;
     });
     if (empty($validate)) {
         throw new Exception("O ano {$codAno} não existe");
     }
     /*
      * Montando parametros
      */
     $paramters = array('ScriptManager1' => 'updAnoValor|ddlAnoValor', '__ASYNCPOST' => true, '__EVENTTARGET' => 'ddlAnoValor', '__LASTFOCUS' => '', '__EVENTARGUMENT' => FipeGratis::$__PARAM_EVENTARGUMENT, '__VIEWSTATE' => FipeGratis::$__PARAM_VIEWSTATE, '__VIEWSTATEGENERATOR' => FipeGratis::$__PARAM_VIEWSTATEGENERATOR, '__EVENTVALIDATION' => FipeGratis::$__PARAM_EVENTVALIDATION, 'ddlAnoValor' => $codAno, 'ddlMarca' => $codMarca, 'ddlModelo' => $codModelo, 'ddlTabelaReferencia' => $tabelaReferencia, 'txtCodFipe' => '');
     /*
      * Consultando anos
      */
     $ch = curl_init("http://www.fipe.org.br/web/indices/veiculos/default.aspx?azxp=1&{$tipo}");
     $options = array(CURLOPT_COOKIEJAR => 'cookiejar', CURLOPT_HTTPHEADER => array("User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:32.0) Gecko/20100101 Firefox/32.0", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", "Accept-Language: pt-BR,pt;q=0.8,en-US;q=0.5,en;q=0.3", "Accept-Encoding: gzip, deflate", "Referer: http://www.fipe.org.br/web/indices/veiculos/default.aspx?azxp=1&{$tipo}", "Cookie: " . FipeGratis::$__COOKIE . "", "Host: www.fipe.org.br", "Connection: keep-alive", "X-MicrosoftAjax: Delta=true"), CURLOPT_RETURNTRANSFER => true, CURLOPT_POSTFIELDS => http_build_query($paramters), CURLOPT_FOLLOWLOCATION => 1);
     curl_setopt_array($ch, $options);
     $html = curl_exec($ch);
     curl_close($ch);
     $crawler = new Crawler($html);
     $preco_medio = $crawler->filter('#lblValor')->text();
     $valor = trim(str_replace('R$', '', $preco_medio));
     if (strlen($valor) <= 3) {
         return floatval(str_replace(',', '.', $valor));
     } else {
         $valor = str_replace('.', '', $valor);
         return floatval(str_replace(',', '.', $valor));
     }
 }