Utilização da API em PHP

68 views
Skip to first unread message

Osteobaldo da Silva

unread,
Dec 3, 2009, 7:59:49 AM12/3/09
to Lembreto
Olá a todos,

alguém poderia me auxiliar com algum exemplo de como utilizo a API no
meu site.
Estou trabalhando em um projeto que faz uma busca na internet por
oportunidades no mercado, índices financeiros e previsões públicas
orçamentárias e avisa ao meu cliente através de relatórios. Gostaria
de avisá-lo também via SMS e me parece que o Lembreto me oferece esta
opção.

Desde já agradeço,
Osteobaldo da Silva


Cláudio

unread,
Dec 3, 2009, 8:51:18 AM12/3/09
to Lembreto
Osteobaldo, veja bem.

Abaixo fiz um exemplo com a utilização de uma classe.
É bem provável que você terá que adaptá-la para seu contexto, mas já é
uma grande ajuda.

******************************************************************************************
************************* ARQUIVO class.WebService.php
*************************
******************************************************************************************
<?php

//Configuração caso você utilize proxy ISA no seu servidor
//Utilize IP:PORTA
//Ex.: define("PROXY","127.0.0.1:8080");
define("PROXY","");

/**
* Classe responsável em manipular o WebService
* @author Cláudio Fernando Pinto <claudio....@aorta.com.br>
* @since 1.0 - 28/10/2008
*/
class WebService
{
/**
* Atributo com a lista de erros ocorridos
* @author Cláudio Fernando Pinto <claudio....@aorta.com.br>
* @since 1.0 - 28/10/2008
*/
private $arrErros = array();

/**
* Construtor da classe
* @author Cláudio Fernando Pinto <claudio....@aorta.com.br>
* @since 1.0 - 28/10/2008
*/
public function __construct()
{

}
/**
* Método que retorna o erros
* @author Cláudio Fernando Pinto <claudio....@aorta.com.br>
* @since 1.0 - 28/10/2008
*/
public function getErro()
{
return $this->arrErros;
}
/**
* Método que busca o token para as demais requisições
* @author Cláudio Fernando Pinto <claudio....@aorta.com.br>
* @since 1.0 - 28/10/2008
*
*/
public function getToken($frob)//Acesse http://www.lembreto.com.br/explore_getfrob.aspx
(Você deve estar logado no sistema)
{
$arrRetorno = array();
//Capturando as informacoes
$strRetorno = $this->requestGet($this->geraUrlAssinatura
(URL_API_LEMBRETO,array("method"=>"lembreto.gettoken","frob"=>
$frob,"api_key"=>CHAVE,"perms"=>"d")));
if($strRetorno)
{
$objSimpleXML = new SimpleXMLElement($strRetorno);
$attrsTmp = $objSimpleXML->attributes();
if((string)$attrsTmp == "ok")
{
$attrsTmp = $objSimpleXML->auth->user;
define("USER_ID",(string)$attrsTmp["nsid"]);//Obtido
com o método getToken
define("TOKEN",(string)$objSimpleXML->auth->token);//
Obtido com o método getToken
return true;
}
else
{
$this->trataRetornoErro($objSimpleXML);
return false;
}
}
else
{
$this->arrErros[] = "N&atilde;o foi poss&iacute;vel
realizar a requisi&ccedil;&atilde;o ao webservice.";
return false;
}
}
/**
* Método de requisição get
* @author Cláudio Fernando Pinto <claudio....@aorta.com.br>
* @since 1.0 - 28/10/2008
* @return String
*/
function requestGet($url) {
if(ini_get('allow_url_fopen'))
{
if(PROXY != "")
{
$aContext = array(
'http' => array(
'proxy' => 'tcp://'.PROXY,
'request_fulluri' => True,
),
);
$cxContext = stream_context_create($aContext);
$strRetorno = @file_get_contents($url,false,
$cxContext);
}
else
{
$strRetorno = @file_get_contents($url);
}
}
else
{
if(extension_loaded('curl'))
{
$c = curl_init();
curl_setopt($c,CURLOPT_RETURNTRANSFER, 1);
if(PROXY != "")
curl_setopt($c, CURLOPT_PROXY,PROXY);
curl_setopt($c,CURLOPT_URL,$url);
$strRetorno = curl_exec($c);
curl_close($c);
}
else
$strRetorno = "";
}
return $strRetorno;
}
/**
* Método que trata o retorno do erro no xml
* @author Cláudio Fernando Pinto <claudio....@aorta.com.br>
* @since 1.0 - 13/01/2009
* @return Void
*/
function trataRetornoErro($objSimpleXML) {
foreach ($objSimpleXML->err as $objErr)
{
$attrsTmp = $objErr->attributes();
$this->arrErros[] = $attrsTmp["msg"];
}
}
/**
* Método que envia a mensagem após o post
* @author Cláudio Fernando Pinto <claudio....@aorta.com.br>
* @since 1.0 - 10/11/2008
* @return String
*/
public function sendMensagem($strMensagem)
{
$arrEnvio = array("method"=>"lembreto.publicarAgora",
"api_key"=>CHAVE, //Id do widget
"canal_id"=>ID_CANAL,// Id do seu canal
"user_id"=>USER_ID,//Obtido com o método
getToken
"mensagem"=>$strMensagem,
"auth_token"=>TOKEN //Obtido com o método
getToken
);
$strRetorno = $this->requestGet($this->geraUrlAssinatura
(URL_API_LEMBRETO,$arrEnvio));
if($strRetorno)
{
$objSimpleXML = new SimpleXMLElement($strRetorno);
$attrsTmp = $objSimpleXML->attributes();
if((string)$attrsTmp["stat"] == "fail"){
$this->trataRetornoErro($objSimpleXML);
return true;
}
else
return true;
}
else
{
return false;
}
}
/**
* Método que gera a assinatura da requisição
* @author Cláudio Fernando Pinto <claudio....@aorta.com.br>
* @param $arrValores Valores
* @since 1.0 - 09/01/2009
* @return String
*/
public function geraUrlAssinatura($strUrl,$arrValores)
{
ksort($arrValores);
$strValores = "";
foreach($arrValores as $strChave => $strValor)
{
$strValorTmp = str_replace("+","%20",urlencode
($strValor));
$strUrl .= $strChave."=".$strValorTmp."&";
$strValores .= $strChave.$strValorTmp;
}
return $strUrl."api_sig=".md5(PALAVRA_SECRETA.$strValores);
}
}
?>


******************************************************************************************
******************************* ARQUIVO exemplo.php
******************************
******************************************************************************************
<?php

/*
* Este é um exemplo que mostra a utilização do método enviar
mensagem
* através da API.
*
* @author Cláudio Fernando Pinto <claudio....@aorta.com.br>
* @since 1.0 - 03/12/2009
*/
include_once("class.WebService.php");
define("URL_API_LEMBRETO","http://www.lembreto.com.br/services/
rest/?");
define("URL_AUTH_LEMBRETO","http://www.lembreto.com.br/services/
auth/?");


/*
* A primeira coisa a ser feita é pegar o ID do Canal Lembreto que
você deseja utilizar
* e preencher a CONSTANTE ID_CANAL abaixo
*/
define("ID_CANAL","COLOCAR_AQUI_O_ID_CANAL"); //Disponível em
http://www.lembreto.com.br/explore_infocanal.aspx (ID Canal)
/*
* Agora você deve registrar o aplicativo no Lembreto.
* Para isso acesse http://www.lembreto.com.br/api_dados.aspx e
crie eu aplicativo
* Pegue a palavra secreta e chave a adicione nos campos abaixo
*/
define("PALAVRA_SECRETA","COLOCAR_AQUI_A_PALAVRA_SECRETA"); //
Disponível em http://www.lembreto.com.br/api_dados.aspx (Palavra
Secreta)
define("CHAVE","COLOCAR_AQUI_A_CHAVE"); //Disponível em
http://www.lembreto.com.br/api_dados.aspx (Chave)

//Instaciando a classe que irá auxiliar no envio das mensagens
$objWS = new WebService();

/*
* Para pegar o token e ter acesso a função de enviar suas
mensagens,
* você deve autenticar no Lembreto.
* Este frob pode ser adquirido uma única fez e armazenado da
maneira que você
* achar melhor.
*
* Abaixo você é direcionado para o Lembreto, onde irá obter o
frob
*/
if(!$_GET["frob"])//Você ainda não autenticou
{
print '<script type="text/javascript">window.location = "'.
$objWS->geraUrlAssinatura(URL_AUTH_LEMBRETO,array
("api_key"=>CHAVE,"perms"=>"d")).'"</script>';
}
else
{
if($objWS->getToken($_GET["frob"]))
{
if(!$objWS->sendMensagem("Hello World!"))
{
print "Falha no envio da mensagem:<br/><pre>";print_r
($objWS->getErro());print "</pre>";
}
else
print "Sucesso!";
}
else
{
print "Falha na captura do token:<br/><pre>";print_r
($objWS->getErro());print "</pre>";
}
}
?>

Qualquer dúvida, estamos aí.

On 3 dez, 10:59, Osteobaldo da Silva <osteobaldodasi...@gmail.com>
wrote:
Reply all
Reply to author
Forward
0 new messages