O encurtador de URLs do eucomp.ro

O eucomp.ro possui um encurtador de URLs embutidos. Com isso, o endereço do anúncio já é curto o suficiente de modo que não é preciso utilizar outros encurtadores como migre.me ou bit.ly. Acrescentar uma funcionalidade dessa a qualquer outro site feito em Rails é muito fácil. O eucomp.ro foi registrado no EuroDNS e o TLD é da Roménia, eles são bem permissivos, não é necessário ser romeno para registrar um domínio lá e não há necessidade de .com ou .org ao final da URL. Perfeito para encurtadores de URL. Da mesma forma, caso queira uma URL curtinha, a primeira coisa a fazer é achar um bom endereço pelo mundo já que o nosso yyy.com.br não é lá muito curto.

Para a aplicação, eu usei o gem base62, que converte inteiro para base 62 e vice-versa. A codificação base 62 usa o conjunto [a..z],[A..Z] e [0..9] para compor o código, o que o torna compatível com a codificação  de URLs. No meu caso, o id do anúncio é usado como base para formar o código na base62, chamei este código de token. Eis o trecho do código fonte com esta lógica, esses dois métodos foram acrescentados ao model do anúncio.

  def token
    (self.id + TOKEN_START).base62_encode
  end

  def self.find_by_token(token)
      id = token.base62_decode - TOKEN_START
      find(id)
  end  

Agora, é preciso fazer com que o endereço http://:url_curta/:token chegue a página desejada. Novamente, no meu caso, apenas acrescentei a seguinte rota:

map.connect ':token', :controller => 'ads', :action => 'show'

E ao controller dos anúncios acrescentei :

  def show
     @ad = Ad.find_by_token(params[:token])
  end

Esta entrada foi publicada em eucomp.ro, Rails. Adicione o link permanente aos seus favoritos.

2 respostas para O encurtador de URLs do eucomp.ro

  1. Luiz disse:

    Olá, Gustavo

    Legal sua ideia de já embutir o encurtador de URLs no seu site! Mas não entendi o porquê de você somar um TOKEN_START no seu token. Outra coisa: não vai dar problema de conflito de rotas para alguns tokens? Por exemplo, se você tem uma rota para ‘/anuncios’, isso é um token válido. Então ou você não consegue acessar o anúncio com esse token ou não consegue acessar o que tinha no ‘/anuncios’.

    Abraços e parabéns pelo site!

    • Gustavo Amigo disse:

      Luis, obrigado pelo comentário.

      O TOKEN_START é apenas para os primeiros anúncios não ficarem com o código 1,2,3, para ter cara de encurtador.

      Com relação aos conflitos, sim este problema existe, mas se um dia acontecer, serei um cara bem feliz. As possibilidade de conflitos são apenas com os endereços http://eucomp.ro/register e http://eucomp.ro/user . Haverá conflito nesses casos só com os seguintes IDs:
      irb(main):006:0> “login”.base62_decode – TOKEN_START
      => 706568317
      irb(main):007:0> “register”.base62_decode – TOKEN_START
      => 188956724373677

      Ou seja, é um problema que eu posso deixar para resolver depois.

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Sair / Alterar )

Imagem do Twitter

You are commenting using your Twitter account. Sair / Alterar )

Foto do Facebook

You are commenting using your Facebook account. Sair / Alterar )

Connecting to %s