Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

André D. Molin

[Resolvido] Classe em PHP para manipulação da API do Bit.ly

Recommended Posts

Classe para manipulação da API do Bit.ly.

 

<?php
/**
* Classe com total manipulação sobre links do site bit.ly.
* Com ela, podem ser criados links curtos, expandir links,
* mostrar estatisticas e também informações. Mais informações
* acesse: http-~~-//code.google.com/p/bitly-api/wiki/ApiDocumentation
* 
* @author André D. Molin <contato@dmolin.com.br>
* @version 1.0
* @package BitLy
* @since 03/12/2009
* @category Manipulador do bit.ly.
* @link http-~~-//dmolin.com.br/blog/
*/

/**
* Antes de usar a Classe, crie uma conta no site bit.ly e obtenha
* a sua chave (key) de uso da API. Sem ela, não é possível executar
* as funções presentes na Classe.
*
* @package BitLy
*/
class BitLy
{
/**
* Seu login do site bit.ly.
* @access private
* @var string
*/
private $bitLogin = '';

/**
* Sua chave (key) para uso da API do bit.ly.
* @access private
* @var string
*/
private $bitKey = '';

/**
* Versão da API do bit.ly.
* @access private
* @var string
*/
private $bitVer = '';

/**
* Seu login do site bit.ly.
* @access private
* @var string
*/
private $bitFormat = 'json';

/**
* Método a ser usado para acessar a API do bit.ly. Caso seja 'true' será
* usada a biblioteca cURL. Caso seja 'false', será usado um simples
* file_get_contents().
* @access private
* @var boolean
*/
private $bitMethod = false;

/**
* Caso 'true', os links encurtados serão salvos no histório da sua conta do bit.ly.
* O contrário irá acontecer caso esteja como 'false'.
* @access private
* @var boolean
*/
private $bitHistory = true;

/**
* O hash de algum link do bit.ly. Ex: 2bYgqR.
* @access private
* @var string
*/
private $bitHash;

/**
* A URL a ser encurtada pelo bit.ly.
* @access private
* @var string
*/
private $bitLongUrl;

/**
* A URL curta do bit.ly. Usada para fornecer estatísticas sobre cliques,
* conteúdo da página e etc.
* @access private
* @var string
*/
private $bitShortUrl;

/**
* Operação que está sendo realizada no momento pela Classe. Encurtar URL, expandir,
* mostrar informações, estatísticas e etc.
* @access private
* @var string
*/
private $bitOp;

/**
* Forneça keys para filtrar os resultados quando solicitar informações sobre um
* determinado link curto do bit.ly.
* @access private
* @var string
*/
private $bitKeys;

/**
* Um construct básico para que se possa definir o login, apiKey e versão da api
* enquanto se instancia a classe.
* @param string $loginName Seu login do site bit.ly.
* @param string $apiKey Sua chave (key) de utilização da API do bit.ly.
* @param string $bitVersion Versão da API do bit.ly utilizada.
*/
function __construct( $loginName = NULL, $apiKey = NULL, $bitVersion = NULL )
{
$this->bitLogin = ( !is_null( $loginName ) ) ? $loginName : $this->bitLogin;
$this->bitKey = ( !is_null( $apiKey ) ) ? $apiKey : $this->bitKey;
$this->bitVer = ( !is_null( $bitVersion ) ) ? $bitVersion : $this->bitVer;
}

/**
* Método para a contrução da URL do Bit.ly que será usada pelos demais métodos
* desta classe.
* @return string Retorna a URL a ser trabalhada pela Classe.
*/
private function ComposeBitUrl()
{
$bitArgs = array( 'version' => $this->bitVer, 'login' => $this->bitLogin,
'apiKey' => $this->bitKey, 'format' => $this->bitFormat
);
if ( $this->bitOp == 'shorten' )
{
$bitArgs['history'] = $this->bitHistory;
$bitArgs['longUrl'] = $this->bitLongUrl;
} elseif ( $this->bitOp == 'expand' || $this->bitOp == 'info' || $this->bitOp == 'stats' )
{
$bitArgs['shortUrl'] = $this->bitShortUrl;
$bitArgs['hash'] = $this->bitHash;
if ( $this->bitOp == 'info' ) { $bitArgs['keys'] = $this->bitKeys; }
}

return 'http-~~-//api.bit.ly/' . $this->bitOp . '?' . http_build_query( $bitArgs );
}
/**
* Manipulador de requisições ao bit.ly. Este método faz a conexão e obtém
* o conteúdo retornado pela API do bit.ly.
* @return json|xml Retorna o conteúdo retornado pela API do bit.ly.
*/
private function RequestHandler()
{
if ( $this->bitMethod === true )
{
if ( function_exists( 'curl_init' ) )
{
if ( ( $cURL = curl_init() ) !== false )
{
curl_setopt( $cURL , CURLOPT_AUTOREFERER , true );
curl_setopt( $cURL , CURLOPT_HEADER , false );
curl_setopt( $cURL , CURLOPT_USERAGENT , 'Mozilla/5.0 (Windows; U; Windows NT 5.1; pt-BR; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5 (.NET CLR 3.5.30729)' );
curl_setopt( $cURL , CURLOPT_FOLLOWLOCATION , true );
curl_setopt( $cURL , CURLOPT_RETURNTRANSFER , true );
curl_setopt( $cURL , CURLOPT_URL , $this->ComposeBitUrl() );

$return = curl_exec( $cURL );
curl_close( $cURL );
} else {
$return = 'Falha ao iniciar a biblioteca cURL.';
}
} else {
$return = 'A biblioteca cURL não está disponível.';
}
} elseif ( $this->bitMethod === false )
{
if ( ini_get( 'allow_url_fopen' ) == '1' )
{
$return = file_get_contents( $this->ComposeBitUrl() );
} else {
$return = 'allow_url_fopen está desligado. Ative no PHP.ini ou defina como TRUE o 4º parâmetro' . 
' desta função para usar cURL.';
}
} else {
$return = 'Por padrão, as requisições são feitas usando file_get_contents. Para usar cURL, basta' . 
' definir como TRUE o 4º parâmetro desta função.';
}

return $return;
}

/**
* Método para encurtar URL's longas.
* @param string $bitLongUrl URL longa a ser encurtada.
* @param boolean $bitHistory Salvar os links encurtados no histórico.
* @param boolean $bitFormat Formato de retorno json|xml.
* @param boolean $bitMethod Método de requisição a API do bit.ly true|false.
* @return json|xml Retorna o conteúdo retornado pela API do bit.ly.
*/
public function ShortenUrl()
{ 
for ( $i = 0, $argc = func_num_args(), $this->bitOp = 'shorten' ; $i < $argc ; ++$i )
{
$value = func_get_arg( $i );

switch ( $i )
{
case 0: $this->bitLongUrl = $value; break;
case 1: $this->bitHistory = $value; break;
case 2: $this->bitFormat = $value; break;
case 3: $this->bitMethod = $value; break;
}
}

return $this->RequestHandler();
}

/**
* Método para expandir uma URL curta.
* @param string $bitShortUrl URL curta a ser expandida.
* @param string $bitHash Hash da URL curta.
* @param boolean $bitFormat Formato de retorno json|xml.
* @param boolean $bitMethod Método de requisição a API do bit.ly true|false.
* @return json|xml Retorna o conteúdo retornado pela API do bit.ly.
*/
public function ExpandUrl()
{
for ( $i = 0, $argc = func_num_args(), $this->bitOp = 'expand' ; $i < $argc ; ++$i )
{
$value = func_get_arg( $i );

switch ( $i )
{
case 0: $this->bitShortUrl = $value; break;
case 1: $this->bitHash = $value; break;
case 2: $this->bitFormat = $value; break;
case 3: $this->bitMethod = $value; break;
}
}

return $this->RequestHandler(); 
}

/**
* Método para exibir informaçõer sobre uma URL curta.
* @param string $bitShortUrl URL curta.
* @param string $bitHash Hash da URL curta.
* @param string $bitKeys Keys para filtrar os resultados.
* @param boolean $bitFormat Formato de retorno json|xml.
* @param boolean $bitMethod Método de requisição a API do bit.ly true|false.
* @return json|xml Retorna o conteúdo retornado pela API do bit.ly.
*/
public function InfoUrl()
{
for ( $i = 0, $argc = func_num_args(), $this->bitOp = 'info' ; $i < $argc ; ++$i )
{
$value = func_get_arg( $i );

switch ( $i )
{
case 0: $this->bitShortUrl = $value; break;
case 1: $this->bitHash = $value; break;
case 2: $this->bitKeys = $value; break;
case 3: $this->bitFormat = $value; break;
case 4: $this->bitMethod = $value; break;
}
}

return $this->RequestHandler();
}

/**
* Método para exibir estatísticas de uma URL curta.
* @param string $bitShortUrl URL curta.
* @param string $bitHash Hash da URL curta.
* @param boolean $bitFormat Formato de retorno json|xml.
* @param boolean $bitMethod Método de requisição a API do bit.ly true|false.
* @return json|xml Retorna o conteúdo retornado pela API do bit.ly.
*/
public function StatsUrl()
{ 
for ( $i = 0, $argc = func_num_args(), $this->bitOp = 'stats' ; $i < $argc ; ++$i )
{
$value = func_get_arg( $i );

switch ( $i )
{
case 0: $this->bitShortUrl = $value; break;
case 1: $this->bitHash = $value; break;
case 2: $this->bitFormat = $value; break;
case 3: $this->bitMethod = $value; break;
}
}

return $this->RequestHandler();
}

/**
* Método para exibir todos os erros possíveis da API do bit.ly.
* @return json|xml Retorna o conteúdo retornado pela API do bit.ly.
*/
public function GetErrorsList()
{
for ( $i = 0, $argc = func_num_args(), $this->bitOp = 'errors' ; $i < $argc ; ++$i )
{
$value = func_get_arg( $i );

switch ( $i )
{
case 0: $this->bitFormat = $value; break;
case 1: $this->bitMethod = $value; break;
}
}

return $this->RequestHandler();
}
}
?>

 

Exemplos de uso, atualizações e etc, aqui.

 

EDIT

 

Não sei colocar com identação aqui no fórum.

Qualquer coisa baixem direto daqui: http://www.dmolin.co...lass.Bitly_.txt

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.