Fix display host for onebox

This commit is contained in:
Tijmen Brommet 2013-03-02 00:46:55 +01:00
parent 5c986be753
commit eaef66a423
8 changed files with 30 additions and 25 deletions

View File

@ -43,6 +43,11 @@ module Oneboxer
@url
end
def nice_host
host = URI.parse(@url).host
host.nil? ? '' : host.gsub('www.', '')
rescue URI::InvalidURIError
'' # In case there is a problem with the URL, we just won't set the host
end
end
end

View File

@ -32,12 +32,7 @@ module Oneboxer
args[:original_url] = @url
args[:lang] = @lang || ""
args[:favicon] = ActionController::Base.helpers.image_path(self.class.favicon_file) if self.class.favicon_file.present?
begin
parsed = URI.parse(@url)
args[:host] = parsed.host.split('.').last(2).join('.')
rescue URI::InvalidURIError
# In case there is a problem with the URL, we just won't set the host
end
args[:host] = nice_host
Mustache.render(File.read(template), args)
rescue => ex

View File

@ -33,13 +33,7 @@ module Oneboxer
end
parsed['html'] ||= parsed['abstract']
begin
parsed_uri = URI.parse(@url)
parsed['host'] = parsed_uri.host.split('.').last(2).join('.')
rescue URI::InvalidURIError
# In case there is a problem with the URL, we just won't set the host
end
parsed['host'] = nice_host
Mustache.render(File.read(template), parsed)

View File

@ -21,16 +21,9 @@ module Oneboxer
@opts[:original_url] = @url
@opts[:text] = @opts['description']
@opts[:unsafe] = true
begin
parsed = URI.parse(@url)
@opts[:host] = parsed.host.split('.').last(2).join('.')
rescue URI::InvalidURIError
# In case there is a problem with the URL, we just won't set the host
end
@opts[:host] = nice_host
Mustache.render(File.read(template), @opts)
end
end
end

View File

@ -21,7 +21,7 @@ private
<div class='source'>
<div class='info'>
<a href='https://play.google.com/store/apps/details?id=com.moosoft.parrot' target="_blank">
<img class='favicon' src="/assets/favicons/google_play.png"> google.com
<img class='favicon' src="/assets/favicons/google_play.png"> play.google.com
</a>
</div>
</div>

View File

@ -21,7 +21,7 @@ private
<div class='source'>
<div class='info'>
<a href='https://itunes.apple.com/us/app/minecraft-pocket-edition-lite/id479651754' target="_blank">
<img class='favicon' src="/assets/favicons/apple.png"> apple.com
<img class='favicon' src="/assets/favicons/apple.png"> itunes.apple.com
</a>
</div>
</div>

View File

@ -22,7 +22,7 @@ private
<div class='source'>
<div class='info'>
<a href='http://en.wikipedia.org/wiki/Ruby' target="_blank">
<img class='favicon' src="/assets/favicons/wikipedia.png"> wikipedia.org
<img class='favicon' src="/assets/favicons/wikipedia.png"> en.wikipedia.org
</a>
</div>
</div>

View File

@ -72,6 +72,24 @@ describe Oneboxer do
end
describe '#nice_host' do
it 'strips www from the domain' do
DummyOnebox.new('http://www.cnn.com/thing').nice_host.should eq 'cnn.com'
end
it 'respects double TLDs' do
DummyOnebox.new('http://news.bbc.co.uk/thing').nice_host.should eq 'news.bbc.co.uk'
end
it 'returns an empty string if the URL is bogus' do
DummyOnebox.new('whatever').nice_host.should eq ''
end
it 'returns an empty string if the URL unparsable' do
DummyOnebox.new(nil).nice_host.should eq ''
end
end
context 'without caching' do
it 'calls the onebox method of our matched class' do
Oneboxer.onebox_nocache(@dummy_onebox_url).should == 'dummy!'