forked from Claudio/integracao
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
174 lines
6.4 KiB
174 lines
6.4 KiB
<?php |
|
|
|
require_once 'Integracao.php'; |
|
include "config.php"; |
|
|
|
/* * ***************************************************************************** |
|
* Classe default para criar novas integrações com as API dos Provedores * |
|
* ****************************************************************************** |
|
* 1 - Manter sempre o Padrão de OO * |
|
* -> Classe com inicial MAIUSCULO * |
|
* -> Metodo com inicial MINUSCULO * |
|
* -> Manter o conceito de encapsulamento * |
|
* -> Manter os dados em LOGS da Classe Logger.php * |
|
* -> Documentar o código * |
|
* * |
|
* 2 - Metodos da API manter public. * |
|
* * |
|
* 3 - Deixar como usuario de execucao e acesso pbx:pbx * |
|
* ****************************************************************************** |
|
*/ |
|
|
|
/** |
|
* DESCRICAO DO DESENVOLVEDOR |
|
* |
|
* @author Lucas Awade |
|
* @function developer |
|
* @company SimplesIP |
|
* @version 1.0.0 |
|
*/ |
|
class Telegram extends Integracao { |
|
|
|
private $token; |
|
private $chat; |
|
private $url; |
|
private $metodo; |
|
private $query; |
|
private $curl; |
|
private $debug; |
|
private $params = array(); |
|
|
|
######################################################################## |
|
## FUNCOES DA API ## |
|
######################################################################## |
|
|
|
public function sendMessage($text) { |
|
$this->debug = debug_backtrace(); |
|
if ($this->getArgs(func_get_args())) { |
|
$this->setMetodo("sendMessage"); |
|
$this->request('GET'); |
|
$this->params['chat_id'] = $this->chat; |
|
$this->params['parse_mode'] = "HTML"; |
|
$this->params['text'] = $text; |
|
return $this->setParams(); |
|
} else { |
|
return false; |
|
} |
|
} |
|
|
|
######################################################################## |
|
## FUNCOES DEFAULT DA CLASSE ## |
|
######################################################################## |
|
|
|
/** |
|
* Coleta as informacoes iniciais para o inicio da integracao com a API. |
|
* |
|
* @param string $token |
|
* @param string $chat |
|
* @param string $url |
|
*/ |
|
public function __construct($id_integracao = null) { |
|
$data = $this->db()->getConexaoAPI($id_integracao); |
|
$this->token = $data['token'] ? $data['token'] : CONF_TOKEN_API; |
|
$this->chat = $data['id_user'] ? $data['id_user'] : CONF_USERID_API; |
|
$this->url = ($data['url'] != '127.0.0.1' || !$data['url']) ? $data['url'] . "bot" . $this->token . "/" : CONF_URL_API . "bot" . $this->token . "/"; |
|
$this->setLog(CONF_LOGGER_ATIVO); |
|
$this->log->info("Iniciando integracao", debug_backtrace()); |
|
$this->log->debug("Credenciais de Acesso: " . print_r($data, true), debug_backtrace()); |
|
} |
|
|
|
/** |
|
* Parametriza o metodo utilizado para a consulta. |
|
* |
|
* @param type $metodo |
|
*/ |
|
private function setMetodo($metodo) { |
|
$this->metodo = $metodo; |
|
} |
|
|
|
/** |
|
* Escreve a query para ser passada para o curl |
|
* |
|
* @param string $query |
|
*/ |
|
private function setQuery($query) { |
|
return $this->query .= $query; |
|
} |
|
|
|
/** |
|
* retorna a string pronta da query do curl e limpa a variavel. |
|
* |
|
* @return string $query |
|
*/ |
|
private function getQuery() { |
|
$query = $this->query; |
|
unset($this->query); |
|
return $query; |
|
} |
|
|
|
/** |
|
* Informa o tipo de requisicao que sera feita pela cURL |
|
* @param bool $request |
|
*/ |
|
private function request($request = null) { |
|
if (!$this->request || $request) { |
|
$this->request = (strtoupper($request) == 'POST' ? strtoupper($request) : "GET"); |
|
} |
|
$this->log->debug("HTTP Request: " . $this->request, debug_backtrace()); |
|
return $this->request; |
|
} |
|
|
|
/** |
|
* Recebe array de forma de indice e valor |
|
* |
|
* @example array("qtype" => 'test_api', "query" => '123', "oper" => '=') |
|
* |
|
* @obs sempre chamar a função debug_backtrace() para ser disponível em log |
|
* |
|
* @param type $params |
|
* @debug_track function debug_backtrace() |
|
*/ |
|
private function setParams() { |
|
$x = 0; |
|
$this->setQuery("?"); |
|
if ($this->params) { |
|
foreach ($this->params as $key => $value) { |
|
$this->setQuery("{$key}=$value"); |
|
if (count($this->params) != ++$x) { |
|
$this->setQuery("&"); |
|
} |
|
} |
|
} |
|
unset($this->params); |
|
$response = $this->exec(); |
|
return $this->response($response); |
|
} |
|
|
|
/** |
|
* Recebe as informações e realiza a execucao da API |
|
* |
|
* @void |
|
*/ |
|
private function exec() { |
|
$this->log->debug("URL: " . $this->url . $this->metodo . $this->query, debug_backtrace()); |
|
$response = file_get_contents($this->url . $this->metodo . ($this->request() == "GET" ? $this->getQuery() : null)); |
|
return json_decode($response, true); |
|
} |
|
|
|
/** |
|
* Prepara dos dados para ser transmitidos para o metodo a ser retornado a |
|
* integracao. |
|
* |
|
* @return array |
|
*/ |
|
private function response($data) { |
|
$this->log->debug("Reponse API: " . print_r($data, true), $this->debug); |
|
if ($data) { |
|
return $data; |
|
} else { |
|
return false; |
|
} |
|
} |
|
|
|
} |
|
|