From eaef66a4231ab19ef69affb1f8c56854b2203fa6 Mon Sep 17 00:00:00 2001 From: Tijmen Brommet <tijmen@gmail.com> Date: Sat, 2 Mar 2013 00:46:55 +0100 Subject: [PATCH] Fix display host for onebox --- lib/oneboxer/base_onebox.rb | 7 ++++++- lib/oneboxer/handlebars_onebox.rb | 7 +------ lib/oneboxer/oembed_onebox.rb | 8 +------- lib/oneboxer/open_graph_onebox.rb | 9 +-------- .../oneboxer/android_app_store_onebox_spec.rb | 2 +- .../oneboxer/apple_app_onebox_spec.rb | 2 +- .../oneboxer/wikipedia_onebox_spec.rb | 2 +- spec/components/oneboxer_spec.rb | 18 ++++++++++++++++++ 8 files changed, 30 insertions(+), 25 deletions(-) diff --git a/lib/oneboxer/base_onebox.rb b/lib/oneboxer/base_onebox.rb index 74da125987e..f0d4c3e53b3 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 48047b2a0b9..f000a500aa9 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 d0de7919581..3ddb15eaba2 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 53e4a4349ff..30ca1274ec3 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 fca6cf19160..ec4cd66ccaa 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 <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> diff --git a/spec/components/oneboxer/apple_app_onebox_spec.rb b/spec/components/oneboxer/apple_app_onebox_spec.rb index e1ab1f0a858..5cb50cbb26d 100644 --- a/spec/components/oneboxer/apple_app_onebox_spec.rb +++ b/spec/components/oneboxer/apple_app_onebox_spec.rb @@ -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> diff --git a/spec/components/oneboxer/wikipedia_onebox_spec.rb b/spec/components/oneboxer/wikipedia_onebox_spec.rb index 75bd6cc0599..b27aa7b718c 100644 --- a/spec/components/oneboxer/wikipedia_onebox_spec.rb +++ b/spec/components/oneboxer/wikipedia_onebox_spec.rb @@ -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> diff --git a/spec/components/oneboxer_spec.rb b/spec/components/oneboxer_spec.rb index 5ddec3f29df..d085aa31e6e 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!'