Postado em maio 6, 2010 às 7:00 am

Encurtando URLs com o tinyURL e C#

Esse artigo é uma pequena demonstração de como encurtar endereços web automaticamente, consumindo os serviços do TinyURL, um dos encurtadorer de URLs mais popularer da atualidade. O código exige a utilização de expressões regulares, para verificar se o endereço recebido como parâmetro é uma URL válida, para que não ocorram erros. Observe o método abaixo:

protected string ValidarURL(string txt)
{
    //Definindo a expressão que valida endereços web
    Regex regx = new Regex("http://([\\w+?\\.\\w+])+([a-zA-Z0-9\\~\\!\\@\\#\\$\\%\\^\\&\\*\\(\\)_\\-\\=\\+\\\\\\/\\?\\.\\:\\;\'\\,]*)?", RegexOptions.IgnoreCase);
    //Retorna uma ou nenhuma string.
   return regx.Match(txt);
}

No código acima, definimos meio trilhão de caracteres dentro de uma expressão regular que checa caracteres válidos dentro de uma URL. Isso é necessário para que não fiquemos obtendo bad responses do servidor do TinyURL sem necessidade. Abaixo, faremos o método que realmente encurta as URLs. Observe o código:

public static string EncurtarURL(string url)
{
    try
    {
        //Checa se a URL tem um tamanho mínimo > o retorno do TinyURL
        if (url.Length <= 12)
        {
            return url;
        }
         //Checa se o endereço da URL não começa com HTTP ou FTP.
         //Caso não comece, o prefixo http será adicionado.
        if (!url.ToLower().StartsWith("http") && !url.ToLower().StartsWith("ftp"))
        {
            url = "http://" + url;
        }
         //Encurta a URL fazendo um request ao TinyURL
        var requisicao = WebRequest.Create("http://tinyurl.com/api-create.php?url=" + url);
        var resposta = requisicao.GetResponse();
        string texto;
        using (var reader = new StreamReader(resposta.GetResponseStream()))
        {
            texto = reader.ReadToEnd();
        }
        return texto;
    }
    catch (Exception)
    {
        //...
    }
}

O código acima, através de requisições ao servidor do TinyURL, transforma o endereço recebido como parâmetro, em uma URL encurtada de forma automatizada, sem que seja necessário entrar no site para tal operação. É uma operação muito comum nos clientes desktop do Twitter, devido à limitação de 140 caracteres.
Bem, por enquanto é só. Críticas e sugestões, os comentários estão abertos!

Abraços e keep coding!

Tags:, , , , , ,

3 Respostas para “Encurtando URLs com o tinyURL e C#”

  1. Paulo Roberto em julho 12th, 2010 at 12:15 says:

    Opa, tudo bem?

    Você pode me ajudar a entender como utilizar a API deste encurtador brasileiro? http://clipe.me

    Tenho um pequeno site em joomla e queria usar para publicar no twitter minhas atualizações.

    Obrigado pela ajuda.

    PR

  2. Bruno Bemfica em julho 12th, 2010 at 16:35 says:

    Paulo, obrigado pelo comentário. Basicamente, para utilizar a API do clipe.me, pode utilizar o mesmo código que eu ilustrei aqui no artigo, apenas troque a string que contém a URL do tinyURL por “http://clipe.me/index.php?api=1&return_url_text=1&longUrl=” e será o suficiente. No caso dos outros parâmetros, apenas adicione a string ?NomeDoParametro= + “valorDoParametro” à string de URL.

    Abraços e keep coding!

  3. Paulo Roberto em julho 28th, 2010 at 09:26 says:

    Olá,

    estou usando um componente para Joomla que tem no rodapé do site para baixar esta rodando perfeitamente.

    Ele publica instantaneamente os novos artigos e as atualizações via Joomla no Twitter e no Facebook.

    Olhem a página de estatística da url curta que legal:

    [IMG]http://www.clipdiario.com.br/estatistica.jpg[/IMG]

    Abraços :)

    Padunic

Deixar um comentário