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 @url
end 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
end end

View File

@ -32,12 +32,7 @@ module Oneboxer
args[:original_url] = @url args[:original_url] = @url
args[:lang] = @lang || "" args[:lang] = @lang || ""
args[:favicon] = ActionController::Base.helpers.image_path(self.class.favicon_file) if self.class.favicon_file.present? args[:favicon] = ActionController::Base.helpers.image_path(self.class.favicon_file) if self.class.favicon_file.present?
begin args[:host] = nice_host
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
Mustache.render(File.read(template), args) Mustache.render(File.read(template), args)
rescue => ex rescue => ex

View File

@ -33,13 +33,7 @@ module Oneboxer
end end
parsed['html'] ||= parsed['abstract'] parsed['html'] ||= parsed['abstract']
parsed['host'] = nice_host
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
Mustache.render(File.read(template), parsed) Mustache.render(File.read(template), parsed)

View File

@ -21,16 +21,9 @@ module Oneboxer
@opts[:original_url] = @url @opts[:original_url] = @url
@opts[:text] = @opts['description'] @opts[:text] = @opts['description']
@opts[:unsafe] = true @opts[:unsafe] = true
@opts[:host] = nice_host
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
Mustache.render(File.read(template), @opts) Mustache.render(File.read(template), @opts)
end end
end end
end end

View File

@ -21,7 +21,7 @@ private
<div class='source'> <div class='source'>
<div class='info'> <div class='info'>
<a href='https://play.google.com/store/apps/details?id=com.moosoft.parrot' target="_blank"> <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> </a>
</div> </div>
</div> </div>

View File

@ -21,7 +21,7 @@ private
<div class='source'> <div class='source'>
<div class='info'> <div class='info'>
<a href='https://itunes.apple.com/us/app/minecraft-pocket-edition-lite/id479651754' target="_blank"> <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> </a>
</div> </div>
</div> </div>

View File

@ -22,7 +22,7 @@ private
<div class='source'> <div class='source'>
<div class='info'> <div class='info'>
<a href='http://en.wikipedia.org/wiki/Ruby' target="_blank"> <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> </a>
</div> </div>
</div> </div>

View File

@ -72,6 +72,24 @@ describe Oneboxer do
end 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 context 'without caching' do
it 'calls the onebox method of our matched class' do it 'calls the onebox method of our matched class' do
Oneboxer.onebox_nocache(@dummy_onebox_url).should == 'dummy!' Oneboxer.onebox_nocache(@dummy_onebox_url).should == 'dummy!'