/** * Segunda etapa, envio dos dados. * * @param \MrPrompt\Portabilidade\Telefone $telefone * @param \MrPrompt\Portabilidade\Captcha $captcha * @return mixed */ public function consulta(Telefone $telefone, Captcha $captcha) { $campos = array('nmTelefone' => $telefone->getNumero(), 'j_captcha_response' => $captcha->getTexto(), 'jcid' => $this->jcid, 'method:consultar' => 'Consultar'); $url = $this->url . '/consulta/executaConsultaSituacaoAtual'; $retorno = $this->getCurl()->post($url, $campos); $doc = new \DOMDocument(); $doc->loadHTML($retorno->body); $path = new \DOMXPath($doc); $grids = $path->query('//tbody')->item(0)->childNodes; // se não for encontrado conteúdo no tbody, é pq não achou o telefone. if ($grids->length == 0) { throw new \Exception('Telefone não identificado.', 500); } return $grids->item(1)->nodeValue; }
#!/usr/bin/env php -q <?php $load = (require_once __DIR__ . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'vendor' . DIRECTORY_SEPARATOR . 'autoload.php'); $load->add('MrPrompt', __DIR__ . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'src'); use MrPrompt\Portabilidade\Telefone; use MrPrompt\Portabilidade\Captcha; use MrPrompt\Portabilidade\Consulta; try { echo "Informe o telefone que deseja consultar: "; $telefone = new Telefone(); $telefone->setNumero(chop(fgets(STDIN))); echo "Baixando captcha...", PHP_EOL; $portabilidade = new Consulta(); $captcha = $portabilidade->baixaCaptcha(); if ($captcha instanceof Captcha) { echo "Captcha baixado, tentando abrir...", PHP_EOL; passthru("open {$captcha->getImagem()}"); echo "Entre com o texto da imagem: "; $captcha->setTexto(chop(fgets(STDIN))); } echo "Enviando chamada...", PHP_EOL; $retorno = $portabilidade->consulta($telefone, $captcha); printf("Operadora: %s\n", $retorno); } catch (\Exception $e) { printf("Erro inesperado: %s - #%d\n", $e->getMessage(), $e->getCode()); }