Shorten a link


#1

Suppose a user submits a url: http://www.nyt.com/education/2345545. How
can this be shortened to a cleaner url, like nyt.com?


#2

require ‘uri’

uri = URI.parse(“http://www.ruby-lang.org/”)
p uri

=> #<URI::HTTP:0x202281be URL:http://www.ruby-lang.org/>

p uri.scheme

=> “http”

p uri.host

=> “www.ruby-lang.org

http://www.ruby-doc.org/core/classes/URI.html


#3

Mukund wrote:

require ‘uri’

uri = URI.parse(“http://www.ruby-lang.org/”)
p uri

=> #<URI::HTTP:0x202281be URL:http://www.ruby-lang.org/>

p uri.scheme

=> “http”

p uri.host

=> “www.ruby-lang.org

http://www.ruby-doc.org/core/classes/URI.html

This is a little harder than I expected. So I include the require ‘uri’
in the model. Then it seems I need to parse the host part of the uri.
How do I parse this? Do I need to use a RegExpression?


#4

Sean,

Are you saving this url to the model? I’m not sure what you mean by
shorten it up?

–Tom


#5

tomrossi7 wrote:

Sean,

Are you saving this url to the model? I’m not sure what you mean by
shorten it up?

–Tom

I want a user to submit a link to a webpage. After they submit the link
I want to parse it to the homepage url. Like if the article is
www.nyt.com/sports/lakers/123. I want to have this shortened to the
homepage link nyt.com. You can try it in the interpreter as someone
posted above.


#6

I have @article.url and I want to parse that url. When I tried:
@homepage = URI.parse(@article.url).host in the controller I simply got
a blank output.


#7

Yeah, URI is the library to work with. You could tighten it up and
just do:

homepage = URI.parse(“http://www.nyt.com/sports/lakers/123/”).host

On the model, you could put "require ‘uri’ " but I think its loaded
with Rails by default.

–Tom

I don’t think
On May 28, 12:19 pm, Sean S. removed_email_address@domain.invalid


#8

Can you post a sample @article.url that results in blank .host output
from URI.parse?