Merge pull request #321 from tijmenb/fix-hosts-in-oneboxer

Fix display hosts in oneboxer
This commit is contained in:
Robin Ward 2013-03-04 11:04:02 -08:00
commit 35d5c899dd
8 changed files with 41 additions and 38 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

@ -17,21 +17,21 @@ describe "Dynamic Oneboxer" do
@dummy_onebox_url = "http://dummy2.localhost/dummy-object" @dummy_onebox_url = "http://dummy2.localhost/dummy-object"
end end
context 'find onebox for url' do context 'find onebox for url' do
it 'returns blank with an unknown url' do it 'returns blank with an unknown url' do
Oneboxer.onebox_for_url('http://asdfasdfasdfasdf.asdf').should be_blank Oneboxer.onebox_for_url('http://asdfasdfasdfasdf.asdf').should be_blank
end end
it 'returns something when matched' do it 'returns something when matched' do
Oneboxer.onebox_for_url(@dummy_onebox_url).should be_present Oneboxer.onebox_for_url(@dummy_onebox_url).should be_present
end end
it 'returns an instance of our class when matched' do it 'returns an instance of our class when matched' do
Oneboxer.onebox_for_url(@dummy_onebox_url).kind_of?(DummyDynamicOnebox).should be_true Oneboxer.onebox_for_url(@dummy_onebox_url).kind_of?(DummyDynamicOnebox).should be_true
end end
end end
end end
@ -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!'
@ -163,5 +181,3 @@ describe Oneboxer do
end end