diff --git a/lib/oneboxer/base_onebox.rb b/lib/oneboxer/base_onebox.rb index 74da12598..f0d4c3e53 100644 --- a/lib/oneboxer/base_onebox.rb +++ b/lib/oneboxer/base_onebox.rb @@ -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 diff --git a/lib/oneboxer/handlebars_onebox.rb b/lib/oneboxer/handlebars_onebox.rb index 48047b2a0..f000a500a 100644 --- a/lib/oneboxer/handlebars_onebox.rb +++ b/lib/oneboxer/handlebars_onebox.rb @@ -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 diff --git a/lib/oneboxer/oembed_onebox.rb b/lib/oneboxer/oembed_onebox.rb index d0de79195..3ddb15eab 100644 --- a/lib/oneboxer/oembed_onebox.rb +++ b/lib/oneboxer/oembed_onebox.rb @@ -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) diff --git a/lib/oneboxer/open_graph_onebox.rb b/lib/oneboxer/open_graph_onebox.rb index 53e4a4349..30ca1274e 100644 --- a/lib/oneboxer/open_graph_onebox.rb +++ b/lib/oneboxer/open_graph_onebox.rb @@ -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 diff --git a/spec/components/oneboxer/android_app_store_onebox_spec.rb b/spec/components/oneboxer/android_app_store_onebox_spec.rb index fca6cf191..ec4cd66cc 100644 --- a/spec/components/oneboxer/android_app_store_onebox_spec.rb +++ b/spec/components/oneboxer/android_app_store_onebox_spec.rb @@ -21,7 +21,7 @@ private
diff --git a/spec/components/oneboxer/apple_app_onebox_spec.rb b/spec/components/oneboxer/apple_app_onebox_spec.rb index e1ab1f0a8..5cb50cbb2 100644 --- a/spec/components/oneboxer/apple_app_onebox_spec.rb +++ b/spec/components/oneboxer/apple_app_onebox_spec.rb @@ -21,7 +21,7 @@ private diff --git a/spec/components/oneboxer/wikipedia_onebox_spec.rb b/spec/components/oneboxer/wikipedia_onebox_spec.rb index 75bd6cc05..b27aa7b71 100644 --- a/spec/components/oneboxer/wikipedia_onebox_spec.rb +++ b/spec/components/oneboxer/wikipedia_onebox_spec.rb @@ -22,7 +22,7 @@ private diff --git a/spec/components/oneboxer_spec.rb b/spec/components/oneboxer_spec.rb index 5ddec3f29..d085aa31e 100644 --- a/spec/components/oneboxer_spec.rb +++ b/spec/components/oneboxer_spec.rb @@ -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!'