repositório com os arquivos utilizados para integração entre o sistema SimplesIP e diversos sistemas.
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.

154 lines
4.8 KiB

2 years ago
<?php
require_once 'Integracao.php';
include "config.php";
/**
* DESCRICAO DO DESENVOLVEDOR
*
* @author Lucas Awade
* @function developer
* @company SimplesIP
* @version 1.0.0
*/
class SGA extends Integracao {
private $token;
private $url;
private $metodo;
private $query;
private $curl;
private $debug;
private $params = array();
########################################################################
## FUNCOES DA API ##
########################################################################
public function auth(){
$this->debug = debug_backtrace();
if ($this->getArgs(func_get_args())) {
$this->metodo('usuario/autenticar');
return array();
} else {
return false;
}
}
public function identificarDocumento($documento) {
$this->debug = debug_backtrace();
if ($this->getArgs(func_get_args())) {
return array();
} else {
return false;
}
}
########################################################################
## FUNCOES DEFAULT DA CLASSE ##
########################################################################
/**
* Coleta as informacoes iniciais para o inicio da integracao com a API.
*
* @param string $token
* @param string $url
* @param boolean $log
*/
public function __construct($token, $url) {
$this->token = $token;
$this->url = $url;
$this->setLog(CONF_LOGGER_ATIVO);
$this->integracaoReg();
$this->log->info("Iniciando integracao", debug_backtrace());
}
/**
* Parametriza o metodo utilizado para a consulta.
*
* @param type $metodo
*/
private function setMetodo($metodo = "POST") {
$methods = ["GET", "POST", "DELETE", "PUT", "PATCH"];
if(in_array($metodo, $methods)){
$this->metodo = $metodo;
}
}
/**
* 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;
}
/**
* Constroi de forma dinamica a string para ser passada para a execucao do Curl
*
* @void
*/
private function curl() {
$this->curl = curl_init();
$header = array('Content-Type: application/json');
curl_setopt($this->curl, CURLOPT_URL, $this->url);
curl_setopt($this->curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($this->curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($this->curl, CURLOPT_USERPWD, $this->userpwd);
curl_setopt($this->curl, CURLOPT_HEADER, false);
curl_setopt($this->curl, CURLOPT_POST, true);
curl_setopt($this->curl, CURLOPT_POSTFIELDS, $this->params);
curl_setopt($this->curl, CURLOPT_HTTPHEADER, $header);
curl_setopt($this->curl, CURLOPT_SSL_VERIFYPEER, 1);
curl_setopt($this->curl, CURLOPT_TIMEOUT, 30);
$response = curl_exec($this->curl);
if (curl_errno($this->curl)) {
curl_close($this->curl);
return false;
}
curl_close($this->curl);
return $this->response($response);
}
/**
* Recebe array de forma de indice e valor
*
* @example array("qtype" => 'test_api', "query" => '123', "oper" => '=')
*
* @obs sempre chamar a fun<EFBFBD><EFBFBD>o debug_backtrace() para ser dispon<EFBFBD>vel em log
*
* @param type $params
* @debug_track function debug_backtrace()
*/
private function setParams() {
unset($this->params);
}
/**
* 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;
}
}
}