From d286ed46f99d7d9c477f4cb0fd33e5d8bb4c3dde Mon Sep 17 00:00:00 2001 From: vykster Date: Wed, 21 Aug 2013 22:19:22 -0700 Subject: [PATCH 01/48] starting tests for the preview method default options --- lib/onebox.rb | 4 ++-- lib/onebox/preview.rb | 2 +- spec/lib/onebox_spec.rb | 13 +++++++++++++ 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/lib/onebox.rb b/lib/onebox.rb index c44f44f9..218b2f97 100644 --- a/lib/onebox.rb +++ b/lib/onebox.rb @@ -11,7 +11,7 @@ require_relative "onebox/engine" module Onebox - def self.preview(url, args={}) - Preview.new(url, args) + def self.preview(url, options = {}) + Preview.new(url, options) end end diff --git a/lib/onebox/preview.rb b/lib/onebox/preview.rb index cba8224e..6b738cde 100644 --- a/lib/onebox/preview.rb +++ b/lib/onebox/preview.rb @@ -1,6 +1,6 @@ module Onebox class Preview - def initialize(link) + def initialize(link, options = {}) @url = link @engine = Matcher.new(@url).oneboxed end diff --git a/spec/lib/onebox_spec.rb b/spec/lib/onebox_spec.rb index e69de29b..ca5608a3 100644 --- a/spec/lib/onebox_spec.rb +++ b/spec/lib/onebox_spec.rb @@ -0,0 +1,13 @@ +require "spec_helper" + +describe Onebox do + describe ".preview" do + it "should set the default cache as a hash" do + url = "http://www.example.com" + preview = Onebox.preview(url) + cache = preview.cache + expect(cache).to be_kind_of(Hash) + end + + end +end From c46d57e4f5f17d68747b478d819336d26ec9042a Mon Sep 17 00:00:00 2001 From: vykster Date: Wed, 21 Aug 2013 22:32:42 -0700 Subject: [PATCH 02/48] using OpenStruct to wrap options and setting up default caching system --- lib/onebox.rb | 3 ++- lib/onebox/preview.rb | 10 +++++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/lib/onebox.rb b/lib/onebox.rb index 218b2f97..6aec0663 100644 --- a/lib/onebox.rb +++ b/lib/onebox.rb @@ -4,6 +4,7 @@ require "mustache" require "opengraph_parser" require "verbal_expressions" +require "ostruct" require_relative "onebox/version" require_relative "onebox/preview" @@ -11,7 +12,7 @@ require_relative "onebox/engine" module Onebox - def self.preview(url, options = {}) + def self.preview(url, options = { cache: Hash.new }) Preview.new(url, options) end end diff --git a/lib/onebox/preview.rb b/lib/onebox/preview.rb index 6b738cde..a39c215d 100644 --- a/lib/onebox/preview.rb +++ b/lib/onebox/preview.rb @@ -1,7 +1,11 @@ module Onebox class Preview - def initialize(link, options = {}) + attr_reader :cache + + def initialize(link, parameters = {}) @url = link + @options = parameters + @cache = options.cache @engine = Matcher.new(@url).oneboxed end @@ -9,6 +13,10 @@ def to_s engine.to_html end + def options + OpenStruct.new(@options) + end + private def engine From 444754e66d236ebc62b6800acdc7420c064ae058 Mon Sep 17 00:00:00 2001 From: vykster Date: Wed, 21 Aug 2013 22:41:14 -0700 Subject: [PATCH 03/48] define fetch method on preview class #55 --- lib/onebox/engine.rb | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/lib/onebox/engine.rb b/lib/onebox/engine.rb index 9c0f01d1..9c13b2bf 100644 --- a/lib/onebox/engine.rb +++ b/lib/onebox/engine.rb @@ -22,8 +22,16 @@ def to_html private + def fetch + if cache + cache.read(@url) + else + cache.store(@url, open(@url)) + end + end + def read - Nokogiri::HTML(open(@url)) + Nokogiri::HTML(fetch) end def template From f40bb9f9fb7e05e9ccff49f19b2a5206494da01c Mon Sep 17 00:00:00 2001 From: vykster Date: Mon, 26 Aug 2013 21:50:16 -0700 Subject: [PATCH 04/48] create test for fetch method in engine_spec --- lib/onebox/engine.rb | 19 +++++++++++-------- spec/lib/onebox/engine/amazon_spec.rb | 2 +- spec/lib/onebox/engine_spec.rb | 13 +++++++++++++ spec/lib/onebox_spec.rb | 1 - 4 files changed, 25 insertions(+), 10 deletions(-) diff --git a/lib/onebox/engine.rb b/lib/onebox/engine.rb index 9c13b2bf..ee51ba5f 100644 --- a/lib/onebox/engine.rb +++ b/lib/onebox/engine.rb @@ -10,8 +10,11 @@ def self.engines end.map(&method(:const_get)) end - def initialize(link) + attr_reader :cache + + def initialize(link, cache = Hash.new) @url = link + @cache = cache @body = read @data = extracted_data end @@ -22,13 +25,13 @@ def to_html private - def fetch - if cache - cache.read(@url) - else - cache.store(@url, open(@url)) - end - end + # def fetch + # if cache.has_key?(@url) + # cache.fetch(@url) + # else + # cache.store(@url, open(@url)) + # end + # end def read Nokogiri::HTML(fetch) diff --git a/spec/lib/onebox/engine/amazon_spec.rb b/spec/lib/onebox/engine/amazon_spec.rb index ef00f68c..718e5baa 100644 --- a/spec/lib/onebox/engine/amazon_spec.rb +++ b/spec/lib/onebox/engine/amazon_spec.rb @@ -2,7 +2,7 @@ describe Onebox::Engine::AmazonOnebox do describe "#to_html" do - let(:link) { "http://example.com" } + let(:link) { "http://amazon.com" } let(:html) { described_class.new(link).to_html } before do diff --git a/spec/lib/onebox/engine_spec.rb b/spec/lib/onebox/engine_spec.rb index 55a52330..3e6bde1d 100644 --- a/spec/lib/onebox/engine_spec.rb +++ b/spec/lib/onebox/engine_spec.rb @@ -9,6 +9,19 @@ class Onebox::Engine::Foo it "returns formatted html" end + describe "#fetch" do + it "returns cache value for given url if cache exists" do + cache = { "http://example.com" => "foo" } + result = Onebox::Engine::Foo.new("http://example.com", cache).fetch + expect(result).to eq("foo") + end + + it "stores cache value for given url if cache doesn't exist" + + it "is too old monetta" + end + + describe ".===" do it "returns true if argument matches the matcher" do class Onebox::Engine::Foo diff --git a/spec/lib/onebox_spec.rb b/spec/lib/onebox_spec.rb index ca5608a3..92c44662 100644 --- a/spec/lib/onebox_spec.rb +++ b/spec/lib/onebox_spec.rb @@ -8,6 +8,5 @@ cache = preview.cache expect(cache).to be_kind_of(Hash) end - end end From 009e7d964c4b859f74ac6547e7745b5d95bdbc9b Mon Sep 17 00:00:00 2001 From: vykster Date: Mon, 26 Aug 2013 21:58:56 -0700 Subject: [PATCH 05/48] refine and make fetch test pass for if cache exists --- lib/onebox/engine.rb | 18 +++++++++++------- spec/lib/onebox/engine_spec.rb | 6 +++++- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/lib/onebox/engine.rb b/lib/onebox/engine.rb index ee51ba5f..e7c10fb5 100644 --- a/lib/onebox/engine.rb +++ b/lib/onebox/engine.rb @@ -25,13 +25,13 @@ def to_html private - # def fetch - # if cache.has_key?(@url) - # cache.fetch(@url) - # else - # cache.store(@url, open(@url)) - # end - # end + def fetch + if cache.has_key?(@url) + cache.fetch(@url) + else + cache.store(@url, open(@url)) + end + end def read Nokogiri::HTML(fetch) @@ -45,6 +45,10 @@ def template_name self.class.name.split("::").last.downcase.gsub(/onebox/, "") end + def extracted_data + raise NoMethodError, "Engines need this method defined" + end + module ClassMethods def ===(object) if object.kind_of?(String) diff --git a/spec/lib/onebox/engine_spec.rb b/spec/lib/onebox/engine_spec.rb index 3e6bde1d..8ceae3f9 100644 --- a/spec/lib/onebox/engine_spec.rb +++ b/spec/lib/onebox/engine_spec.rb @@ -2,6 +2,10 @@ class Onebox::Engine::Foo include Onebox::Engine + + def extracted_data + "bah" + end end describe Onebox::Engine do @@ -12,7 +16,7 @@ class Onebox::Engine::Foo describe "#fetch" do it "returns cache value for given url if cache exists" do cache = { "http://example.com" => "foo" } - result = Onebox::Engine::Foo.new("http://example.com", cache).fetch + result = Onebox::Engine::Foo.new("http://example.com", cache).send(:fetch) expect(result).to eq("foo") end From 3d0d97b009f7b67f7bd223ceba1dfb99c41479aa Mon Sep 17 00:00:00 2001 From: vykster Date: Mon, 26 Aug 2013 22:19:10 -0700 Subject: [PATCH 06/48] create fetch test for when cache key doesn't exist --- spec/lib/onebox/engine_spec.rb | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/spec/lib/onebox/engine_spec.rb b/spec/lib/onebox/engine_spec.rb index 8ceae3f9..a58b4722 100644 --- a/spec/lib/onebox/engine_spec.rb +++ b/spec/lib/onebox/engine_spec.rb @@ -20,7 +20,11 @@ def extracted_data expect(result).to eq("foo") end - it "stores cache value for given url if cache doesn't exist" + it "stores cache value for given url if cache key doesn't exist" do + cache = {} + result = Onebox::Engine::Foo.new("http://example.com", cache).send(:fetch) + expect(cache).to have_key("http://example.com") + end it "is too old monetta" end From 7fda729d98edf842e36483204fce4cafb3700376 Mon Sep 17 00:00:00 2001 From: vykster Date: Wed, 28 Aug 2013 21:53:22 -0700 Subject: [PATCH 07/48] edit description for cache expiration test --- spec/lib/onebox/engine_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/lib/onebox/engine_spec.rb b/spec/lib/onebox/engine_spec.rb index a58b4722..929f88b3 100644 --- a/spec/lib/onebox/engine_spec.rb +++ b/spec/lib/onebox/engine_spec.rb @@ -26,7 +26,7 @@ def extracted_data expect(cache).to have_key("http://example.com") end - it "is too old monetta" + it "refetches if cache is expired" end From 99dfa9c3a9554a9f672e68148cbffcb65bc4adde Mon Sep 17 00:00:00 2001 From: vykster Date: Wed, 28 Aug 2013 21:56:21 -0700 Subject: [PATCH 08/48] change extracted data to return empty hash in engine spec --- spec/lib/onebox/engine_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/lib/onebox/engine_spec.rb b/spec/lib/onebox/engine_spec.rb index 929f88b3..0f371be8 100644 --- a/spec/lib/onebox/engine_spec.rb +++ b/spec/lib/onebox/engine_spec.rb @@ -4,7 +4,7 @@ class Onebox::Engine::Foo include Onebox::Engine def extracted_data - "bah" + Hash.new end end From aff39d1015c88080eee73aa2f9b3e9a35c6002a7 Mon Sep 17 00:00:00 2001 From: vykster Date: Wed, 28 Aug 2013 22:03:49 -0700 Subject: [PATCH 09/48] require and use moneta for cache #55 --- lib/onebox.rb | 3 ++- lib/onebox/engine.rb | 2 +- onebox.gemspec | 1 + spec/lib/onebox/engine_spec.rb | 2 +- 4 files changed, 5 insertions(+), 3 deletions(-) diff --git a/lib/onebox.rb b/lib/onebox.rb index 6aec0663..6db981de 100644 --- a/lib/onebox.rb +++ b/lib/onebox.rb @@ -5,6 +5,7 @@ require "opengraph_parser" require "verbal_expressions" require "ostruct" +require "moneta" require_relative "onebox/version" require_relative "onebox/preview" @@ -12,7 +13,7 @@ require_relative "onebox/engine" module Onebox - def self.preview(url, options = { cache: Hash.new }) + def self.preview(url, options = { cache: Moneta.new(:Memory) }) Preview.new(url, options) end end diff --git a/lib/onebox/engine.rb b/lib/onebox/engine.rb index e7c10fb5..069d31ff 100644 --- a/lib/onebox/engine.rb +++ b/lib/onebox/engine.rb @@ -12,7 +12,7 @@ def self.engines attr_reader :cache - def initialize(link, cache = Hash.new) + def initialize(link, cache = Moneta.new(:Memory)) @url = link @cache = cache @body = read diff --git a/onebox.gemspec b/onebox.gemspec index 19403f08..3133f2c2 100644 --- a/onebox.gemspec +++ b/onebox.gemspec @@ -23,6 +23,7 @@ Gem::Specification.new do |spec| spec.add_runtime_dependency "nokogiri", "~> 1.4" spec.add_runtime_dependency "opengraph_parser", "~> 0.2" spec.add_runtime_dependency "verbal_expressions", "~> 0.1" + spec.add_runtime_dependency "moneta", "~> 0.7" spec.add_development_dependency "bundler", "~> 1.3" spec.add_development_dependency "rake", "~> 10.0" spec.add_development_dependency "rspec", "~> 2.14" diff --git a/spec/lib/onebox/engine_spec.rb b/spec/lib/onebox/engine_spec.rb index 0f371be8..a187d3c5 100644 --- a/spec/lib/onebox/engine_spec.rb +++ b/spec/lib/onebox/engine_spec.rb @@ -4,7 +4,7 @@ class Onebox::Engine::Foo include Onebox::Engine def extracted_data - Hash.new + Moneta.new(:Memory) end end From 9cd0271ff8d0b6aabe0e6b455d174fed5a9ec895 Mon Sep 17 00:00:00 2001 From: vykster Date: Wed, 28 Aug 2013 22:26:05 -0700 Subject: [PATCH 10/48] make cache default options into a singleton method to dry code #55 --- lib/onebox.rb | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/lib/onebox.rb b/lib/onebox.rb index 6db981de..6d065787 100644 --- a/lib/onebox.rb +++ b/lib/onebox.rb @@ -13,7 +13,17 @@ require_relative "onebox/engine" module Onebox - def self.preview(url, options = { cache: Moneta.new(:Memory) }) + DEFAULTS = { + cache: Moneta.new(:Memory, expires: true) + } + + @@defaults = DEFAULTS + + def self.preview(url, options = @@defaults) Preview.new(url, options) end + + def self.defaults=(options) + @@defaults = DEFAULTS.merge(options) + end end From d2e2cfccc8aa00232a8811e9a9713075bf1204ca Mon Sep 17 00:00:00 2001 From: vykster Date: Thu, 29 Aug 2013 21:01:25 -0700 Subject: [PATCH 11/48] change has_key? to key? in spec to use moneta method --- lib/onebox/engine.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/onebox/engine.rb b/lib/onebox/engine.rb index 069d31ff..71d18f87 100644 --- a/lib/onebox/engine.rb +++ b/lib/onebox/engine.rb @@ -26,7 +26,7 @@ def to_html private def fetch - if cache.has_key?(@url) + if cache.key?(@url) cache.fetch(@url) else cache.store(@url, open(@url)) From 0f902838c81f3cb83d9435a263855ba37784bde2 Mon Sep 17 00:00:00 2001 From: vykster Date: Thu, 29 Aug 2013 21:14:49 -0700 Subject: [PATCH 12/48] switch to caching extracted data instead of entire html response #55 --- lib/onebox/engine.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/onebox/engine.rb b/lib/onebox/engine.rb index 71d18f87..a5d1f034 100644 --- a/lib/onebox/engine.rb +++ b/lib/onebox/engine.rb @@ -29,12 +29,12 @@ def fetch if cache.key?(@url) cache.fetch(@url) else - cache.store(@url, open(@url)) + cache.store(@url, extracted_data, options = {} ) end end def read - Nokogiri::HTML(fetch) + Nokogiri::HTML(open(@url)) end def template From 0c5ca4d5381f02b3d03b2e7da24781fbcc698301 Mon Sep 17 00:00:00 2001 From: vykster Date: Thu, 29 Aug 2013 21:38:09 -0700 Subject: [PATCH 13/48] re-evaluating tests for checking cache --- lib/onebox.rb | 2 +- lib/onebox/engine.rb | 2 +- spec/lib/onebox_spec.rb | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/onebox.rb b/lib/onebox.rb index 6d065787..db12a5d7 100644 --- a/lib/onebox.rb +++ b/lib/onebox.rb @@ -14,7 +14,7 @@ module Onebox DEFAULTS = { - cache: Moneta.new(:Memory, expires: true) + cache: Moneta.new(:Memory, expires: true, serializer: :json) } @@defaults = DEFAULTS diff --git a/lib/onebox/engine.rb b/lib/onebox/engine.rb index a5d1f034..c5efe497 100644 --- a/lib/onebox/engine.rb +++ b/lib/onebox/engine.rb @@ -29,7 +29,7 @@ def fetch if cache.key?(@url) cache.fetch(@url) else - cache.store(@url, extracted_data, options = {} ) + cache.store(@url, extracted_data) end end diff --git a/spec/lib/onebox_spec.rb b/spec/lib/onebox_spec.rb index 92c44662..6f840b05 100644 --- a/spec/lib/onebox_spec.rb +++ b/spec/lib/onebox_spec.rb @@ -2,11 +2,11 @@ describe Onebox do describe ".preview" do - it "should set the default cache as a hash" do + it "creates a cache that responds as expected" do url = "http://www.example.com" preview = Onebox.preview(url) cache = preview.cache - expect(cache).to be_kind_of(Hash) + expect(cache).to respond_to(:key?, :store, :fetch) end end end From cb66506a9f364e4525fef8bc606604d501546e41 Mon Sep 17 00:00:00 2001 From: jzeta Date: Tue, 3 Sep 2013 22:20:07 -0700 Subject: [PATCH 14/48] add tests for cache storage and expired cache replacement #55 --- spec/lib/onebox_spec.rb | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/spec/lib/onebox_spec.rb b/spec/lib/onebox_spec.rb index 6f840b05..e688e985 100644 --- a/spec/lib/onebox_spec.rb +++ b/spec/lib/onebox_spec.rb @@ -8,5 +8,20 @@ cache = preview.cache expect(cache).to respond_to(:key?, :store, :fetch) end + + it "stores the value in cache if it doesn't exist" do + url = "http://www.example.com" + preview = Onebox.preview(url) + cache = preview.cache + expect(cache.key?(url)).to eq(true) + end + + it "replaces the cache if the cache is expired" do + url = "http://www.example.com" + preview = Onebox.preview(url, cache: Moneta.new(:Memory, expires: 100000, serializer: :json)) + cache = preview.cache + expect(cache.fetch(url)).to be(nil) + end + end end From f604541f51a401bfd405b653808d6cb73aaa9c93 Mon Sep 17 00:00:00 2001 From: jzeta Date: Tue, 3 Sep 2013 22:22:33 -0700 Subject: [PATCH 15/48] start refactoring preview and engine modules b/c logic not using cache #55 --- lib/onebox/engine.rb | 16 +++++++--------- lib/onebox/engine/example_onebox.rb | 2 +- lib/onebox/preview.rb | 2 +- spec/lib/onebox/engine_spec.rb | 10 ++++------ 4 files changed, 13 insertions(+), 17 deletions(-) diff --git a/lib/onebox/engine.rb b/lib/onebox/engine.rb index c5efe497..595f4f1a 100644 --- a/lib/onebox/engine.rb +++ b/lib/onebox/engine.rb @@ -12,29 +12,27 @@ def self.engines attr_reader :cache - def initialize(link, cache = Moneta.new(:Memory)) + def initialize(link, cache = Onebox.defaults) @url = link @cache = cache - @body = read - @data = extracted_data end def to_html - Mustache.render(template, @data) + Mustache.render(template, record) end private - def fetch + def record if cache.key?(@url) cache.fetch(@url) else - cache.store(@url, extracted_data) + cache.store(@url, data) end end - def read - Nokogiri::HTML(open(@url)) + def raw + @raw ||= Nokogiri::HTML(open(@url)) end def template @@ -45,7 +43,7 @@ def template_name self.class.name.split("::").last.downcase.gsub(/onebox/, "") end - def extracted_data + def data raise NoMethodError, "Engines need this method defined" end diff --git a/lib/onebox/engine/example_onebox.rb b/lib/onebox/engine/example_onebox.rb index 0846dad7..4fb21c29 100644 --- a/lib/onebox/engine/example_onebox.rb +++ b/lib/onebox/engine/example_onebox.rb @@ -11,7 +11,7 @@ class ExampleOnebox def extracted_data { - header: @body.css("html body h1") + header: raw.css("html body h1") } end diff --git a/lib/onebox/preview.rb b/lib/onebox/preview.rb index a39c215d..ef3b424a 100644 --- a/lib/onebox/preview.rb +++ b/lib/onebox/preview.rb @@ -20,7 +20,7 @@ def options private def engine - @engine.new(@url) + @engine.new(@url, cache) end class InvalidURI < StandardError diff --git a/spec/lib/onebox/engine_spec.rb b/spec/lib/onebox/engine_spec.rb index a187d3c5..4930a589 100644 --- a/spec/lib/onebox/engine_spec.rb +++ b/spec/lib/onebox/engine_spec.rb @@ -4,7 +4,7 @@ class Onebox::Engine::Foo include Onebox::Engine def extracted_data - Moneta.new(:Memory) + "foo" end end @@ -21,12 +21,10 @@ def extracted_data end it "stores cache value for given url if cache key doesn't exist" do - cache = {} - result = Onebox::Engine::Foo.new("http://example.com", cache).send(:fetch) - expect(cache).to have_key("http://example.com") + cache = { "http://example.com1" => "foo" } + result = Onebox::Engine::Foo.new("http://example.com").send(:fetch) + expect(result).to eq("foo") end - - it "refetches if cache is expired" end From 4212198c0052d629659bcc24fa23a94914b95e2f Mon Sep 17 00:00:00 2001 From: jzeta Date: Tue, 3 Sep 2013 22:24:04 -0700 Subject: [PATCH 16/48] refactor amazon onebox - data method #55 --- lib/onebox/engine/amazon_onebox.rb | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/onebox/engine/amazon_onebox.rb b/lib/onebox/engine/amazon_onebox.rb index 1667fa4c..11a0ab0e 100644 --- a/lib/onebox/engine/amazon_onebox.rb +++ b/lib/onebox/engine/amazon_onebox.rb @@ -10,13 +10,13 @@ class AmazonOnebox private - def extracted_data + def data { url: @url, - name: @body.css("html body h1").inner_text, - image: @body.css("html body #main-image").first["src"], - description: @body.css("html body #postBodyPS").inner_text, - price: @body.css("html body .priceLarge").inner_text + name: raw.css("html body h1").inner_text, + image: raw.css("html body #main-image").first["src"], + description: raw.css("html body #postBodyPS").inner_text, + price: raw.css("html body .priceLarge").inner_text } end end From a65ad03173da8b61a244bd2f18135fd3ad3f969a Mon Sep 17 00:00:00 2001 From: jzeta Date: Tue, 3 Sep 2013 22:27:24 -0700 Subject: [PATCH 17/48] refactor opengraph module - raw method #55 --- lib/onebox/engine/open_graph.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/onebox/engine/open_graph.rb b/lib/onebox/engine/open_graph.rb index c8d0785e..b722869d 100644 --- a/lib/onebox/engine/open_graph.rb +++ b/lib/onebox/engine/open_graph.rb @@ -1,8 +1,8 @@ module Onebox module Engine module OpenGraph - def read - ::OpenGraph.new(@url) + def raw + @raw ||= ::OpenGraph.new(@url) end end end From 1ad1ad779f7010ffdbe7ceae6bf58b89cb77ea7e Mon Sep 17 00:00:00 2001 From: jzeta Date: Tue, 3 Sep 2013 22:28:44 -0700 Subject: [PATCH 18/48] refactor oneboxes - change @body to raw in extracted_data method #55 --- lib/onebox/engine/bliptv_onebox.rb | 8 ++++---- lib/onebox/engine/college_humor_onebox.rb | 8 ++++---- lib/onebox/engine/flickr_onebox.rb | 6 +++--- lib/onebox/engine/funny_or_die_onebox.rb | 8 ++++---- lib/onebox/engine/hulu_onebox.rb | 8 ++++---- lib/onebox/engine/nfb_onebox.rb | 6 +++--- lib/onebox/engine/qik_onebox.rb | 4 ++-- lib/onebox/engine/stack_exchange_onebox.rb | 4 ++-- lib/onebox/engine/vimeo_onebox.rb | 8 ++++---- lib/onebox/engine/wikipedia_onebox.rb | 6 +++--- 10 files changed, 33 insertions(+), 33 deletions(-) diff --git a/lib/onebox/engine/bliptv_onebox.rb b/lib/onebox/engine/bliptv_onebox.rb index bee111a5..ddd2a0ea 100644 --- a/lib/onebox/engine/bliptv_onebox.rb +++ b/lib/onebox/engine/bliptv_onebox.rb @@ -14,10 +14,10 @@ class BliptvOnebox def extracted_data { url: @url, - title: @body.title, - image: @body.images[0], - description: @body.description, - video: @body.metadata[:video].first[:_value] + title: raw.title, + image: raw.images[0], + description: raw.description, + video: raw.metadata[:video].first[:_value] } end end diff --git a/lib/onebox/engine/college_humor_onebox.rb b/lib/onebox/engine/college_humor_onebox.rb index 77678710..2677ea26 100644 --- a/lib/onebox/engine/college_humor_onebox.rb +++ b/lib/onebox/engine/college_humor_onebox.rb @@ -14,10 +14,10 @@ class CollegeHumorOnebox def extracted_data { url: @url, - title: @body.title, - image: @body.images[0], - description: @body.description, - video: @body.metadata[:video].first[:_value] + title: raw.title, + image: raw.images[0], + description: raw.description, + video: raw.metadata[:video].first[:_value] } end end diff --git a/lib/onebox/engine/flickr_onebox.rb b/lib/onebox/engine/flickr_onebox.rb index 0dfa3a4e..ae28b6fe 100644 --- a/lib/onebox/engine/flickr_onebox.rb +++ b/lib/onebox/engine/flickr_onebox.rb @@ -14,9 +14,9 @@ class FlickrOnebox def extracted_data { url: @url, - title: @body.title, - image: @body.images[0], - description: @body.description + title: raw.title, + image: raw.images[0], + description: raw.description } end end diff --git a/lib/onebox/engine/funny_or_die_onebox.rb b/lib/onebox/engine/funny_or_die_onebox.rb index 3c9b07ae..7789db80 100644 --- a/lib/onebox/engine/funny_or_die_onebox.rb +++ b/lib/onebox/engine/funny_or_die_onebox.rb @@ -14,10 +14,10 @@ class FunnyOrDieOnebox def extracted_data { url: @url, - title: @body.title, - image: @body.images.first, - description: @body.description, - video: @body.metadata[:video].first[:url].first[:_value] + title: raw.title, + image: raw.images.first, + description: raw.description, + video: raw.metadata[:video].first[:url].first[:_value] } end end diff --git a/lib/onebox/engine/hulu_onebox.rb b/lib/onebox/engine/hulu_onebox.rb index 33c1a23f..00198ef6 100644 --- a/lib/onebox/engine/hulu_onebox.rb +++ b/lib/onebox/engine/hulu_onebox.rb @@ -14,10 +14,10 @@ class HuluOnebox def extracted_data { url: @url, - title: @body.title, - image: @body.images[0], - description: @body.description, - video: @body.metadata[:video][1][:_value] + title: raw.title, + image: raw.images[0], + description: raw.description, + video: raw.metadata[:video][1][:_value] } end end diff --git a/lib/onebox/engine/nfb_onebox.rb b/lib/onebox/engine/nfb_onebox.rb index 2a89540a..d3d8bda7 100644 --- a/lib/onebox/engine/nfb_onebox.rb +++ b/lib/onebox/engine/nfb_onebox.rb @@ -14,9 +14,9 @@ class NFBOnebox def extracted_data { url: @url, - title: @body.title, - description: @body.description, - video: @body.metadata[:video].first[:_value] + title: raw.title, + description: raw.description, + video: raw.metadata[:video].first[:_value] } end end diff --git a/lib/onebox/engine/qik_onebox.rb b/lib/onebox/engine/qik_onebox.rb index e15449e0..61cf423d 100644 --- a/lib/onebox/engine/qik_onebox.rb +++ b/lib/onebox/engine/qik_onebox.rb @@ -13,8 +13,8 @@ class QikOnebox def extracted_data { url: @url, - title: @body.css(".info h2").inner_text, - image: @body.css(".userphoto").first["src"] + title: raw.css(".info h2").inner_text, + image: raw.css(".userphoto").first["src"] } end end diff --git a/lib/onebox/engine/stack_exchange_onebox.rb b/lib/onebox/engine/stack_exchange_onebox.rb index 31d9be24..00b9a4d9 100644 --- a/lib/onebox/engine/stack_exchange_onebox.rb +++ b/lib/onebox/engine/stack_exchange_onebox.rb @@ -13,8 +13,8 @@ class StackExchangeOnebox def extracted_data { url: @url, - title: @body.css(".question-hyperlink").inner_text, - question: @body.css(".question .post-text p").first.inner_text + title: raw.css(".question-hyperlink").inner_text, + question: raw.css(".question .post-text p").first.inner_text } end end diff --git a/lib/onebox/engine/vimeo_onebox.rb b/lib/onebox/engine/vimeo_onebox.rb index ba3f339b..03646460 100644 --- a/lib/onebox/engine/vimeo_onebox.rb +++ b/lib/onebox/engine/vimeo_onebox.rb @@ -14,10 +14,10 @@ class VimeoOnebox def extracted_data { url: @url, - title: @body.title, - image: @body.images[0], - description: @body.description, - video: @body.metadata[:video].first[:_value] + title: raw.title, + image: raw.images[0], + description: raw.description, + video: raw.metadata[:video].first[:_value] } end end diff --git a/lib/onebox/engine/wikipedia_onebox.rb b/lib/onebox/engine/wikipedia_onebox.rb index c3a8a67c..a4a60fbe 100644 --- a/lib/onebox/engine/wikipedia_onebox.rb +++ b/lib/onebox/engine/wikipedia_onebox.rb @@ -13,9 +13,9 @@ class WikipediaOnebox def extracted_data { url: @url, - name: @body.css("html body h1").inner_text, - image: @body.css(".infobox .image img").first["src"], - description: @body.css("html body p").inner_text + name: raw.css("html body h1").inner_text, + image: raw.css(".infobox .image img").first["src"], + description: raw.css("html body p").inner_text } end end From f4682b27a5aef6df0be832ca7d727f8f1a0348b5 Mon Sep 17 00:00:00 2001 From: jzeta Date: Wed, 4 Sep 2013 00:25:04 -0700 Subject: [PATCH 19/48] extracted_data method renamed to record #55 --- lib/onebox/engine/bliptv_onebox.rb | 2 +- lib/onebox/engine/clikthrough_onebox.rb | 2 +- lib/onebox/engine/college_humor_onebox.rb | 2 +- lib/onebox/engine/dailymotion_onebox.rb | 2 +- lib/onebox/engine/dotsub_onebox.rb | 2 +- lib/onebox/engine/example_onebox.rb | 2 +- lib/onebox/engine/flickr_onebox.rb | 2 +- lib/onebox/engine/funny_or_die_onebox.rb | 2 +- lib/onebox/engine/hulu_onebox.rb | 2 +- lib/onebox/engine/nfb_onebox.rb | 2 +- lib/onebox/engine/qik_onebox.rb | 2 +- lib/onebox/engine/revision3_onebox.rb | 2 +- lib/onebox/engine/slideshare_onebox.rb | 2 +- lib/onebox/engine/stack_exchange_onebox.rb | 2 +- lib/onebox/engine/ted_onebox.rb | 2 +- lib/onebox/engine/viddler_onebox.rb | 2 +- lib/onebox/engine/vimeo_onebox.rb | 2 +- lib/onebox/engine/wikipedia_onebox.rb | 2 +- lib/onebox/engine/yfrog_onebox.rb | 2 +- spec/lib/onebox/engine_spec.rb | 2 +- 20 files changed, 20 insertions(+), 20 deletions(-) diff --git a/lib/onebox/engine/bliptv_onebox.rb b/lib/onebox/engine/bliptv_onebox.rb index ddd2a0ea..781ec8ed 100644 --- a/lib/onebox/engine/bliptv_onebox.rb +++ b/lib/onebox/engine/bliptv_onebox.rb @@ -11,7 +11,7 @@ class BliptvOnebox private - def extracted_data + def record { url: @url, title: raw.title, diff --git a/lib/onebox/engine/clikthrough_onebox.rb b/lib/onebox/engine/clikthrough_onebox.rb index 974e1068..9e543c42 100644 --- a/lib/onebox/engine/clikthrough_onebox.rb +++ b/lib/onebox/engine/clikthrough_onebox.rb @@ -11,7 +11,7 @@ class ClikThroughOnebox private - def extracted_data + def record { url: @url, title: @body.title, diff --git a/lib/onebox/engine/college_humor_onebox.rb b/lib/onebox/engine/college_humor_onebox.rb index 2677ea26..50c21ac2 100644 --- a/lib/onebox/engine/college_humor_onebox.rb +++ b/lib/onebox/engine/college_humor_onebox.rb @@ -11,7 +11,7 @@ class CollegeHumorOnebox private - def extracted_data + def record { url: @url, title: raw.title, diff --git a/lib/onebox/engine/dailymotion_onebox.rb b/lib/onebox/engine/dailymotion_onebox.rb index c134e3e5..cbff540f 100644 --- a/lib/onebox/engine/dailymotion_onebox.rb +++ b/lib/onebox/engine/dailymotion_onebox.rb @@ -11,7 +11,7 @@ class DailymotionOnebox private - def extracted_data + def record { url: @url, title: @body.title, diff --git a/lib/onebox/engine/dotsub_onebox.rb b/lib/onebox/engine/dotsub_onebox.rb index 68cbeb81..05641a9e 100644 --- a/lib/onebox/engine/dotsub_onebox.rb +++ b/lib/onebox/engine/dotsub_onebox.rb @@ -11,7 +11,7 @@ class DotsubOnebox private - def extracted_data + def record { url: @body.metadata[:url].first[:_value], title: @body.title, diff --git a/lib/onebox/engine/example_onebox.rb b/lib/onebox/engine/example_onebox.rb index 4fb21c29..6f136cb9 100644 --- a/lib/onebox/engine/example_onebox.rb +++ b/lib/onebox/engine/example_onebox.rb @@ -9,7 +9,7 @@ class ExampleOnebox private - def extracted_data + def record { header: raw.css("html body h1") } diff --git a/lib/onebox/engine/flickr_onebox.rb b/lib/onebox/engine/flickr_onebox.rb index ae28b6fe..66e6f6f5 100644 --- a/lib/onebox/engine/flickr_onebox.rb +++ b/lib/onebox/engine/flickr_onebox.rb @@ -11,7 +11,7 @@ class FlickrOnebox private - def extracted_data + def record { url: @url, title: raw.title, diff --git a/lib/onebox/engine/funny_or_die_onebox.rb b/lib/onebox/engine/funny_or_die_onebox.rb index 7789db80..2d4475e7 100644 --- a/lib/onebox/engine/funny_or_die_onebox.rb +++ b/lib/onebox/engine/funny_or_die_onebox.rb @@ -11,7 +11,7 @@ class FunnyOrDieOnebox private - def extracted_data + def record { url: @url, title: raw.title, diff --git a/lib/onebox/engine/hulu_onebox.rb b/lib/onebox/engine/hulu_onebox.rb index 00198ef6..c930951a 100644 --- a/lib/onebox/engine/hulu_onebox.rb +++ b/lib/onebox/engine/hulu_onebox.rb @@ -11,7 +11,7 @@ class HuluOnebox private - def extracted_data + def record { url: @url, title: raw.title, diff --git a/lib/onebox/engine/nfb_onebox.rb b/lib/onebox/engine/nfb_onebox.rb index d3d8bda7..a0e2964c 100644 --- a/lib/onebox/engine/nfb_onebox.rb +++ b/lib/onebox/engine/nfb_onebox.rb @@ -11,7 +11,7 @@ class NFBOnebox private - def extracted_data + def record { url: @url, title: raw.title, diff --git a/lib/onebox/engine/qik_onebox.rb b/lib/onebox/engine/qik_onebox.rb index 61cf423d..ea95f64f 100644 --- a/lib/onebox/engine/qik_onebox.rb +++ b/lib/onebox/engine/qik_onebox.rb @@ -10,7 +10,7 @@ class QikOnebox private - def extracted_data + def record { url: @url, title: raw.css(".info h2").inner_text, diff --git a/lib/onebox/engine/revision3_onebox.rb b/lib/onebox/engine/revision3_onebox.rb index 4ca96d02..da9b418a 100644 --- a/lib/onebox/engine/revision3_onebox.rb +++ b/lib/onebox/engine/revision3_onebox.rb @@ -11,7 +11,7 @@ class Revision3Onebox private - def extracted_data + def record { url: @url, title: @body.title, diff --git a/lib/onebox/engine/slideshare_onebox.rb b/lib/onebox/engine/slideshare_onebox.rb index 7e08feae..07efc958 100644 --- a/lib/onebox/engine/slideshare_onebox.rb +++ b/lib/onebox/engine/slideshare_onebox.rb @@ -11,7 +11,7 @@ class SlideshareOnebox private - def extracted_data + def record { url: @url, title: @body.title, diff --git a/lib/onebox/engine/stack_exchange_onebox.rb b/lib/onebox/engine/stack_exchange_onebox.rb index 00b9a4d9..7cfdef87 100644 --- a/lib/onebox/engine/stack_exchange_onebox.rb +++ b/lib/onebox/engine/stack_exchange_onebox.rb @@ -10,7 +10,7 @@ class StackExchangeOnebox private - def extracted_data + def record { url: @url, title: raw.css(".question-hyperlink").inner_text, diff --git a/lib/onebox/engine/ted_onebox.rb b/lib/onebox/engine/ted_onebox.rb index b33be375..dc544413 100644 --- a/lib/onebox/engine/ted_onebox.rb +++ b/lib/onebox/engine/ted_onebox.rb @@ -11,7 +11,7 @@ class TedOnebox private - def extracted_data + def record { url: @url, title: @body.title, diff --git a/lib/onebox/engine/viddler_onebox.rb b/lib/onebox/engine/viddler_onebox.rb index 7097f468..3fd45d80 100644 --- a/lib/onebox/engine/viddler_onebox.rb +++ b/lib/onebox/engine/viddler_onebox.rb @@ -11,7 +11,7 @@ class ViddlerOnebox private - def extracted_data + def record { url: @url, title: @body.title, diff --git a/lib/onebox/engine/vimeo_onebox.rb b/lib/onebox/engine/vimeo_onebox.rb index 03646460..cd2dfd82 100644 --- a/lib/onebox/engine/vimeo_onebox.rb +++ b/lib/onebox/engine/vimeo_onebox.rb @@ -11,7 +11,7 @@ class VimeoOnebox private - def extracted_data + def record { url: @url, title: raw.title, diff --git a/lib/onebox/engine/wikipedia_onebox.rb b/lib/onebox/engine/wikipedia_onebox.rb index a4a60fbe..5a4fc3b2 100644 --- a/lib/onebox/engine/wikipedia_onebox.rb +++ b/lib/onebox/engine/wikipedia_onebox.rb @@ -10,7 +10,7 @@ class WikipediaOnebox private - def extracted_data + def record { url: @url, name: raw.css("html body h1").inner_text, diff --git a/lib/onebox/engine/yfrog_onebox.rb b/lib/onebox/engine/yfrog_onebox.rb index e4c4902f..85d5be2a 100644 --- a/lib/onebox/engine/yfrog_onebox.rb +++ b/lib/onebox/engine/yfrog_onebox.rb @@ -11,7 +11,7 @@ class YfrogOnebox private - def extracted_data + def record { url: @url, title: @body.title, diff --git a/spec/lib/onebox/engine_spec.rb b/spec/lib/onebox/engine_spec.rb index 4930a589..db372ecc 100644 --- a/spec/lib/onebox/engine_spec.rb +++ b/spec/lib/onebox/engine_spec.rb @@ -3,7 +3,7 @@ class Onebox::Engine::Foo include Onebox::Engine - def extracted_data + def record "foo" end end From a7bbed6457ef0bd1067b233c1cfa46dfc708c3a0 Mon Sep 17 00:00:00 2001 From: jzeta Date: Wed, 4 Sep 2013 00:26:13 -0700 Subject: [PATCH 20/48] use raw instead of @body in rest of oneboxes #55 --- lib/onebox/engine/clikthrough_onebox.rb | 4 ++-- lib/onebox/engine/dailymotion_onebox.rb | 8 ++++---- lib/onebox/engine/dotsub_onebox.rb | 10 +++++----- lib/onebox/engine/revision3_onebox.rb | 8 ++++---- lib/onebox/engine/slideshare_onebox.rb | 6 +++--- lib/onebox/engine/ted_onebox.rb | 6 +++--- lib/onebox/engine/viddler_onebox.rb | 8 ++++---- lib/onebox/engine/yfrog_onebox.rb | 6 +++--- 8 files changed, 28 insertions(+), 28 deletions(-) diff --git a/lib/onebox/engine/clikthrough_onebox.rb b/lib/onebox/engine/clikthrough_onebox.rb index 9e543c42..858a46bc 100644 --- a/lib/onebox/engine/clikthrough_onebox.rb +++ b/lib/onebox/engine/clikthrough_onebox.rb @@ -14,8 +14,8 @@ class ClikThroughOnebox def record { url: @url, - title: @body.title, - description: @body.description + title: raw.title, + description: raw.description } end end diff --git a/lib/onebox/engine/dailymotion_onebox.rb b/lib/onebox/engine/dailymotion_onebox.rb index cbff540f..2dd3d609 100644 --- a/lib/onebox/engine/dailymotion_onebox.rb +++ b/lib/onebox/engine/dailymotion_onebox.rb @@ -14,10 +14,10 @@ class DailymotionOnebox def record { url: @url, - title: @body.title, - image: @body.images.first, - description: @body.description, - video: @body.metadata[:video][1][:_value] + title: raw.title, + image: raw.images.first, + description: raw.description, + video: raw.metadata[:video][1][:_value] } end end diff --git a/lib/onebox/engine/dotsub_onebox.rb b/lib/onebox/engine/dotsub_onebox.rb index 05641a9e..3552dff6 100644 --- a/lib/onebox/engine/dotsub_onebox.rb +++ b/lib/onebox/engine/dotsub_onebox.rb @@ -13,11 +13,11 @@ class DotsubOnebox def record { - url: @body.metadata[:url].first[:_value], - title: @body.title, - image: @body.images.first, - description: @body.description, - video: @body.metadata[:video].first[:_value] + url: raw.metadata[:url].first[:_value], + title: raw.title, + image: raw.images.first, + description: raw.description, + video: raw.metadata[:video].first[:_value] } end end diff --git a/lib/onebox/engine/revision3_onebox.rb b/lib/onebox/engine/revision3_onebox.rb index da9b418a..b8816b19 100644 --- a/lib/onebox/engine/revision3_onebox.rb +++ b/lib/onebox/engine/revision3_onebox.rb @@ -14,10 +14,10 @@ class Revision3Onebox def record { url: @url, - title: @body.title, - image: @body.images.first, - description: @body.description, - video: @body.metadata[:video].first[:_value] + title: raw.title, + image: raw.images.first, + description: raw.description, + video: raw.metadata[:video].first[:_value] } end end diff --git a/lib/onebox/engine/slideshare_onebox.rb b/lib/onebox/engine/slideshare_onebox.rb index 07efc958..5db8df33 100644 --- a/lib/onebox/engine/slideshare_onebox.rb +++ b/lib/onebox/engine/slideshare_onebox.rb @@ -14,9 +14,9 @@ class SlideshareOnebox def record { url: @url, - title: @body.title, - image: @body.images.first, - description: @body.description + title: raw.title, + image: raw.images.first, + description: raw.description } end end diff --git a/lib/onebox/engine/ted_onebox.rb b/lib/onebox/engine/ted_onebox.rb index dc544413..eb24e7d7 100644 --- a/lib/onebox/engine/ted_onebox.rb +++ b/lib/onebox/engine/ted_onebox.rb @@ -14,9 +14,9 @@ class TedOnebox def record { url: @url, - title: @body.title, - image: @body.images.first, - description: @body.description + title: raw.title, + image: raw.images.first, + description: raw.description } end end diff --git a/lib/onebox/engine/viddler_onebox.rb b/lib/onebox/engine/viddler_onebox.rb index 3fd45d80..c1d7bdff 100644 --- a/lib/onebox/engine/viddler_onebox.rb +++ b/lib/onebox/engine/viddler_onebox.rb @@ -14,10 +14,10 @@ class ViddlerOnebox def record { url: @url, - title: @body.title, - image: @body.images.first, - description: @body.description, - video: @body.metadata[:video].first[:_value] + title: raw.title, + image: raw.images.first, + description: raw.description, + video: raw.metadata[:video].first[:_value] } end end diff --git a/lib/onebox/engine/yfrog_onebox.rb b/lib/onebox/engine/yfrog_onebox.rb index 85d5be2a..3ec5f885 100644 --- a/lib/onebox/engine/yfrog_onebox.rb +++ b/lib/onebox/engine/yfrog_onebox.rb @@ -14,9 +14,9 @@ class YfrogOnebox def record { url: @url, - title: @body.title, - image: @body.images.first, - description: @body.description + title: raw.title, + image: raw.images.first, + description: raw.description } end end From b17ac63fbf415480394200359c1946f0b56a4c71 Mon Sep 17 00:00:00 2001 From: jzeta Date: Wed, 4 Sep 2013 00:47:32 -0700 Subject: [PATCH 21/48] create defaults singleton method in Preview module for Engine module #55 --- lib/onebox.rb | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/onebox.rb b/lib/onebox.rb index db12a5d7..1a51eeeb 100644 --- a/lib/onebox.rb +++ b/lib/onebox.rb @@ -23,6 +23,10 @@ def self.preview(url, options = @@defaults) Preview.new(url, options) end + def self.defaults + @@defaults + end + def self.defaults=(options) @@defaults = DEFAULTS.merge(options) end From 86493a7cd490d5d9699b5e9775bfd18172ee86f6 Mon Sep 17 00:00:00 2001 From: jzeta Date: Wed, 4 Sep 2013 00:49:07 -0700 Subject: [PATCH 22/48] fix engine spec to use renamed record method #55 --- spec/lib/onebox/engine_spec.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/spec/lib/onebox/engine_spec.rb b/spec/lib/onebox/engine_spec.rb index db372ecc..b49ca0cc 100644 --- a/spec/lib/onebox/engine_spec.rb +++ b/spec/lib/onebox/engine_spec.rb @@ -13,16 +13,16 @@ def record it "returns formatted html" end - describe "#fetch" do + describe "#record" do it "returns cache value for given url if cache exists" do cache = { "http://example.com" => "foo" } - result = Onebox::Engine::Foo.new("http://example.com", cache).send(:fetch) + result = Onebox::Engine::Foo.new("http://example.com", cache).send(:record) expect(result).to eq("foo") end it "stores cache value for given url if cache key doesn't exist" do cache = { "http://example.com1" => "foo" } - result = Onebox::Engine::Foo.new("http://example.com").send(:fetch) + result = Onebox::Engine::Foo.new("http://example.com").send(:record) expect(result).to eq("foo") end end From 13bc0ce4ee1394acbb6f208fd5876b79a9b20aea Mon Sep 17 00:00:00 2001 From: vykster Date: Wed, 4 Sep 2013 21:13:14 -0700 Subject: [PATCH 23/48] refactor sound cloud extracted data method --- lib/onebox/engine/sound_cloud_onebox.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/onebox/engine/sound_cloud_onebox.rb b/lib/onebox/engine/sound_cloud_onebox.rb index 500be7fc..9a503cd0 100644 --- a/lib/onebox/engine/sound_cloud_onebox.rb +++ b/lib/onebox/engine/sound_cloud_onebox.rb @@ -11,7 +11,7 @@ class SoundCloudOnebox private - def extracted_data + def data { url: @url, title: @body.title, From d2fd84ba61c914c5a3ed3740193899192daf5dd3 Mon Sep 17 00:00:00 2001 From: vykster Date: Wed, 4 Sep 2013 21:14:48 -0700 Subject: [PATCH 24/48] change @body to raw in sound cloud data method to use refactored method --- lib/onebox/engine/sound_cloud_onebox.rb | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/onebox/engine/sound_cloud_onebox.rb b/lib/onebox/engine/sound_cloud_onebox.rb index 9a503cd0..18a9e5e0 100644 --- a/lib/onebox/engine/sound_cloud_onebox.rb +++ b/lib/onebox/engine/sound_cloud_onebox.rb @@ -14,10 +14,10 @@ class SoundCloudOnebox def data { url: @url, - title: @body.title, - image: @body.images.first, - description: @body.description, - video: @body.metadata[:video][1][:_value] + title: raw.title, + image: raw.images.first, + description: raw.description, + video: raw.metadata[:video][1][:_value] } end end From a286ebdc30b37c0b51fa03d6893f648f37c087f5 Mon Sep 17 00:00:00 2001 From: vykster Date: Wed, 4 Sep 2013 21:31:50 -0700 Subject: [PATCH 25/48] remove html from example onebox template --- lib/onebox/engine/example_onebox.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/onebox/engine/example_onebox.rb b/lib/onebox/engine/example_onebox.rb index 6f136cb9..4812b446 100644 --- a/lib/onebox/engine/example_onebox.rb +++ b/lib/onebox/engine/example_onebox.rb @@ -9,14 +9,14 @@ class ExampleOnebox private - def record + def data { - header: raw.css("html body h1") + header: raw.css("h1").inner_text } end def template - %|
{{{header}}}
| + %|
{{header}}
| end end end From 99478c3b4ffde69fcce138d55e07d12e595e80eb Mon Sep 17 00:00:00 2001 From: vykster Date: Wed, 4 Sep 2013 21:33:19 -0700 Subject: [PATCH 26/48] remove html from expected result in example onebox --- spec/lib/onebox/engine/example_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/lib/onebox/engine/example_spec.rb b/spec/lib/onebox/engine/example_spec.rb index f6263643..5126758e 100644 --- a/spec/lib/onebox/engine/example_spec.rb +++ b/spec/lib/onebox/engine/example_spec.rb @@ -10,7 +10,7 @@ end it "returns template if given valid data" do - expect(html).to include(onebox_view("

Example Domain 1

")) + expect(html).to include(onebox_view("Example Domain 1")) end end end From 8dfc5be920e319a18f91e6e70ef224b2fbd44245 Mon Sep 17 00:00:00 2001 From: vykster Date: Wed, 4 Sep 2013 21:35:20 -0700 Subject: [PATCH 27/48] switch to new defaults reader interface --- lib/onebox.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/onebox.rb b/lib/onebox.rb index 1a51eeeb..3d0292b0 100644 --- a/lib/onebox.rb +++ b/lib/onebox.rb @@ -19,7 +19,7 @@ module Onebox @@defaults = DEFAULTS - def self.preview(url, options = @@defaults) + def self.preview(url, options = Onebox.defaults) Preview.new(url, options) end From 916bdde838aa1c79b7d3d23ec5a7e6bab1998124 Mon Sep 17 00:00:00 2001 From: vykster Date: Wed, 4 Sep 2013 21:36:31 -0700 Subject: [PATCH 28/48] switch to preview to new defaults reader interface #55 --- lib/onebox/preview.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/onebox/preview.rb b/lib/onebox/preview.rb index ef3b424a..a497fab0 100644 --- a/lib/onebox/preview.rb +++ b/lib/onebox/preview.rb @@ -2,7 +2,7 @@ module Onebox class Preview attr_reader :cache - def initialize(link, parameters = {}) + def initialize(link, parameters = Onebox.defaults) @url = link @options = parameters @cache = options.cache From 0dfc8532306dad9c392d041d9f7ba49da30eed54 Mon Sep 17 00:00:00 2001 From: vykster Date: Wed, 4 Sep 2013 21:37:29 -0700 Subject: [PATCH 29/48] remove html from expected result in preview test #55 --- spec/lib/onebox/preview_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/lib/onebox/preview_spec.rb b/spec/lib/onebox/preview_spec.rb index d952325d..415a850c 100644 --- a/spec/lib/onebox/preview_spec.rb +++ b/spec/lib/onebox/preview_spec.rb @@ -5,7 +5,7 @@ it "returns some html if given a valid url" do fake("http://www.example.com", response("example.response")) preview = described_class.new("http://www.example.com") - expect(preview.to_s).to include("

Example Domain 1

") + expect(preview.to_s).to include("Example Domain 1") end it "returns an empty string if the resource is not found" it "returns an empty string if the resource fails to load" From 6c0b665dd3ea175bc760a20295c4a67c72d0070d Mon Sep 17 00:00:00 2001 From: vykster Date: Wed, 4 Sep 2013 21:38:59 -0700 Subject: [PATCH 30/48] use to_s method in onebox for test b/c record was not being accessed by tests #55 --- spec/lib/onebox_spec.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/spec/lib/onebox_spec.rb b/spec/lib/onebox_spec.rb index e688e985..ad4feb6c 100644 --- a/spec/lib/onebox_spec.rb +++ b/spec/lib/onebox_spec.rb @@ -12,6 +12,7 @@ it "stores the value in cache if it doesn't exist" do url = "http://www.example.com" preview = Onebox.preview(url) + preview.to_s cache = preview.cache expect(cache.key?(url)).to eq(true) end From 332ebd74cce3156a5824f64356a87b30312d1fed Mon Sep 17 00:00:00 2001 From: vykster Date: Wed, 4 Sep 2013 22:26:38 -0700 Subject: [PATCH 31/48] add test to check if oneboxes behave like engines --- spec/spec_helper.rb | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 9390fd01..623b49a2 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -13,4 +13,14 @@ RSpec.configure do |config| config.include HTMLSpecHelper -end \ No newline at end of file +end + +shared_examples_for "engines" do + it "should behave like an engine" do + expect(described_class.private_instance_methods).to include(:data, :record, :raw) + end + + it "should have implemented a data method" do + expect { described_class.new(link).send(:data) }.not_to raise_error + end +end From 2633b788f5767a1d98bd60101c943ca44b0c094b Mon Sep 17 00:00:00 2001 From: vykster Date: Wed, 4 Sep 2013 22:27:39 -0700 Subject: [PATCH 32/48] add test to check if onebox methods work --- lib/onebox/engine/amazon_onebox.rb | 2 +- spec/lib/onebox/engine/amazon_spec.rb | 6 ++- spec/lib/onebox/engine/bliptv_spec.rb | 41 +++++++++-------- spec/lib/onebox/engine/clikthrough_spec.rb | 29 +++++++----- spec/lib/onebox/engine/college_humor_spec.rb | 41 +++++++++-------- spec/lib/onebox/engine/dailymotion_spec.rb | 43 ++++++++++-------- spec/lib/onebox/engine/dotsub_spec.rb | 45 ++++++++++--------- spec/lib/onebox/engine/example_spec.rb | 5 ++- spec/lib/onebox/engine/flickr_spec.rb | 35 ++++++++------- spec/lib/onebox/engine/funny_or_die_spec.rb | 41 +++++++++-------- spec/lib/onebox/engine/hulu_spec.rb | 41 +++++++++-------- spec/lib/onebox/engine/nfb_spec.rb | 43 ++++++++++-------- spec/lib/onebox/engine/qik_spec.rb | 5 ++- spec/lib/onebox/engine/revision3_spec.rb | 43 ++++++++++-------- spec/lib/onebox/engine/slideshare_spec.rb | 35 ++++++++------- spec/lib/onebox/engine/sound_cloud_spec.rb | 43 ++++++++++-------- spec/lib/onebox/engine/stack_exchange_spec.rb | 5 ++- spec/lib/onebox/engine/ted_spec.rb | 35 ++++++++------- spec/lib/onebox/engine/viddler_spec.rb | 43 ++++++++++-------- spec/lib/onebox/engine/vimeo_spec.rb | 41 +++++++++-------- spec/lib/onebox/engine/wikipedia_spec.rb | 7 ++- spec/lib/onebox/engine/yfrog_spec.rb | 35 ++++++++------- spec/lib/onebox/engine_spec.rb | 1 - 23 files changed, 379 insertions(+), 286 deletions(-) diff --git a/lib/onebox/engine/amazon_onebox.rb b/lib/onebox/engine/amazon_onebox.rb index 11a0ab0e..b79b33be 100644 --- a/lib/onebox/engine/amazon_onebox.rb +++ b/lib/onebox/engine/amazon_onebox.rb @@ -10,7 +10,7 @@ class AmazonOnebox private - def data + def record { url: @url, name: raw.css("html body h1").inner_text, diff --git a/spec/lib/onebox/engine/amazon_spec.rb b/spec/lib/onebox/engine/amazon_spec.rb index 718e5baa..7bb26501 100644 --- a/spec/lib/onebox/engine/amazon_spec.rb +++ b/spec/lib/onebox/engine/amazon_spec.rb @@ -1,8 +1,11 @@ require "spec_helper" describe Onebox::Engine::AmazonOnebox do + let(:link) { "http://amazon.com" } + + it_behaves_like "engines" + describe "#to_html" do - let(:link) { "http://amazon.com" } let(:html) { described_class.new(link).to_html } before do @@ -28,6 +31,5 @@ it "returns the product URL" do expect(html).to include(link) end - end end diff --git a/spec/lib/onebox/engine/bliptv_spec.rb b/spec/lib/onebox/engine/bliptv_spec.rb index 9c8abddb..4d9e417b 100644 --- a/spec/lib/onebox/engine/bliptv_spec.rb +++ b/spec/lib/onebox/engine/bliptv_spec.rb @@ -2,29 +2,34 @@ describe Onebox::Engine::BliptvOnebox do let(:link) { "http://blip.tv" } - let(:html) { described_class.new(link).to_html } - before do - fake(link, response("bliptv.response")) - end + it_behaves_like "engines" - it "returns video title" do - expect(html).to include("SC2L Week 3 - Axiom vs Acer G6") - end + describe "#to_html" do + let(:html) { described_class.new(link).to_html } - it "returns image" do - expect(html).to include("Striderdoom-SC2LWeek3AxiomVsAcerG6178-416.jpg") - end + before do + fake(link, response("bliptv.response")) + end - it "returns video description" do - expect(html).to include("Acer and Axiom go head to head in week 3!") - end + it "returns video title" do + expect(html).to include("SC2L Week 3 - Axiom vs Acer G6") + end - it "returns video" do - expect(html).to include("http://blip.tv/day9tv/sc2l-week-3-axiom-vs-acer-g6-6623829") - end + it "returns image" do + expect(html).to include("Striderdoom-SC2LWeek3AxiomVsAcerG6178-416.jpg") + end + + it "returns video description" do + expect(html).to include("Acer and Axiom go head to head in week 3!") + end + + it "returns video" do + expect(html).to include("http://blip.tv/day9tv/sc2l-week-3-axiom-vs-acer-g6-6623829") + end - it "returns URL" do - expect(html).to include(link) + it "returns URL" do + expect(html).to include(link) + end end end diff --git a/spec/lib/onebox/engine/clikthrough_spec.rb b/spec/lib/onebox/engine/clikthrough_spec.rb index aadabe4a..d380cb56 100644 --- a/spec/lib/onebox/engine/clikthrough_spec.rb +++ b/spec/lib/onebox/engine/clikthrough_spec.rb @@ -2,21 +2,26 @@ describe Onebox::Engine::ClikThroughOnebox do let(:link) { "http://www.clickthough.com"} - let(:html) { described_class.new(link).to_html } - before do - fake(link, response("clikthrough.response")) - end + it_behaves_like "engines" - it "returns video title" do - expect(html).to include("Keri Hilson - Knock You Down") - end + describe "#to_html" do + let(:html) { described_class.new(link).to_html } - it "returns video description" do - expect(html).to include("Keri Hilson gets taken down by love once again") - end + before do + fake(link, response("clikthrough.response")) + end + + it "returns video title" do + expect(html).to include("Keri Hilson - Knock You Down") + end + + it "returns video description" do + expect(html).to include("Keri Hilson gets taken down by love once again") + end - it "returns URL" do - expect(html).to include(link) + it "returns URL" do + expect(html).to include(link) + end end end diff --git a/spec/lib/onebox/engine/college_humor_spec.rb b/spec/lib/onebox/engine/college_humor_spec.rb index 7d449d3e..a622ecf7 100644 --- a/spec/lib/onebox/engine/college_humor_spec.rb +++ b/spec/lib/onebox/engine/college_humor_spec.rb @@ -2,29 +2,34 @@ describe Onebox::Engine::CollegeHumorOnebox do let(:link) { "http://collegehumor.com" } - let(:html) { described_class.new(link).to_html } - before do - fake(link, response("collegehumor.response")) - end + it_behaves_like "engines" - it "returns video title" do - expect(html).to include("Mitt Romney Style (Gangnam Style Parody)") - end + describe "#to_html" do + let(:html) { described_class.new(link).to_html } - it "returns video image" do - expect(html).to include("a9febe641d5beb264bbab0de49272e5a-mitt-romney-style-gangnam-style-parody.jpg") - end + before do + fake(link, response("collegehumor.response")) + end - it "returns video description" do - expect(html).to include("Heyyy wealthy ladies!"Mitt Romney Style" is now available on iTunes") - end + it "returns video title" do + expect(html).to include("Mitt Romney Style (Gangnam Style Parody)") + end - it "returns video URL" do - expect(html).to include("moogaloop.1.0.31.swf?clip_id=6830834&use_node_id=true&og=1&auto=true") - end + it "returns video image" do + expect(html).to include("a9febe641d5beb264bbab0de49272e5a-mitt-romney-style-gangnam-style-parody.jpg") + end + + it "returns video description" do + expect(html).to include("Heyyy wealthy ladies!"Mitt Romney Style" is now available on iTunes") + end + + it "returns video URL" do + expect(html).to include("moogaloop.1.0.31.swf?clip_id=6830834&use_node_id=true&og=1&auto=true") + end - it "returns URL" do - expect(html).to include(link) + it "returns URL" do + expect(html).to include(link) + end end end diff --git a/spec/lib/onebox/engine/dailymotion_spec.rb b/spec/lib/onebox/engine/dailymotion_spec.rb index 22924260..d33b233d 100644 --- a/spec/lib/onebox/engine/dailymotion_spec.rb +++ b/spec/lib/onebox/engine/dailymotion_spec.rb @@ -2,31 +2,36 @@ describe Onebox::Engine::DailymotionOnebox do let(:link) { "http://dailymotion.com" } - let(:html) { described_class.new(link).to_html } - before do - fake(link, response("dailymotion.response")) - end + it_behaves_like "engines" - it "returns video title" do - expect(html).to include("Two Door Cinema Club - Les Vielles Charrues 2013.") - end + describe "#to_html" do + let(:html) { described_class.new(link).to_html } - it "returns video image" do - expect(html).to include("526x297-bxE.jpg") - end + before do + fake(link, response("dailymotion.response")) + end - it "returns video description" do - expect(html).to include("Vibrez au son de l'electro-pop des Irlandais de Two Door Cinema Club,") - end + it "returns video title" do + expect(html).to include("Two Door Cinema Club - Les Vielles Charrues 2013.") + end - it "returns video URL" do - expect(html).to include("http://www.dailymotion.com/swf/video/x12h020?autoPlay=1") - end + it "returns video image" do + expect(html).to include("526x297-bxE.jpg") + end + + it "returns video description" do + expect(html).to include("Vibrez au son de l'electro-pop des Irlandais de Two Door Cinema Club,") + end + + it "returns video URL" do + expect(html).to include("http://www.dailymotion.com/swf/video/x12h020?autoPlay=1") + end - it "returns video embed code" + it "returns video embed code" - it "returns URL" do - expect(html).to include(link) + it "returns URL" do + expect(html).to include(link) + end end end diff --git a/spec/lib/onebox/engine/dotsub_spec.rb b/spec/lib/onebox/engine/dotsub_spec.rb index 91a41d1e..45e78326 100644 --- a/spec/lib/onebox/engine/dotsub_spec.rb +++ b/spec/lib/onebox/engine/dotsub_spec.rb @@ -2,31 +2,36 @@ describe Onebox::Engine::DotsubOnebox do let(:link) { "http://funnyordie.com" } - let(:html) { described_class.new(link).to_html } - before do - fake(link, response("dotsub.response")) - end + it_behaves_like "engines" - it "returns video title" do - expect(html).to include("Twitter in Plain English") - end + describe "#to_html" do + let(:html) { described_class.new(link).to_html } - it "returns video description" do - # og:decription tag spelled wrong in http response - pending - expect(html).to include("A short explanation of the micro-blogging service, Twitter.") - end + before do + fake(link, response("dotsub.response")) + end - it "returns video photo" do - expect(html).to include("/665bd0d5-a9f4-4a07-9d9e-b31ba926ca78/p") - end + it "returns video title" do + expect(html).to include("Twitter in Plain English") + end - it "returns video URL" do - expect(html).to include("dotsub.com/media/665bd0d5-a9f4-4a07-9d9e-b31ba926ca78/m/flv/") - end + it "returns video description" do + # og:decription tag spelled wrong in http response + pending + expect(html).to include("A short explanation of the micro-blogging service, Twitter.") + end + + it "returns video photo" do + expect(html).to include("/665bd0d5-a9f4-4a07-9d9e-b31ba926ca78/p") + end + + it "returns video URL" do + expect(html).to include("dotsub.com/media/665bd0d5-a9f4-4a07-9d9e-b31ba926ca78/m/flv/") + end - it "returns URL" do - expect(html).to include("http://dotsub.com/view/665bd0d5-a9f4-4a07-9d9e-b31ba926ca78") + it "returns URL" do + expect(html).to include("http://dotsub.com/view/665bd0d5-a9f4-4a07-9d9e-b31ba926ca78") + end end end diff --git a/spec/lib/onebox/engine/example_spec.rb b/spec/lib/onebox/engine/example_spec.rb index 5126758e..b21a6d75 100644 --- a/spec/lib/onebox/engine/example_spec.rb +++ b/spec/lib/onebox/engine/example_spec.rb @@ -1,8 +1,11 @@ require "spec_helper" describe Onebox::Engine::ExampleOnebox do + let(:link) { "http://example.com" } + + it_behaves_like "engines" + describe "#to_html" do - let(:link) { "http://example.com" } let(:html) { described_class.new(link).to_html } before do diff --git a/spec/lib/onebox/engine/flickr_spec.rb b/spec/lib/onebox/engine/flickr_spec.rb index 72d35f95..1d61f6aa 100644 --- a/spec/lib/onebox/engine/flickr_spec.rb +++ b/spec/lib/onebox/engine/flickr_spec.rb @@ -2,25 +2,30 @@ describe Onebox::Engine::FlickrOnebox do let(:link) { "http://flickr.com" } - let(:html) { described_class.new(link).to_html } - before do - fake(link, response("flickr.response")) - end + it_behaves_like "engines" - it "returns photo title" do - expect(html).to include("Los Angeles View 2011") - end + describe "#to_html" do + let(:html) { described_class.new(link).to_html } - it "returns photo" do - expect(html).to include("6038315155_2875860c4b_z.jpg") - end + before do + fake(link, response("flickr.response")) + end - it "returns photo description" do - expect(html).to include("The view from the Griffith Observatory, Los Angeles; July 2011") - end + it "returns photo title" do + expect(html).to include("Los Angeles View 2011") + end + + it "returns photo" do + expect(html).to include("6038315155_2875860c4b_z.jpg") + end + + it "returns photo description" do + expect(html).to include("The view from the Griffith Observatory, Los Angeles; July 2011") + end - it "returns URL" do - expect(html).to include(link) + it "returns URL" do + expect(html).to include(link) + end end end diff --git a/spec/lib/onebox/engine/funny_or_die_spec.rb b/spec/lib/onebox/engine/funny_or_die_spec.rb index 8a5894bc..f34ba03d 100644 --- a/spec/lib/onebox/engine/funny_or_die_spec.rb +++ b/spec/lib/onebox/engine/funny_or_die_spec.rb @@ -2,29 +2,34 @@ describe Onebox::Engine::FunnyOrDieOnebox do let(:link) { "http://funnyordie.com" } - let(:html) { described_class.new(link).to_html } - before do - fake(link, response("funnyordie.response")) - end + it_behaves_like "engines" - it "returns video title" do - expect(html).to include("The Landlord") - end + describe "#to_html" do + let(:html) { described_class.new(link).to_html } - it "returns video photo" do - expect(html).to include("c480x270_18.jpg") - end + before do + fake(link, response("funnyordie.response")) + end - it "returns video description" do - expect(html).to include("Will Ferrell meets his landlord.") - end + it "returns video title" do + expect(html).to include("The Landlord") + end - it "returns video URL" do - expect(html).to include("http://www.funnyordie.com/videos/74/the-landlord-from-will-ferrell-and-adam-ghost-panther-mckay") - end + it "returns video photo" do + expect(html).to include("c480x270_18.jpg") + end + + it "returns video description" do + expect(html).to include("Will Ferrell meets his landlord.") + end + + it "returns video URL" do + expect(html).to include("http://www.funnyordie.com/videos/74/the-landlord-from-will-ferrell-and-adam-ghost-panther-mckay") + end - it "returns URL" do - expect(html).to include(link) + it "returns URL" do + expect(html).to include(link) + end end end diff --git a/spec/lib/onebox/engine/hulu_spec.rb b/spec/lib/onebox/engine/hulu_spec.rb index 1673aad3..4d6f051d 100644 --- a/spec/lib/onebox/engine/hulu_spec.rb +++ b/spec/lib/onebox/engine/hulu_spec.rb @@ -2,29 +2,34 @@ describe Onebox::Engine::HuluOnebox do let(:link) { "http://hulu.com" } - let(:html) { described_class.new(link).to_html } - before do - fake(link, response("hulu.response")) - end + it_behaves_like "engines" - it "returns video title" do - expect(html).to include("The Awesomes: Pilot, Part 1") - end + describe "#to_html" do + let(:html) { described_class.new(link).to_html } - it "returns photo" do - expect(html).to include("http://ib3.huluim.com/video/60245466?region=US&size=600x400") - end + before do + fake(link, response("hulu.response")) + end - it "returns video description" do - expect(html).to include("After Mr. Awesome decides to retire and disband The Awesomes") - end + it "returns video title" do + expect(html).to include("The Awesomes: Pilot, Part 1") + end - it "returns video URL" do - expect(html).to include("https://secure.hulu.com/embed/0-us7uHJgevua5TeiGwCxQ") - end + it "returns photo" do + expect(html).to include("http://ib3.huluim.com/video/60245466?region=US&size=600x400") + end + + it "returns video description" do + expect(html).to include("After Mr. Awesome decides to retire and disband The Awesomes") + end + + it "returns video URL" do + expect(html).to include("https://secure.hulu.com/embed/0-us7uHJgevua5TeiGwCxQ") + end - it "returns URL" do - expect(html).to include(link) + it "returns URL" do + expect(html).to include(link) + end end end diff --git a/spec/lib/onebox/engine/nfb_spec.rb b/spec/lib/onebox/engine/nfb_spec.rb index 285889ec..244398e6 100644 --- a/spec/lib/onebox/engine/nfb_spec.rb +++ b/spec/lib/onebox/engine/nfb_spec.rb @@ -2,30 +2,35 @@ describe Onebox::Engine::NFBOnebox do let(:link) { "http://nfb.ca" } - let(:html) { described_class.new(link).to_html } - before do - fake(link, response("nfb.response")) - end + it_behaves_like "engines" - it "returns video title" do - expect(html).to include("Overdose") - end + describe "#to_html" do + let(:html) { described_class.new(link).to_html } - it "returns video description" do - expect(html).to include("With school, tennis lessons, swimming lessons, art classes,") - end + before do + fake(link, response("nfb.response")) + end - it "returns video URL" do - expect(html).to include("http://www.nfb.ca/film/overdose_en/") - end + it "returns video title" do + expect(html).to include("Overdose") + end - it "returns the video embed code" do - pending - expect(html).to include("") - end + it "returns video description" do + expect(html).to include("With school, tennis lessons, swimming lessons, art classes,") + end + + it "returns video URL" do + expect(html).to include("http://www.nfb.ca/film/overdose_en/") + end + + it "returns the video embed code" do + pending + expect(html).to include("") + end - it "returns URL" do - expect(html).to include(link) + it "returns URL" do + expect(html).to include(link) + end end end diff --git a/spec/lib/onebox/engine/qik_spec.rb b/spec/lib/onebox/engine/qik_spec.rb index 755c6a27..f2006671 100644 --- a/spec/lib/onebox/engine/qik_spec.rb +++ b/spec/lib/onebox/engine/qik_spec.rb @@ -1,8 +1,11 @@ require "spec_helper" describe Onebox::Engine::QikOnebox do + let(:link) { "http://qik.com" } + + it_behaves_like "engines" + describe "#to_html" do - let(:link) { "http://qik.com" } let(:html) { described_class.new(link).to_html } before do diff --git a/spec/lib/onebox/engine/revision3_spec.rb b/spec/lib/onebox/engine/revision3_spec.rb index 0eb868b0..35a1b49b 100644 --- a/spec/lib/onebox/engine/revision3_spec.rb +++ b/spec/lib/onebox/engine/revision3_spec.rb @@ -2,31 +2,36 @@ describe Onebox::Engine::Revision3Onebox do let(:link) { "http://collegehumor.com" } - let(:html) { described_class.new(link).to_html } - before do - fake(link, response("revision3.response")) - end + it_behaves_like "engines" - it "returns video title" do - expect(html).to include("Blue Shark Bites Diver's Arm") - end + describe "#to_html" do + let(:html) { described_class.new(link).to_html } - it "returns video image" do - expect(html).to include("discoverysharks--0029--blue-sharks--medium.thumb.jpg") - end + before do + fake(link, response("revision3.response")) + end - it "returns video description" do - expect(html).to include("Blue Sharks swimming and eating in the open ocean.") - end + it "returns video title" do + expect(html).to include("Blue Shark Bites Diver's Arm") + end - it "returns video URL" do - expect(html).to include("https://revision3.com/player-v22668") - end + it "returns video image" do + expect(html).to include("discoverysharks--0029--blue-sharks--medium.thumb.jpg") + end + + it "returns video description" do + expect(html).to include("Blue Sharks swimming and eating in the open ocean.") + end + + it "returns video URL" do + expect(html).to include("https://revision3.com/player-v22668") + end - it "returns video embed code" + it "returns video embed code" - it "returns URL" do - expect(html).to include(link) + it "returns URL" do + expect(html).to include(link) + end end end diff --git a/spec/lib/onebox/engine/slideshare_spec.rb b/spec/lib/onebox/engine/slideshare_spec.rb index e33f1b6b..24a59167 100644 --- a/spec/lib/onebox/engine/slideshare_spec.rb +++ b/spec/lib/onebox/engine/slideshare_spec.rb @@ -2,25 +2,30 @@ describe Onebox::Engine::SlideshareOnebox do let(:link) { "http://slideshare.net" } - let(:html) { described_class.new(link).to_html } - before do - fake(link, response("slideshare.response")) - end + it_behaves_like "engines" - it "returns presentation title" do - expect(html).to include("12 Local Traditions That") - end + describe "#to_html" do + let(:html) { described_class.new(link).to_html } - it "returns presentation description" do - expect(html).to include("12 Local traditions that will make") - end + before do + fake(link, response("slideshare.response")) + end - it "returns presentation image" do - expect(html).to include("12localtraditions-130729070157-phpapp01-thumbnail-4") - end + it "returns presentation title" do + expect(html).to include("12 Local Traditions That") + end + + it "returns presentation description" do + expect(html).to include("12 Local traditions that will make") + end + + it "returns presentation image" do + expect(html).to include("12localtraditions-130729070157-phpapp01-thumbnail-4") + end - it "returns URL" do - expect(html).to include(link) + it "returns URL" do + expect(html).to include(link) + end end end diff --git a/spec/lib/onebox/engine/sound_cloud_spec.rb b/spec/lib/onebox/engine/sound_cloud_spec.rb index 95cf9f30..8bef2d7b 100644 --- a/spec/lib/onebox/engine/sound_cloud_spec.rb +++ b/spec/lib/onebox/engine/sound_cloud_spec.rb @@ -2,31 +2,36 @@ describe Onebox::Engine::SoundCloudOnebox do let(:link) { "http://dailymotion.com" } - let(:html) { described_class.new(link).to_html } - before do - fake(link, response("soundcloud.response")) - end + it_behaves_like "engines" - it "returns video title" do - expect(html).to include("Penguin Prison - Worse It Gets (RAC Mix)") - end + describe "#to_html" do + let(:html) { described_class.new(link).to_html } - it "returns video image" do - expect(html).to include("artworks-000033643332-vpuznu-t500x500.jpg") - end + before do + fake(link, response("soundcloud.response")) + end - it "returns video description" do - expect(html).to include("Remix by André Allen Anjos.") - end + it "returns video title" do + expect(html).to include("Penguin Prison - Worse It Gets (RAC Mix)") + end - it "returns video URL" do - expect(html).to include("Remix by André Allen Anjos.") - end + it "returns video image" do + expect(html).to include("artworks-000033643332-vpuznu-t500x500.jpg") + end + + it "returns video description" do + expect(html).to include("Remix by André Allen Anjos.") + end + + it "returns video URL" do + expect(html).to include("Remix by André Allen Anjos.") + end - it "returns video embed code" + it "returns video embed code" - it "returns URL" do - expect(html).to include(link) + it "returns URL" do + expect(html).to include(link) + end end end diff --git a/spec/lib/onebox/engine/stack_exchange_spec.rb b/spec/lib/onebox/engine/stack_exchange_spec.rb index d52a7e5c..62d8c90c 100644 --- a/spec/lib/onebox/engine/stack_exchange_spec.rb +++ b/spec/lib/onebox/engine/stack_exchange_spec.rb @@ -1,8 +1,11 @@ require "spec_helper" describe Onebox::Engine::StackExchangeOnebox do - describe "#to_html" do let(:link) { "http://stackexchange.com" } + + it_behaves_like "engines" + + describe "#to_html" do let(:html) { described_class.new(link).to_html } before do diff --git a/spec/lib/onebox/engine/ted_spec.rb b/spec/lib/onebox/engine/ted_spec.rb index d4d3813c..613e6beb 100644 --- a/spec/lib/onebox/engine/ted_spec.rb +++ b/spec/lib/onebox/engine/ted_spec.rb @@ -2,25 +2,30 @@ describe Onebox::Engine::TedOnebox do let(:link) { "http://ted.com" } - let(:html) { described_class.new(link).to_html } - before do - fake(link, response("ted.response")) - end + it_behaves_like "engines" - it "returns video title" do - expect(html).to include("Eli Beer: The fastest ambulance? A motorcycle") - end + describe "#to_html" do + let(:html) { described_class.new(link).to_html } - it "returns video photo" do - expect(html).to include("aa8d0403aec3466d031e3e1c1605637d84d6a07d_389x292.jpg") - end + before do + fake(link, response("ted.response")) + end - it "returns video description" do - expect(html).to include("As a young EMT on a Jerusalem ambulance") - end + it "returns video title" do + expect(html).to include("Eli Beer: The fastest ambulance? A motorcycle") + end + + it "returns video photo" do + expect(html).to include("aa8d0403aec3466d031e3e1c1605637d84d6a07d_389x292.jpg") + end + + it "returns video description" do + expect(html).to include("As a young EMT on a Jerusalem ambulance") + end - it "returns URL" do - expect(html).to include(link) + it "returns URL" do + expect(html).to include(link) + end end end diff --git a/spec/lib/onebox/engine/viddler_spec.rb b/spec/lib/onebox/engine/viddler_spec.rb index f01c95a1..5cd8c7a6 100644 --- a/spec/lib/onebox/engine/viddler_spec.rb +++ b/spec/lib/onebox/engine/viddler_spec.rb @@ -2,31 +2,36 @@ describe Onebox::Engine::ViddlerOnebox do let(:link) { "http://viddler.com" } - let(:html) { described_class.new(link).to_html } - before do - fake(link, response("viddler.response")) - end + it_behaves_like "engines" - it "returns video title" do - expect(html).to include("Viddler Demo") - end + describe "#to_html" do + let(:html) { described_class.new(link).to_html } - it "returns video image" do - expect(html).to include("thumbnail_2_7164f749_v2.jpg") - end + before do + fake(link, response("viddler.response")) + end - it "returns video description" do - expect(html).to include("Get familiar with your Viddler account.") - end + it "returns video title" do + expect(html).to include("Viddler Demo") + end - it "returns video URL" do - expect(html).to include("http://www.viddler.com/player/7164f749") - end + it "returns video image" do + expect(html).to include("thumbnail_2_7164f749_v2.jpg") + end + + it "returns video description" do + expect(html).to include("Get familiar with your Viddler account.") + end + + it "returns video URL" do + expect(html).to include("http://www.viddler.com/player/7164f749") + end - it "returns video embed code" + it "returns video embed code" - it "returns URL" do - expect(html).to include(link) + it "returns URL" do + expect(html).to include(link) + end end end diff --git a/spec/lib/onebox/engine/vimeo_spec.rb b/spec/lib/onebox/engine/vimeo_spec.rb index 7edd6ad1..98111a43 100644 --- a/spec/lib/onebox/engine/vimeo_spec.rb +++ b/spec/lib/onebox/engine/vimeo_spec.rb @@ -2,29 +2,34 @@ describe Onebox::Engine::VimeoOnebox do let(:link) { "http://vimeo.com" } - let(:html) { described_class.new(link).to_html } - before do - fake(link, response("vimeo.response")) - end + it_behaves_like "engines" - it "returns video title" do - expect(html).to include("108 years of Herman Miller in 108 seconds") - end + describe "#to_html" do + let(:html) { described_class.new(link).to_html } - it "returns video photo" do - expect(html).to include("443673159_1280.jpg") - end + before do + fake(link, response("vimeo.response")) + end - it "returns video description" do - expect(html).to include("To mark the launch of a new website for Hermann Miller furniture") - end + it "returns video title" do + expect(html).to include("108 years of Herman Miller in 108 seconds") + end - it "returns video URL" do - expect(html).to include("http://vimeo.com/moogaloop.swf?clip_id=70437049") - end + it "returns video photo" do + expect(html).to include("443673159_1280.jpg") + end + + it "returns video description" do + expect(html).to include("To mark the launch of a new website for Hermann Miller furniture") + end + + it "returns video URL" do + expect(html).to include("http://vimeo.com/moogaloop.swf?clip_id=70437049") + end - it "returns URL" do - expect(html).to include(link) + it "returns URL" do + expect(html).to include(link) + end end end diff --git a/spec/lib/onebox/engine/wikipedia_spec.rb b/spec/lib/onebox/engine/wikipedia_spec.rb index 7eee1616..413bba25 100644 --- a/spec/lib/onebox/engine/wikipedia_spec.rb +++ b/spec/lib/onebox/engine/wikipedia_spec.rb @@ -1,8 +1,11 @@ require "spec_helper" describe Onebox::Engine::WikipediaOnebox do - describe "to_html" do - let(:link) { "http://example.com" } + let(:link) { "http://example.com" } + + it_behaves_like "engines" + + describe "#to_html" do let(:html) { described_class.new(link).to_html } before do diff --git a/spec/lib/onebox/engine/yfrog_spec.rb b/spec/lib/onebox/engine/yfrog_spec.rb index 6a815953..8def117c 100644 --- a/spec/lib/onebox/engine/yfrog_spec.rb +++ b/spec/lib/onebox/engine/yfrog_spec.rb @@ -2,25 +2,30 @@ describe Onebox::Engine::YfrogOnebox do let(:link) { "http://yfrog.com" } - let(:html) { described_class.new(link).to_html } - before do - fake(link, response("yfrog.response")) - end + it_behaves_like "engines" - it "returns photo title" do - expect(html).to include("Celebrating @questlove Cook4Quest w/WyattCenac") - end + describe "#to_html" do + let(:html) { described_class.new(link).to_html } - it "returns photo" do - expect(html).to include("jjdob.jpg") - end + before do + fake(link, response("yfrog.response")) + end - it "returns photo description" do - expect(html).to include("Click on the photo to comment, share or view other great photos") - end + it "returns photo title" do + expect(html).to include("Celebrating @questlove Cook4Quest w/WyattCenac") + end + + it "returns photo" do + expect(html).to include("jjdob.jpg") + end + + it "returns photo description" do + expect(html).to include("Click on the photo to comment, share or view other great photos") + end - it "returns URL" do - expect(html).to include(link) + it "returns URL" do + expect(html).to include(link) + end end end diff --git a/spec/lib/onebox/engine_spec.rb b/spec/lib/onebox/engine_spec.rb index b49ca0cc..2866ea19 100644 --- a/spec/lib/onebox/engine_spec.rb +++ b/spec/lib/onebox/engine_spec.rb @@ -27,7 +27,6 @@ def record end end - describe ".===" do it "returns true if argument matches the matcher" do class Onebox::Engine::Foo From 41239f536383a2fe869a98d289251a2b8c315bbb Mon Sep 17 00:00:00 2001 From: jzeta Date: Wed, 4 Sep 2013 22:37:00 -0700 Subject: [PATCH 33/48] rename record method in oneboxes to data #55 --- lib/onebox/engine/amazon_onebox.rb | 2 +- lib/onebox/engine/bliptv_onebox.rb | 2 +- lib/onebox/engine/clikthrough_onebox.rb | 2 +- lib/onebox/engine/college_humor_onebox.rb | 2 +- lib/onebox/engine/dailymotion_onebox.rb | 2 +- lib/onebox/engine/dotsub_onebox.rb | 2 +- lib/onebox/engine/flickr_onebox.rb | 2 +- lib/onebox/engine/funny_or_die_onebox.rb | 2 +- lib/onebox/engine/hulu_onebox.rb | 2 +- lib/onebox/engine/nfb_onebox.rb | 2 +- lib/onebox/engine/qik_onebox.rb | 2 +- lib/onebox/engine/revision3_onebox.rb | 2 +- lib/onebox/engine/slideshare_onebox.rb | 2 +- lib/onebox/engine/stack_exchange_onebox.rb | 2 +- lib/onebox/engine/ted_onebox.rb | 2 +- lib/onebox/engine/viddler_onebox.rb | 2 +- lib/onebox/engine/vimeo_onebox.rb | 2 +- lib/onebox/engine/wikipedia_onebox.rb | 2 +- lib/onebox/engine/yfrog_onebox.rb | 2 +- 19 files changed, 19 insertions(+), 19 deletions(-) diff --git a/lib/onebox/engine/amazon_onebox.rb b/lib/onebox/engine/amazon_onebox.rb index b79b33be..11a0ab0e 100644 --- a/lib/onebox/engine/amazon_onebox.rb +++ b/lib/onebox/engine/amazon_onebox.rb @@ -10,7 +10,7 @@ class AmazonOnebox private - def record + def data { url: @url, name: raw.css("html body h1").inner_text, diff --git a/lib/onebox/engine/bliptv_onebox.rb b/lib/onebox/engine/bliptv_onebox.rb index 781ec8ed..f3375031 100644 --- a/lib/onebox/engine/bliptv_onebox.rb +++ b/lib/onebox/engine/bliptv_onebox.rb @@ -11,7 +11,7 @@ class BliptvOnebox private - def record + def data { url: @url, title: raw.title, diff --git a/lib/onebox/engine/clikthrough_onebox.rb b/lib/onebox/engine/clikthrough_onebox.rb index 858a46bc..f2c9d450 100644 --- a/lib/onebox/engine/clikthrough_onebox.rb +++ b/lib/onebox/engine/clikthrough_onebox.rb @@ -11,7 +11,7 @@ class ClikThroughOnebox private - def record + def data { url: @url, title: raw.title, diff --git a/lib/onebox/engine/college_humor_onebox.rb b/lib/onebox/engine/college_humor_onebox.rb index 50c21ac2..3a2163e3 100644 --- a/lib/onebox/engine/college_humor_onebox.rb +++ b/lib/onebox/engine/college_humor_onebox.rb @@ -11,7 +11,7 @@ class CollegeHumorOnebox private - def record + def data { url: @url, title: raw.title, diff --git a/lib/onebox/engine/dailymotion_onebox.rb b/lib/onebox/engine/dailymotion_onebox.rb index 2dd3d609..bfed1993 100644 --- a/lib/onebox/engine/dailymotion_onebox.rb +++ b/lib/onebox/engine/dailymotion_onebox.rb @@ -11,7 +11,7 @@ class DailymotionOnebox private - def record + def data { url: @url, title: raw.title, diff --git a/lib/onebox/engine/dotsub_onebox.rb b/lib/onebox/engine/dotsub_onebox.rb index 3552dff6..a7dfa5c6 100644 --- a/lib/onebox/engine/dotsub_onebox.rb +++ b/lib/onebox/engine/dotsub_onebox.rb @@ -11,7 +11,7 @@ class DotsubOnebox private - def record + def data { url: raw.metadata[:url].first[:_value], title: raw.title, diff --git a/lib/onebox/engine/flickr_onebox.rb b/lib/onebox/engine/flickr_onebox.rb index 66e6f6f5..d2bb8171 100644 --- a/lib/onebox/engine/flickr_onebox.rb +++ b/lib/onebox/engine/flickr_onebox.rb @@ -11,7 +11,7 @@ class FlickrOnebox private - def record + def data { url: @url, title: raw.title, diff --git a/lib/onebox/engine/funny_or_die_onebox.rb b/lib/onebox/engine/funny_or_die_onebox.rb index 2d4475e7..67e3e31e 100644 --- a/lib/onebox/engine/funny_or_die_onebox.rb +++ b/lib/onebox/engine/funny_or_die_onebox.rb @@ -11,7 +11,7 @@ class FunnyOrDieOnebox private - def record + def data { url: @url, title: raw.title, diff --git a/lib/onebox/engine/hulu_onebox.rb b/lib/onebox/engine/hulu_onebox.rb index c930951a..59048126 100644 --- a/lib/onebox/engine/hulu_onebox.rb +++ b/lib/onebox/engine/hulu_onebox.rb @@ -11,7 +11,7 @@ class HuluOnebox private - def record + def data { url: @url, title: raw.title, diff --git a/lib/onebox/engine/nfb_onebox.rb b/lib/onebox/engine/nfb_onebox.rb index a0e2964c..94b0714a 100644 --- a/lib/onebox/engine/nfb_onebox.rb +++ b/lib/onebox/engine/nfb_onebox.rb @@ -11,7 +11,7 @@ class NFBOnebox private - def record + def data { url: @url, title: raw.title, diff --git a/lib/onebox/engine/qik_onebox.rb b/lib/onebox/engine/qik_onebox.rb index ea95f64f..8d6bd4b4 100644 --- a/lib/onebox/engine/qik_onebox.rb +++ b/lib/onebox/engine/qik_onebox.rb @@ -10,7 +10,7 @@ class QikOnebox private - def record + def data { url: @url, title: raw.css(".info h2").inner_text, diff --git a/lib/onebox/engine/revision3_onebox.rb b/lib/onebox/engine/revision3_onebox.rb index b8816b19..809b5ce8 100644 --- a/lib/onebox/engine/revision3_onebox.rb +++ b/lib/onebox/engine/revision3_onebox.rb @@ -11,7 +11,7 @@ class Revision3Onebox private - def record + def data { url: @url, title: raw.title, diff --git a/lib/onebox/engine/slideshare_onebox.rb b/lib/onebox/engine/slideshare_onebox.rb index 5db8df33..0aea8b9d 100644 --- a/lib/onebox/engine/slideshare_onebox.rb +++ b/lib/onebox/engine/slideshare_onebox.rb @@ -11,7 +11,7 @@ class SlideshareOnebox private - def record + def data { url: @url, title: raw.title, diff --git a/lib/onebox/engine/stack_exchange_onebox.rb b/lib/onebox/engine/stack_exchange_onebox.rb index 7cfdef87..72bda922 100644 --- a/lib/onebox/engine/stack_exchange_onebox.rb +++ b/lib/onebox/engine/stack_exchange_onebox.rb @@ -10,7 +10,7 @@ class StackExchangeOnebox private - def record + def data { url: @url, title: raw.css(".question-hyperlink").inner_text, diff --git a/lib/onebox/engine/ted_onebox.rb b/lib/onebox/engine/ted_onebox.rb index eb24e7d7..eed69a50 100644 --- a/lib/onebox/engine/ted_onebox.rb +++ b/lib/onebox/engine/ted_onebox.rb @@ -11,7 +11,7 @@ class TedOnebox private - def record + def data { url: @url, title: raw.title, diff --git a/lib/onebox/engine/viddler_onebox.rb b/lib/onebox/engine/viddler_onebox.rb index c1d7bdff..b15cd021 100644 --- a/lib/onebox/engine/viddler_onebox.rb +++ b/lib/onebox/engine/viddler_onebox.rb @@ -11,7 +11,7 @@ class ViddlerOnebox private - def record + def data { url: @url, title: raw.title, diff --git a/lib/onebox/engine/vimeo_onebox.rb b/lib/onebox/engine/vimeo_onebox.rb index cd2dfd82..9db9e7cd 100644 --- a/lib/onebox/engine/vimeo_onebox.rb +++ b/lib/onebox/engine/vimeo_onebox.rb @@ -11,7 +11,7 @@ class VimeoOnebox private - def record + def data { url: @url, title: raw.title, diff --git a/lib/onebox/engine/wikipedia_onebox.rb b/lib/onebox/engine/wikipedia_onebox.rb index 5a4fc3b2..73cad346 100644 --- a/lib/onebox/engine/wikipedia_onebox.rb +++ b/lib/onebox/engine/wikipedia_onebox.rb @@ -10,7 +10,7 @@ class WikipediaOnebox private - def record + def data { url: @url, name: raw.css("html body h1").inner_text, diff --git a/lib/onebox/engine/yfrog_onebox.rb b/lib/onebox/engine/yfrog_onebox.rb index 3ec5f885..207e125c 100644 --- a/lib/onebox/engine/yfrog_onebox.rb +++ b/lib/onebox/engine/yfrog_onebox.rb @@ -11,7 +11,7 @@ class YfrogOnebox private - def record + def data { url: @url, title: raw.title, From 86e40bca1112f7c2c10586f3f67a647a4ec0dad9 Mon Sep 17 00:00:00 2001 From: jzeta Date: Wed, 4 Sep 2013 22:39:50 -0700 Subject: [PATCH 34/48] restore correct link urls in onebox specs #55 --- spec/lib/onebox/engine/dotsub_spec.rb | 2 +- spec/lib/onebox/engine/revision3_spec.rb | 2 +- spec/lib/onebox/engine/sound_cloud_spec.rb | 2 +- spec/lib/onebox/engine/wikipedia_spec.rb | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/spec/lib/onebox/engine/dotsub_spec.rb b/spec/lib/onebox/engine/dotsub_spec.rb index 45e78326..d3abf7ae 100644 --- a/spec/lib/onebox/engine/dotsub_spec.rb +++ b/spec/lib/onebox/engine/dotsub_spec.rb @@ -1,7 +1,7 @@ require "spec_helper" describe Onebox::Engine::DotsubOnebox do - let(:link) { "http://funnyordie.com" } + let(:link) { "http://dotsub.com" } it_behaves_like "engines" diff --git a/spec/lib/onebox/engine/revision3_spec.rb b/spec/lib/onebox/engine/revision3_spec.rb index 35a1b49b..acc877ee 100644 --- a/spec/lib/onebox/engine/revision3_spec.rb +++ b/spec/lib/onebox/engine/revision3_spec.rb @@ -1,7 +1,7 @@ require "spec_helper" describe Onebox::Engine::Revision3Onebox do - let(:link) { "http://collegehumor.com" } + let(:link) { "http://revision3.com" } it_behaves_like "engines" diff --git a/spec/lib/onebox/engine/sound_cloud_spec.rb b/spec/lib/onebox/engine/sound_cloud_spec.rb index 8bef2d7b..22e8e457 100644 --- a/spec/lib/onebox/engine/sound_cloud_spec.rb +++ b/spec/lib/onebox/engine/sound_cloud_spec.rb @@ -1,7 +1,7 @@ require "spec_helper" describe Onebox::Engine::SoundCloudOnebox do - let(:link) { "http://dailymotion.com" } + let(:link) { "http://soundcloud.com" } it_behaves_like "engines" diff --git a/spec/lib/onebox/engine/wikipedia_spec.rb b/spec/lib/onebox/engine/wikipedia_spec.rb index 413bba25..6193fa7c 100644 --- a/spec/lib/onebox/engine/wikipedia_spec.rb +++ b/spec/lib/onebox/engine/wikipedia_spec.rb @@ -1,7 +1,7 @@ require "spec_helper" describe Onebox::Engine::WikipediaOnebox do - let(:link) { "http://example.com" } + let(:link) { "http://wikipedia.com" } it_behaves_like "engines" From 186ed3fae07d4e1887568cd86e66b12fb3d3d852 Mon Sep 17 00:00:00 2001 From: jzeta Date: Wed, 4 Sep 2013 23:09:46 -0700 Subject: [PATCH 35/48] move fake web to global scope in onebox specs so tests use fixtures #55 --- lib/onebox/engine/amazon_onebox.rb | 8 ++++---- spec/lib/onebox/engine/amazon_spec.rb | 7 +++---- spec/lib/onebox/engine/bliptv_spec.rb | 7 +++---- spec/lib/onebox/engine/clikthrough_spec.rb | 7 +++---- spec/lib/onebox/engine/college_humor_spec.rb | 7 +++---- spec/lib/onebox/engine/dailymotion_spec.rb | 7 +++---- spec/lib/onebox/engine/dotsub_spec.rb | 7 +++---- spec/lib/onebox/engine/example_spec.rb | 7 +++---- spec/lib/onebox/engine/flickr_spec.rb | 7 +++---- spec/lib/onebox/engine/funny_or_die_spec.rb | 7 +++---- spec/lib/onebox/engine/hulu_spec.rb | 7 +++---- spec/lib/onebox/engine/nfb_spec.rb | 7 +++---- spec/lib/onebox/engine/qik_spec.rb | 7 +++---- spec/lib/onebox/engine/revision3_spec.rb | 7 +++---- spec/lib/onebox/engine/slideshare_spec.rb | 7 +++---- spec/lib/onebox/engine/sound_cloud_spec.rb | 7 +++---- spec/lib/onebox/engine/stack_exchange_spec.rb | 11 +++++------ spec/lib/onebox/engine/ted_spec.rb | 7 +++---- spec/lib/onebox/engine/viddler_spec.rb | 7 +++---- spec/lib/onebox/engine/vimeo_spec.rb | 7 +++---- spec/lib/onebox/engine/wikipedia_spec.rb | 7 +++---- spec/lib/onebox/engine/yfrog_spec.rb | 7 +++---- 22 files changed, 69 insertions(+), 90 deletions(-) diff --git a/lib/onebox/engine/amazon_onebox.rb b/lib/onebox/engine/amazon_onebox.rb index 11a0ab0e..104b7ecf 100644 --- a/lib/onebox/engine/amazon_onebox.rb +++ b/lib/onebox/engine/amazon_onebox.rb @@ -13,10 +13,10 @@ class AmazonOnebox def data { url: @url, - name: raw.css("html body h1").inner_text, - image: raw.css("html body #main-image").first["src"], - description: raw.css("html body #postBodyPS").inner_text, - price: raw.css("html body .priceLarge").inner_text + name: raw.css("h1").inner_text, + image: raw.css("#main-image").first["src"], + description: raw.css("#postBodyPS").inner_text, + price: raw.css(".priceLarge").inner_text } end end diff --git a/spec/lib/onebox/engine/amazon_spec.rb b/spec/lib/onebox/engine/amazon_spec.rb index 7bb26501..55f471eb 100644 --- a/spec/lib/onebox/engine/amazon_spec.rb +++ b/spec/lib/onebox/engine/amazon_spec.rb @@ -2,16 +2,15 @@ describe Onebox::Engine::AmazonOnebox do let(:link) { "http://amazon.com" } + before do + fake(link, response("amazon.response")) + end it_behaves_like "engines" describe "#to_html" do let(:html) { described_class.new(link).to_html } - before do - fake(link, response("amazon.response")) - end - it "returns the product title" do expect(html).to include("Knit Noro: Accessories: 30 Colorful Little Knits [Hardcover]") end diff --git a/spec/lib/onebox/engine/bliptv_spec.rb b/spec/lib/onebox/engine/bliptv_spec.rb index 4d9e417b..4254d3bd 100644 --- a/spec/lib/onebox/engine/bliptv_spec.rb +++ b/spec/lib/onebox/engine/bliptv_spec.rb @@ -2,16 +2,15 @@ describe Onebox::Engine::BliptvOnebox do let(:link) { "http://blip.tv" } + before do + fake(link, response("bliptv.response")) + end it_behaves_like "engines" describe "#to_html" do let(:html) { described_class.new(link).to_html } - before do - fake(link, response("bliptv.response")) - end - it "returns video title" do expect(html).to include("SC2L Week 3 - Axiom vs Acer G6") end diff --git a/spec/lib/onebox/engine/clikthrough_spec.rb b/spec/lib/onebox/engine/clikthrough_spec.rb index d380cb56..2c72dd10 100644 --- a/spec/lib/onebox/engine/clikthrough_spec.rb +++ b/spec/lib/onebox/engine/clikthrough_spec.rb @@ -2,16 +2,15 @@ describe Onebox::Engine::ClikThroughOnebox do let(:link) { "http://www.clickthough.com"} + before do + fake(link, response("clikthrough.response")) + end it_behaves_like "engines" describe "#to_html" do let(:html) { described_class.new(link).to_html } - before do - fake(link, response("clikthrough.response")) - end - it "returns video title" do expect(html).to include("Keri Hilson - Knock You Down") end diff --git a/spec/lib/onebox/engine/college_humor_spec.rb b/spec/lib/onebox/engine/college_humor_spec.rb index a622ecf7..d3810678 100644 --- a/spec/lib/onebox/engine/college_humor_spec.rb +++ b/spec/lib/onebox/engine/college_humor_spec.rb @@ -2,16 +2,15 @@ describe Onebox::Engine::CollegeHumorOnebox do let(:link) { "http://collegehumor.com" } + before do + fake(link, response("collegehumor.response")) + end it_behaves_like "engines" describe "#to_html" do let(:html) { described_class.new(link).to_html } - before do - fake(link, response("collegehumor.response")) - end - it "returns video title" do expect(html).to include("Mitt Romney Style (Gangnam Style Parody)") end diff --git a/spec/lib/onebox/engine/dailymotion_spec.rb b/spec/lib/onebox/engine/dailymotion_spec.rb index d33b233d..2d7ba193 100644 --- a/spec/lib/onebox/engine/dailymotion_spec.rb +++ b/spec/lib/onebox/engine/dailymotion_spec.rb @@ -2,16 +2,15 @@ describe Onebox::Engine::DailymotionOnebox do let(:link) { "http://dailymotion.com" } + before do + fake(link, response("dailymotion.response")) + end it_behaves_like "engines" describe "#to_html" do let(:html) { described_class.new(link).to_html } - before do - fake(link, response("dailymotion.response")) - end - it "returns video title" do expect(html).to include("Two Door Cinema Club - Les Vielles Charrues 2013.") end diff --git a/spec/lib/onebox/engine/dotsub_spec.rb b/spec/lib/onebox/engine/dotsub_spec.rb index d3abf7ae..d938c9cd 100644 --- a/spec/lib/onebox/engine/dotsub_spec.rb +++ b/spec/lib/onebox/engine/dotsub_spec.rb @@ -2,16 +2,15 @@ describe Onebox::Engine::DotsubOnebox do let(:link) { "http://dotsub.com" } + before do + fake(link, response("dotsub.response")) + end it_behaves_like "engines" describe "#to_html" do let(:html) { described_class.new(link).to_html } - before do - fake(link, response("dotsub.response")) - end - it "returns video title" do expect(html).to include("Twitter in Plain English") end diff --git a/spec/lib/onebox/engine/example_spec.rb b/spec/lib/onebox/engine/example_spec.rb index b21a6d75..29fd7b4e 100644 --- a/spec/lib/onebox/engine/example_spec.rb +++ b/spec/lib/onebox/engine/example_spec.rb @@ -2,16 +2,15 @@ describe Onebox::Engine::ExampleOnebox do let(:link) { "http://example.com" } + before do + fake(link, response("example.response")) + end it_behaves_like "engines" describe "#to_html" do let(:html) { described_class.new(link).to_html } - before do - fake(link, response("example.response")) - end - it "returns template if given valid data" do expect(html).to include(onebox_view("Example Domain 1")) end diff --git a/spec/lib/onebox/engine/flickr_spec.rb b/spec/lib/onebox/engine/flickr_spec.rb index 1d61f6aa..4c526108 100644 --- a/spec/lib/onebox/engine/flickr_spec.rb +++ b/spec/lib/onebox/engine/flickr_spec.rb @@ -2,16 +2,15 @@ describe Onebox::Engine::FlickrOnebox do let(:link) { "http://flickr.com" } + before do + fake(link, response("flickr.response")) + end it_behaves_like "engines" describe "#to_html" do let(:html) { described_class.new(link).to_html } - before do - fake(link, response("flickr.response")) - end - it "returns photo title" do expect(html).to include("Los Angeles View 2011") end diff --git a/spec/lib/onebox/engine/funny_or_die_spec.rb b/spec/lib/onebox/engine/funny_or_die_spec.rb index f34ba03d..31a816c5 100644 --- a/spec/lib/onebox/engine/funny_or_die_spec.rb +++ b/spec/lib/onebox/engine/funny_or_die_spec.rb @@ -2,16 +2,15 @@ describe Onebox::Engine::FunnyOrDieOnebox do let(:link) { "http://funnyordie.com" } + before do + fake(link, response("funnyordie.response")) + end it_behaves_like "engines" describe "#to_html" do let(:html) { described_class.new(link).to_html } - before do - fake(link, response("funnyordie.response")) - end - it "returns video title" do expect(html).to include("The Landlord") end diff --git a/spec/lib/onebox/engine/hulu_spec.rb b/spec/lib/onebox/engine/hulu_spec.rb index 4d6f051d..16402659 100644 --- a/spec/lib/onebox/engine/hulu_spec.rb +++ b/spec/lib/onebox/engine/hulu_spec.rb @@ -2,16 +2,15 @@ describe Onebox::Engine::HuluOnebox do let(:link) { "http://hulu.com" } + before do + fake(link, response("hulu.response")) + end it_behaves_like "engines" describe "#to_html" do let(:html) { described_class.new(link).to_html } - before do - fake(link, response("hulu.response")) - end - it "returns video title" do expect(html).to include("The Awesomes: Pilot, Part 1") end diff --git a/spec/lib/onebox/engine/nfb_spec.rb b/spec/lib/onebox/engine/nfb_spec.rb index 244398e6..5b35bd07 100644 --- a/spec/lib/onebox/engine/nfb_spec.rb +++ b/spec/lib/onebox/engine/nfb_spec.rb @@ -2,16 +2,15 @@ describe Onebox::Engine::NFBOnebox do let(:link) { "http://nfb.ca" } + before do + fake(link, response("nfb.response")) + end it_behaves_like "engines" describe "#to_html" do let(:html) { described_class.new(link).to_html } - before do - fake(link, response("nfb.response")) - end - it "returns video title" do expect(html).to include("Overdose") end diff --git a/spec/lib/onebox/engine/qik_spec.rb b/spec/lib/onebox/engine/qik_spec.rb index f2006671..460896ba 100644 --- a/spec/lib/onebox/engine/qik_spec.rb +++ b/spec/lib/onebox/engine/qik_spec.rb @@ -2,16 +2,15 @@ describe Onebox::Engine::QikOnebox do let(:link) { "http://qik.com" } + before do + fake(link, response("qik.response")) + end it_behaves_like "engines" describe "#to_html" do let(:html) { described_class.new(link).to_html } - before do - fake(link, response("qik.response")) - end - it "returns the video title" do expect(html).to include("20910") end diff --git a/spec/lib/onebox/engine/revision3_spec.rb b/spec/lib/onebox/engine/revision3_spec.rb index acc877ee..4fefbe73 100644 --- a/spec/lib/onebox/engine/revision3_spec.rb +++ b/spec/lib/onebox/engine/revision3_spec.rb @@ -2,16 +2,15 @@ describe Onebox::Engine::Revision3Onebox do let(:link) { "http://revision3.com" } + before do + fake(link, response("revision3.response")) + end it_behaves_like "engines" describe "#to_html" do let(:html) { described_class.new(link).to_html } - before do - fake(link, response("revision3.response")) - end - it "returns video title" do expect(html).to include("Blue Shark Bites Diver's Arm") end diff --git a/spec/lib/onebox/engine/slideshare_spec.rb b/spec/lib/onebox/engine/slideshare_spec.rb index 24a59167..312cad51 100644 --- a/spec/lib/onebox/engine/slideshare_spec.rb +++ b/spec/lib/onebox/engine/slideshare_spec.rb @@ -2,16 +2,15 @@ describe Onebox::Engine::SlideshareOnebox do let(:link) { "http://slideshare.net" } + before do + fake(link, response("slideshare.response")) + end it_behaves_like "engines" describe "#to_html" do let(:html) { described_class.new(link).to_html } - before do - fake(link, response("slideshare.response")) - end - it "returns presentation title" do expect(html).to include("12 Local Traditions That") end diff --git a/spec/lib/onebox/engine/sound_cloud_spec.rb b/spec/lib/onebox/engine/sound_cloud_spec.rb index 22e8e457..6863509d 100644 --- a/spec/lib/onebox/engine/sound_cloud_spec.rb +++ b/spec/lib/onebox/engine/sound_cloud_spec.rb @@ -2,16 +2,15 @@ describe Onebox::Engine::SoundCloudOnebox do let(:link) { "http://soundcloud.com" } + before do + fake(link, response("soundcloud.response")) + end it_behaves_like "engines" describe "#to_html" do let(:html) { described_class.new(link).to_html } - before do - fake(link, response("soundcloud.response")) - end - it "returns video title" do expect(html).to include("Penguin Prison - Worse It Gets (RAC Mix)") end diff --git a/spec/lib/onebox/engine/stack_exchange_spec.rb b/spec/lib/onebox/engine/stack_exchange_spec.rb index 62d8c90c..edcab6fb 100644 --- a/spec/lib/onebox/engine/stack_exchange_spec.rb +++ b/spec/lib/onebox/engine/stack_exchange_spec.rb @@ -1,17 +1,16 @@ require "spec_helper" describe Onebox::Engine::StackExchangeOnebox do - let(:link) { "http://stackexchange.com" } + let(:link) { "http://stackexchange.com" } + before do + fake(link, response("stackexchange.response")) + end - it_behaves_like "engines" + it_behaves_like "engines" describe "#to_html" do let(:html) { described_class.new(link).to_html } - before do - fake(link, response("stackexchange.response")) - end - it "returns the question title" do expect(html).to include("Concept behind these 4 lines of tricky C++ code") end diff --git a/spec/lib/onebox/engine/ted_spec.rb b/spec/lib/onebox/engine/ted_spec.rb index 613e6beb..33941e95 100644 --- a/spec/lib/onebox/engine/ted_spec.rb +++ b/spec/lib/onebox/engine/ted_spec.rb @@ -2,16 +2,15 @@ describe Onebox::Engine::TedOnebox do let(:link) { "http://ted.com" } + before do + fake(link, response("ted.response")) + end it_behaves_like "engines" describe "#to_html" do let(:html) { described_class.new(link).to_html } - before do - fake(link, response("ted.response")) - end - it "returns video title" do expect(html).to include("Eli Beer: The fastest ambulance? A motorcycle") end diff --git a/spec/lib/onebox/engine/viddler_spec.rb b/spec/lib/onebox/engine/viddler_spec.rb index 5cd8c7a6..b87b4631 100644 --- a/spec/lib/onebox/engine/viddler_spec.rb +++ b/spec/lib/onebox/engine/viddler_spec.rb @@ -2,16 +2,15 @@ describe Onebox::Engine::ViddlerOnebox do let(:link) { "http://viddler.com" } + before do + fake(link, response("viddler.response")) + end it_behaves_like "engines" describe "#to_html" do let(:html) { described_class.new(link).to_html } - before do - fake(link, response("viddler.response")) - end - it "returns video title" do expect(html).to include("Viddler Demo") end diff --git a/spec/lib/onebox/engine/vimeo_spec.rb b/spec/lib/onebox/engine/vimeo_spec.rb index 98111a43..20b34c5c 100644 --- a/spec/lib/onebox/engine/vimeo_spec.rb +++ b/spec/lib/onebox/engine/vimeo_spec.rb @@ -2,16 +2,15 @@ describe Onebox::Engine::VimeoOnebox do let(:link) { "http://vimeo.com" } + before do + fake(link, response("vimeo.response")) + end it_behaves_like "engines" describe "#to_html" do let(:html) { described_class.new(link).to_html } - before do - fake(link, response("vimeo.response")) - end - it "returns video title" do expect(html).to include("108 years of Herman Miller in 108 seconds") end diff --git a/spec/lib/onebox/engine/wikipedia_spec.rb b/spec/lib/onebox/engine/wikipedia_spec.rb index 6193fa7c..cd29df3c 100644 --- a/spec/lib/onebox/engine/wikipedia_spec.rb +++ b/spec/lib/onebox/engine/wikipedia_spec.rb @@ -2,16 +2,15 @@ describe Onebox::Engine::WikipediaOnebox do let(:link) { "http://wikipedia.com" } + before do + fake(link, response("wikipedia.response")) + end it_behaves_like "engines" describe "#to_html" do let(:html) { described_class.new(link).to_html } - before do - fake(link, response("wikipedia.response")) - end - it "returns the product URL" do expect(html).to include(link) end diff --git a/spec/lib/onebox/engine/yfrog_spec.rb b/spec/lib/onebox/engine/yfrog_spec.rb index 8def117c..3bbf8153 100644 --- a/spec/lib/onebox/engine/yfrog_spec.rb +++ b/spec/lib/onebox/engine/yfrog_spec.rb @@ -2,16 +2,15 @@ describe Onebox::Engine::YfrogOnebox do let(:link) { "http://yfrog.com" } + before do + fake(link, response("yfrog.response")) + end it_behaves_like "engines" describe "#to_html" do let(:html) { described_class.new(link).to_html } - before do - fake(link, response("yfrog.response")) - end - it "returns photo title" do expect(html).to include("Celebrating @questlove Cook4Quest w/WyattCenac") end From ce24a3a4cfb1670c8281b71decf6978ac1e680fc Mon Sep 17 00:00:00 2001 From: jzeta Date: Wed, 4 Sep 2013 23:15:07 -0700 Subject: [PATCH 36/48] make raw method in opengraph module private b/c engine specifies private raw method #55 --- lib/onebox/engine/open_graph.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/onebox/engine/open_graph.rb b/lib/onebox/engine/open_graph.rb index b722869d..5f9c7f8e 100644 --- a/lib/onebox/engine/open_graph.rb +++ b/lib/onebox/engine/open_graph.rb @@ -1,6 +1,8 @@ module Onebox module Engine module OpenGraph + private + def raw @raw ||= ::OpenGraph.new(@url) end From 3f898ee63c9a2d375dfca545ddb95e228d9fb1b9 Mon Sep 17 00:00:00 2001 From: vykster Date: Thu, 5 Sep 2013 20:50:10 -0700 Subject: [PATCH 37/48] change images selector in data method to use array#first as it is more idiomatic #55 --- lib/onebox/engine/bliptv_onebox.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/onebox/engine/bliptv_onebox.rb b/lib/onebox/engine/bliptv_onebox.rb index f3375031..ae5e8af2 100644 --- a/lib/onebox/engine/bliptv_onebox.rb +++ b/lib/onebox/engine/bliptv_onebox.rb @@ -15,7 +15,7 @@ def data { url: @url, title: raw.title, - image: raw.images[0], + image: raw.images.first, description: raw.description, video: raw.metadata[:video].first[:_value] } From 559abf32e4c3a7167ec7827eb5578064881b2298 Mon Sep 17 00:00:00 2001 From: vykster Date: Thu, 5 Sep 2013 20:51:32 -0700 Subject: [PATCH 38/48] change image selector in data method to use array#first as it is more idiomatic #55 --- lib/onebox/engine/college_humor_onebox.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/onebox/engine/college_humor_onebox.rb b/lib/onebox/engine/college_humor_onebox.rb index 3a2163e3..c8d0baa1 100644 --- a/lib/onebox/engine/college_humor_onebox.rb +++ b/lib/onebox/engine/college_humor_onebox.rb @@ -15,7 +15,7 @@ def data { url: @url, title: raw.title, - image: raw.images[0], + image: raw.images.first, description: raw.description, video: raw.metadata[:video].first[:_value] } From 61015f434145d40f910a3f3c4b8085f09d17ea61 Mon Sep 17 00:00:00 2001 From: vykster Date: Thu, 5 Sep 2013 20:53:01 -0700 Subject: [PATCH 39/48] change images selector in data method to use array#first as it is more idiomatic #55 --- lib/onebox/engine/flickr_onebox.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/onebox/engine/flickr_onebox.rb b/lib/onebox/engine/flickr_onebox.rb index d2bb8171..3c426673 100644 --- a/lib/onebox/engine/flickr_onebox.rb +++ b/lib/onebox/engine/flickr_onebox.rb @@ -15,7 +15,7 @@ def data { url: @url, title: raw.title, - image: raw.images[0], + image: raw.images.first, description: raw.description } end From f2b22697aa830e08fa29a23b1bbb71cdf56093d1 Mon Sep 17 00:00:00 2001 From: vykster Date: Thu, 5 Sep 2013 20:54:20 -0700 Subject: [PATCH 40/48] change image selector in data method to use array#first as it is more idiomatic #55 --- lib/onebox/engine/hulu_onebox.rb | 2 +- lib/onebox/engine/vimeo_onebox.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/onebox/engine/hulu_onebox.rb b/lib/onebox/engine/hulu_onebox.rb index 59048126..a9c49fd3 100644 --- a/lib/onebox/engine/hulu_onebox.rb +++ b/lib/onebox/engine/hulu_onebox.rb @@ -15,7 +15,7 @@ def data { url: @url, title: raw.title, - image: raw.images[0], + image: raw.images.first, description: raw.description, video: raw.metadata[:video][1][:_value] } diff --git a/lib/onebox/engine/vimeo_onebox.rb b/lib/onebox/engine/vimeo_onebox.rb index 9db9e7cd..0ee24809 100644 --- a/lib/onebox/engine/vimeo_onebox.rb +++ b/lib/onebox/engine/vimeo_onebox.rb @@ -15,7 +15,7 @@ def data { url: @url, title: raw.title, - image: raw.images[0], + image: raw.images.first, description: raw.description, video: raw.metadata[:video].first[:_value] } From d775c133be834fbb137ef31ad699346bd23de9b0 Mon Sep 17 00:00:00 2001 From: vykster Date: Thu, 5 Sep 2013 21:05:15 -0700 Subject: [PATCH 41/48] document template_name method #55 --- lib/onebox/engine.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/onebox/engine.rb b/lib/onebox/engine.rb index 595f4f1a..b5d9f42e 100644 --- a/lib/onebox/engine.rb +++ b/lib/onebox/engine.rb @@ -39,6 +39,7 @@ def template File.read(File.join("templates", "#{template_name}.handlebars")) end + # calculates handlebars template name for onebox using name of engine def template_name self.class.name.split("::").last.downcase.gsub(/onebox/, "") end From b3f71f021a89d19381b182d0634a23b450c086a5 Mon Sep 17 00:00:00 2001 From: jzeta Date: Fri, 6 Sep 2013 16:37:46 -0700 Subject: [PATCH 42/48] add documentation to #data in engine module #55 --- lib/onebox/engine.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/onebox/engine.rb b/lib/onebox/engine.rb index b5d9f42e..bc36bbee 100644 --- a/lib/onebox/engine.rb +++ b/lib/onebox/engine.rb @@ -44,6 +44,8 @@ def template_name self.class.name.split("::").last.downcase.gsub(/onebox/, "") end + # raises error if data method isn't defined in onebox engine + # in each onebox, returns hash of desired onebox content def data raise NoMethodError, "Engines need this method defined" end From 183b4c179edf821cdfb97c67748c6418962bcad4 Mon Sep 17 00:00:00 2001 From: jzeta Date: Fri, 6 Sep 2013 16:57:47 -0700 Subject: [PATCH 43/48] move raw method from Engine module to new HTML module to mimic OpenGraph behavior #55 --- lib/onebox/engine.rb | 2 +- lib/onebox/engine/html.rb | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 lib/onebox/engine/html.rb diff --git a/lib/onebox/engine.rb b/lib/onebox/engine.rb index bc36bbee..6060ebd0 100644 --- a/lib/onebox/engine.rb +++ b/lib/onebox/engine.rb @@ -32,7 +32,7 @@ def record end def raw - @raw ||= Nokogiri::HTML(open(@url)) + raise NoMethodError, "Engines need to implement this method" end def template diff --git a/lib/onebox/engine/html.rb b/lib/onebox/engine/html.rb new file mode 100644 index 00000000..5eab0dad --- /dev/null +++ b/lib/onebox/engine/html.rb @@ -0,0 +1,11 @@ +module Onebox + module Engine + module HTML + private + + def raw + @raw ||= ::OpenGraph.new(@url) + end + end + end +end From 9ec66d52029a0f5822c4f0d96343c4f96022e89a Mon Sep 17 00:00:00 2001 From: jzeta Date: Fri, 6 Sep 2013 16:59:13 -0700 Subject: [PATCH 44/48] include HTML module in oneboxes that use Nokogiri #55 --- lib/onebox/engine/amazon_onebox.rb | 1 + lib/onebox/engine/example_onebox.rb | 1 + lib/onebox/engine/qik_onebox.rb | 1 + lib/onebox/engine/stack_exchange_onebox.rb | 1 + lib/onebox/engine/wikipedia_onebox.rb | 1 + 5 files changed, 5 insertions(+) diff --git a/lib/onebox/engine/amazon_onebox.rb b/lib/onebox/engine/amazon_onebox.rb index 104b7ecf..338e8090 100644 --- a/lib/onebox/engine/amazon_onebox.rb +++ b/lib/onebox/engine/amazon_onebox.rb @@ -2,6 +2,7 @@ module Onebox module Engine class AmazonOnebox include Engine + include HTML matches do #/^https?:\/\/(?:www\.)?amazon.(com|ca)\/.*$/ diff --git a/lib/onebox/engine/example_onebox.rb b/lib/onebox/engine/example_onebox.rb index 4812b446..539faad5 100644 --- a/lib/onebox/engine/example_onebox.rb +++ b/lib/onebox/engine/example_onebox.rb @@ -2,6 +2,7 @@ module Onebox module Engine class ExampleOnebox include Engine + include HTML matches do find "example.com" diff --git a/lib/onebox/engine/qik_onebox.rb b/lib/onebox/engine/qik_onebox.rb index 8d6bd4b4..746705fc 100644 --- a/lib/onebox/engine/qik_onebox.rb +++ b/lib/onebox/engine/qik_onebox.rb @@ -2,6 +2,7 @@ module Onebox module Engine class QikOnebox include Engine + include HTML matches do # /^https?\:\/\/qik\.com\/video\/.*$/ diff --git a/lib/onebox/engine/stack_exchange_onebox.rb b/lib/onebox/engine/stack_exchange_onebox.rb index 72bda922..f4827bea 100644 --- a/lib/onebox/engine/stack_exchange_onebox.rb +++ b/lib/onebox/engine/stack_exchange_onebox.rb @@ -2,6 +2,7 @@ module Onebox module Engine class StackExchangeOnebox include Engine + include HTML matches do # /^http:\/\/(?:(?:(?\w*)\.)?(?\w*)\.)?(?#{DOMAINS.join('|')})\.com\/(?:questions|q)\/(?\d*)/ diff --git a/lib/onebox/engine/wikipedia_onebox.rb b/lib/onebox/engine/wikipedia_onebox.rb index 73cad346..b0cbfbe7 100644 --- a/lib/onebox/engine/wikipedia_onebox.rb +++ b/lib/onebox/engine/wikipedia_onebox.rb @@ -2,6 +2,7 @@ module Onebox module Engine class WikipediaOnebox include Engine + include HTML matches do # /^https?:\/\/.*wikipedia\.(com|org)\/.*$/ From 542e5c02648454b119a9c2f7c141a59dc249a63a Mon Sep 17 00:00:00 2001 From: jzeta Date: Fri, 6 Sep 2013 17:00:31 -0700 Subject: [PATCH 45/48] require HTML module in Engine module #55 --- lib/onebox/engine.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/onebox/engine.rb b/lib/onebox/engine.rb index 6060ebd0..c1a5f660 100644 --- a/lib/onebox/engine.rb +++ b/lib/onebox/engine.rb @@ -67,6 +67,7 @@ def matches(&block) end require_relative "engine/open_graph" +require_relative "engine/html" require_relative "engine/example_onebox" require_relative "engine/amazon_onebox" require_relative "engine/bliptv_onebox" From d9d39463c20e337e1d6920280d4f52d2e871cd1d Mon Sep 17 00:00:00 2001 From: jzeta Date: Fri, 6 Sep 2013 17:04:59 -0700 Subject: [PATCH 46/48] HTML module should be using Nokogiri, not OpenGraph, duh #55 --- lib/onebox/engine/html.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/onebox/engine/html.rb b/lib/onebox/engine/html.rb index 5eab0dad..ec1bc9e4 100644 --- a/lib/onebox/engine/html.rb +++ b/lib/onebox/engine/html.rb @@ -4,7 +4,7 @@ module HTML private def raw - @raw ||= ::OpenGraph.new(@url) + @raw ||= Nokogiri::HTML(open(@url)) end end end From 60c6287f7daba94c462a48f7cd784ba4a244068e Mon Sep 17 00:00:00 2001 From: jzeta Date: Fri, 6 Sep 2013 17:05:24 -0700 Subject: [PATCH 47/48] add documentation for #raw in Engine module #55 --- lib/onebox/engine.rb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/onebox/engine.rb b/lib/onebox/engine.rb index c1a5f660..a0438b23 100644 --- a/lib/onebox/engine.rb +++ b/lib/onebox/engine.rb @@ -31,6 +31,8 @@ def record end end + # raises error if not defined in onebox engine + # in each onebox, uses either Nokogiri or OpenGraph to get raw HTML from url def raw raise NoMethodError, "Engines need to implement this method" end @@ -44,7 +46,7 @@ def template_name self.class.name.split("::").last.downcase.gsub(/onebox/, "") end - # raises error if data method isn't defined in onebox engine + # raises error if not defined in onebox engine # in each onebox, returns hash of desired onebox content def data raise NoMethodError, "Engines need this method defined" From 0e515a886c69fe7d312a630a3fb478b2bd736844 Mon Sep 17 00:00:00 2001 From: jzeta Date: Mon, 9 Sep 2013 21:01:08 -0700 Subject: [PATCH 48/48] fix dotsub spec test for url. fixes #55 --- lib/onebox/engine/dotsub_onebox.rb | 2 +- spec/lib/onebox/engine/dotsub_spec.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/onebox/engine/dotsub_onebox.rb b/lib/onebox/engine/dotsub_onebox.rb index a7dfa5c6..a1a1d7af 100644 --- a/lib/onebox/engine/dotsub_onebox.rb +++ b/lib/onebox/engine/dotsub_onebox.rb @@ -13,7 +13,7 @@ class DotsubOnebox def data { - url: raw.metadata[:url].first[:_value], + url: @url, title: raw.title, image: raw.images.first, description: raw.description, diff --git a/spec/lib/onebox/engine/dotsub_spec.rb b/spec/lib/onebox/engine/dotsub_spec.rb index d938c9cd..3542a4b2 100644 --- a/spec/lib/onebox/engine/dotsub_spec.rb +++ b/spec/lib/onebox/engine/dotsub_spec.rb @@ -1,7 +1,7 @@ require "spec_helper" describe Onebox::Engine::DotsubOnebox do - let(:link) { "http://dotsub.com" } + let(:link) { "http://dotsub.com/view/665bd0d5-a9f4-4a07-9d9e-b31ba926ca78" } before do fake(link, response("dotsub.response")) end