onebox 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (127) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +17 -0
  3. data/.rspec +1 -0
  4. data/.rubocop.yml +476 -0
  5. data/.ruby-gemset +1 -0
  6. data/.ruby-version +1 -0
  7. data/.travis.yml +3 -0
  8. data/Gemfile +4 -0
  9. data/LICENSE.txt +22 -0
  10. data/README.md +92 -0
  11. data/Rakefile +22 -0
  12. data/lib/onebox.rb +33 -0
  13. data/lib/onebox/engine.rb +93 -0
  14. data/lib/onebox/engine/amazon_onebox.rb +25 -0
  15. data/lib/onebox/engine/bliptv_onebox.rb +26 -0
  16. data/lib/onebox/engine/clikthrough_onebox.rb +23 -0
  17. data/lib/onebox/engine/college_humor_onebox.rb +26 -0
  18. data/lib/onebox/engine/dailymotion_onebox.rb +26 -0
  19. data/lib/onebox/engine/dotsub_onebox.rb +25 -0
  20. data/lib/onebox/engine/example_onebox.rb +25 -0
  21. data/lib/onebox/engine/flickr_onebox.rb +25 -0
  22. data/lib/onebox/engine/funny_or_die_onebox.rb +26 -0
  23. data/lib/onebox/engine/html.rb +11 -0
  24. data/lib/onebox/engine/hulu_onebox.rb +26 -0
  25. data/lib/onebox/engine/nfb_onebox.rb +25 -0
  26. data/lib/onebox/engine/open_graph.rb +11 -0
  27. data/lib/onebox/engine/qik_onebox.rb +23 -0
  28. data/lib/onebox/engine/revision3_onebox.rb +26 -0
  29. data/lib/onebox/engine/slideshare_onebox.rb +25 -0
  30. data/lib/onebox/engine/sound_cloud_onebox.rb +25 -0
  31. data/lib/onebox/engine/stack_exchange_onebox.rb +23 -0
  32. data/lib/onebox/engine/ted_onebox.rb +25 -0
  33. data/lib/onebox/engine/viddler_onebox.rb +26 -0
  34. data/lib/onebox/engine/vimeo_onebox.rb +26 -0
  35. data/lib/onebox/engine/wikipedia_onebox.rb +24 -0
  36. data/lib/onebox/engine/yfrog_onebox.rb +25 -0
  37. data/lib/onebox/matcher.rb +13 -0
  38. data/lib/onebox/preview.rb +31 -0
  39. data/lib/onebox/version.rb +3 -0
  40. data/onebox.gemspec +36 -0
  41. data/spec/fixtures/amazon.response +3098 -0
  42. data/spec/fixtures/android.response +138 -0
  43. data/spec/fixtures/apple.response +391 -0
  44. data/spec/fixtures/bliptv.response +724 -0
  45. data/spec/fixtures/clickthrough.response +1472 -0
  46. data/spec/fixtures/clikthrough.response +1472 -0
  47. data/spec/fixtures/collegehumor.response +1272 -0
  48. data/spec/fixtures/dailymotion.response +575 -0
  49. data/spec/fixtures/dotsub.response +1257 -0
  50. data/spec/fixtures/example.response +50 -0
  51. data/spec/fixtures/flickr.response +1292 -0
  52. data/spec/fixtures/funnyordie.response +2010 -0
  53. data/spec/fixtures/gist.response +282 -0
  54. data/spec/fixtures/github_blob.response +706 -0
  55. data/spec/fixtures/github_commit.response +881 -0
  56. data/spec/fixtures/github_pullrequest.response +1619 -0
  57. data/spec/fixtures/hulu.response +339 -0
  58. data/spec/fixtures/image.response +0 -0
  59. data/spec/fixtures/imgur.response +892 -0
  60. data/spec/fixtures/kinomap.response +299 -0
  61. data/spec/fixtures/nfb.response +810 -0
  62. data/spec/fixtures/opengraph.response +27 -0
  63. data/spec/fixtures/qik.response +371 -0
  64. data/spec/fixtures/revision3.response +985 -0
  65. data/spec/fixtures/rottentomatoes_fresh.response +3275 -0
  66. data/spec/fixtures/rottentomatoes_incomplete.response +2313 -0
  67. data/spec/fixtures/rottentomatoes_rotten.response +3549 -0
  68. data/spec/fixtures/slideshare.response +1745 -0
  69. data/spec/fixtures/soundcloud.response +1409 -0
  70. data/spec/fixtures/stackexchange.response +1889 -0
  71. data/spec/fixtures/ted.response +1341 -0
  72. data/spec/fixtures/twitter.response +1712 -0
  73. data/spec/fixtures/viddler.response +442 -0
  74. data/spec/fixtures/video.response +0 -0
  75. data/spec/fixtures/vimeo.response +571 -0
  76. data/spec/fixtures/wikipedia.response +1236 -0
  77. data/spec/fixtures/wikipedia_redirected.response +899 -0
  78. data/spec/fixtures/yfrog.response +464 -0
  79. data/spec/lib/onebox/engine/amazon_spec.rb +34 -0
  80. data/spec/lib/onebox/engine/bliptv_spec.rb +34 -0
  81. data/spec/lib/onebox/engine/clikthrough_spec.rb +26 -0
  82. data/spec/lib/onebox/engine/college_humor_spec.rb +34 -0
  83. data/spec/lib/onebox/engine/dailymotion_spec.rb +36 -0
  84. data/spec/lib/onebox/engine/dotsub_spec.rb +36 -0
  85. data/spec/lib/onebox/engine/example_spec.rb +18 -0
  86. data/spec/lib/onebox/engine/flickr_spec.rb +30 -0
  87. data/spec/lib/onebox/engine/funny_or_die_spec.rb +34 -0
  88. data/spec/lib/onebox/engine/hulu_spec.rb +34 -0
  89. data/spec/lib/onebox/engine/nfb_spec.rb +35 -0
  90. data/spec/lib/onebox/engine/qik_spec.rb +35 -0
  91. data/spec/lib/onebox/engine/revision3_spec.rb +36 -0
  92. data/spec/lib/onebox/engine/slideshare_spec.rb +30 -0
  93. data/spec/lib/onebox/engine/sound_cloud_spec.rb +36 -0
  94. data/spec/lib/onebox/engine/stack_exchange_spec.rb +27 -0
  95. data/spec/lib/onebox/engine/ted_spec.rb +30 -0
  96. data/spec/lib/onebox/engine/viddler_spec.rb +36 -0
  97. data/spec/lib/onebox/engine/vimeo_spec.rb +34 -0
  98. data/spec/lib/onebox/engine/wikipedia_spec.rb +30 -0
  99. data/spec/lib/onebox/engine/yfrog_spec.rb +30 -0
  100. data/spec/lib/onebox/engine_spec.rb +78 -0
  101. data/spec/lib/onebox/matcher_spec.rb +20 -0
  102. data/spec/lib/onebox/preview_spec.rb +21 -0
  103. data/spec/lib/onebox_spec.rb +49 -0
  104. data/spec/spec_helper.rb +26 -0
  105. data/spec/support/html_spec_helper.rb +17 -0
  106. data/templates/amazon.handlebars +9 -0
  107. data/templates/bliptv.handlebars +10 -0
  108. data/templates/clickthrough.handlebars +8 -0
  109. data/templates/clikthrough.handlebars +8 -0
  110. data/templates/collegehumor.handlebars +9 -0
  111. data/templates/dailymotion.handlebars +9 -0
  112. data/templates/dotsub.handlebars +9 -0
  113. data/templates/flickr.handlebars +8 -0
  114. data/templates/funnyordie.handlebars +9 -0
  115. data/templates/hulu.handlebars +9 -0
  116. data/templates/nfb.handlebars +8 -0
  117. data/templates/qik.handlebars +7 -0
  118. data/templates/revision3.handlebars +9 -0
  119. data/templates/slideshare.handlebars +8 -0
  120. data/templates/soundcloud.handlebars +9 -0
  121. data/templates/stackexchange.handlebars +7 -0
  122. data/templates/ted.handlebars +8 -0
  123. data/templates/viddler.handlebars +9 -0
  124. data/templates/vimeo.handlebars +9 -0
  125. data/templates/wikipedia.handlebars +8 -0
  126. data/templates/yfrog.handlebars +8 -0
  127. metadata +447 -0
@@ -0,0 +1,34 @@
1
+ require "spec_helper"
2
+
3
+ describe Onebox::Engine::AmazonOnebox do
4
+ let(:link) { "http://amazon.com" }
5
+ before do
6
+ fake(link, response("amazon.response"))
7
+ end
8
+
9
+ it_behaves_like "engines"
10
+
11
+ describe "#to_html" do
12
+ let(:html) { described_class.new(link).to_html }
13
+
14
+ it "returns the product title" do
15
+ expect(html).to include("Knit Noro: Accessories: 30 Colorful Little Knits [Hardcover]")
16
+ end
17
+
18
+ it "returns the product image" do
19
+ expect(html).to include("61mI3YmHVnL._BO2,204,203,200_PIsitb-sticker-arrow-click,TopRight,35,-76_AA300_SH20_OU01_.jpg")
20
+ end
21
+
22
+ it "returns the product description" do
23
+ expect(html).to include("Using only the finest natural materials and ecologically sound")
24
+ end
25
+
26
+ it "returns the product price" do
27
+ expect(html).to include("$18.77")
28
+ end
29
+
30
+ it "returns the product URL" do
31
+ expect(html).to include(link)
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,34 @@
1
+ require "spec_helper"
2
+
3
+ describe Onebox::Engine::BliptvOnebox do
4
+ let(:link) { "http://blip.tv" }
5
+ before do
6
+ fake(link, response("bliptv.response"))
7
+ end
8
+
9
+ it_behaves_like "engines"
10
+
11
+ describe "#to_html" do
12
+ let(:html) { described_class.new(link).to_html }
13
+
14
+ it "returns video title" do
15
+ expect(html).to include("SC2L Week 3 - Axiom vs Acer G6")
16
+ end
17
+
18
+ it "returns image" do
19
+ expect(html).to include("Striderdoom-SC2LWeek3AxiomVsAcerG6178-416.jpg")
20
+ end
21
+
22
+ it "returns video description" do
23
+ expect(html).to include("Acer and Axiom go head to head in week 3!")
24
+ end
25
+
26
+ it "returns video" do
27
+ expect(html).to include("http://blip.tv/day9tv/sc2l-week-3-axiom-vs-acer-g6-6623829")
28
+ end
29
+
30
+ it "returns URL" do
31
+ expect(html).to include(link)
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,26 @@
1
+ require "spec_helper"
2
+
3
+ describe Onebox::Engine::ClikThroughOnebox do
4
+ let(:link) { "http://www.clickthough.com"}
5
+ before do
6
+ fake(link, response("clikthrough.response"))
7
+ end
8
+
9
+ it_behaves_like "engines"
10
+
11
+ describe "#to_html" do
12
+ let(:html) { described_class.new(link).to_html }
13
+
14
+ it "returns video title" do
15
+ expect(html).to include("Keri Hilson - Knock You Down")
16
+ end
17
+
18
+ it "returns video description" do
19
+ expect(html).to include("Keri Hilson gets taken down by love once again")
20
+ end
21
+
22
+ it "returns URL" do
23
+ expect(html).to include(link)
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,34 @@
1
+ require "spec_helper"
2
+
3
+ describe Onebox::Engine::CollegeHumorOnebox do
4
+ let(:link) { "http://collegehumor.com" }
5
+ before do
6
+ fake(link, response("collegehumor.response"))
7
+ end
8
+
9
+ it_behaves_like "engines"
10
+
11
+ describe "#to_html" do
12
+ let(:html) { described_class.new(link).to_html }
13
+
14
+ it "returns video title" do
15
+ expect(html).to include("Mitt Romney Style (Gangnam Style Parody)")
16
+ end
17
+
18
+ it "returns video image" do
19
+ expect(html).to include("a9febe641d5beb264bbab0de49272e5a-mitt-romney-style-gangnam-style-parody.jpg")
20
+ end
21
+
22
+ it "returns video description" do
23
+ expect(html).to include("Heyyy wealthy ladies!"Mitt Romney Style" is now available on iTunes")
24
+ end
25
+
26
+ it "returns video URL" do
27
+ expect(html).to include("moogaloop.1.0.31.swf?clip_id=6830834&use_node_id=true&og=1&auto=true")
28
+ end
29
+
30
+ it "returns URL" do
31
+ expect(html).to include(link)
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,36 @@
1
+ require "spec_helper"
2
+
3
+ describe Onebox::Engine::DailymotionOnebox do
4
+ let(:link) { "http://dailymotion.com" }
5
+ before do
6
+ fake(link, response("dailymotion.response"))
7
+ end
8
+
9
+ it_behaves_like "engines"
10
+
11
+ describe "#to_html" do
12
+ let(:html) { described_class.new(link).to_html }
13
+
14
+ it "returns video title" do
15
+ expect(html).to include("Two Door Cinema Club - Les Vielles Charrues 2013.")
16
+ end
17
+
18
+ it "returns video image" do
19
+ expect(html).to include("526x297-bxE.jpg")
20
+ end
21
+
22
+ it "returns video description" do
23
+ expect(html).to include("Vibrez au son de l'electro-pop des Irlandais de Two Door Cinema Club,")
24
+ end
25
+
26
+ it "returns video URL" do
27
+ expect(html).to include("http://www.dailymotion.com/swf/video/x12h020?autoPlay=1")
28
+ end
29
+
30
+ it "returns video embed code"
31
+
32
+ it "returns URL" do
33
+ expect(html).to include(link)
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,36 @@
1
+ require "spec_helper"
2
+
3
+ describe Onebox::Engine::DotsubOnebox do
4
+ let(:link) { "http://dotsub.com/view/665bd0d5-a9f4-4a07-9d9e-b31ba926ca78" }
5
+ before do
6
+ fake(link, response("dotsub.response"))
7
+ end
8
+
9
+ it_behaves_like "engines"
10
+
11
+ describe "#to_html" do
12
+ let(:html) { described_class.new(link).to_html }
13
+
14
+ it "returns video title" do
15
+ expect(html).to include("Twitter in Plain English")
16
+ end
17
+
18
+ it "returns video description" do
19
+ # og:decription tag spelled wrong in http response
20
+ pending
21
+ expect(html).to include("A short explanation of the micro-blogging service, Twitter.")
22
+ end
23
+
24
+ it "returns video photo" do
25
+ expect(html).to include("/665bd0d5-a9f4-4a07-9d9e-b31ba926ca78/p")
26
+ end
27
+
28
+ it "returns video URL" do
29
+ expect(html).to include("dotsub.com/media/665bd0d5-a9f4-4a07-9d9e-b31ba926ca78/m/flv/")
30
+ end
31
+
32
+ it "returns URL" do
33
+ expect(html).to include("http://dotsub.com/view/665bd0d5-a9f4-4a07-9d9e-b31ba926ca78")
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,18 @@
1
+ require "spec_helper"
2
+
3
+ describe Onebox::Engine::ExampleOnebox do
4
+ let(:link) { "http://example.com" }
5
+ before do
6
+ fake(link, response("example.response"))
7
+ end
8
+
9
+ it_behaves_like "engines"
10
+
11
+ describe "#to_html" do
12
+ let(:html) { described_class.new(link).to_html }
13
+
14
+ it "returns template if given valid data" do
15
+ expect(html).to include(onebox_view("Example Domain 1"))
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,30 @@
1
+ require "spec_helper"
2
+
3
+ describe Onebox::Engine::FlickrOnebox do
4
+ let(:link) { "http://flickr.com" }
5
+ before do
6
+ fake(link, response("flickr.response"))
7
+ end
8
+
9
+ it_behaves_like "engines"
10
+
11
+ describe "#to_html" do
12
+ let(:html) { described_class.new(link).to_html }
13
+
14
+ it "returns photo title" do
15
+ expect(html).to include("Los Angeles View 2011")
16
+ end
17
+
18
+ it "returns photo" do
19
+ expect(html).to include("6038315155_2875860c4b_z.jpg")
20
+ end
21
+
22
+ it "returns photo description" do
23
+ expect(html).to include("The view from the Griffith Observatory, Los Angeles; July 2011")
24
+ end
25
+
26
+ it "returns URL" do
27
+ expect(html).to include(link)
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,34 @@
1
+ require "spec_helper"
2
+
3
+ describe Onebox::Engine::FunnyOrDieOnebox do
4
+ let(:link) { "http://funnyordie.com" }
5
+ before do
6
+ fake(link, response("funnyordie.response"))
7
+ end
8
+
9
+ it_behaves_like "engines"
10
+
11
+ describe "#to_html" do
12
+ let(:html) { described_class.new(link).to_html }
13
+
14
+ it "returns video title" do
15
+ expect(html).to include("The Landlord")
16
+ end
17
+
18
+ it "returns video photo" do
19
+ expect(html).to include("c480x270_18.jpg")
20
+ end
21
+
22
+ it "returns video description" do
23
+ expect(html).to include("Will Ferrell meets his landlord.")
24
+ end
25
+
26
+ it "returns video URL" do
27
+ expect(html).to include("http://www.funnyordie.com/videos/74/the-landlord-from-will-ferrell-and-adam-ghost-panther-mckay")
28
+ end
29
+
30
+ it "returns URL" do
31
+ expect(html).to include(link)
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,34 @@
1
+ require "spec_helper"
2
+
3
+ describe Onebox::Engine::HuluOnebox do
4
+ let(:link) { "http://hulu.com" }
5
+ before do
6
+ fake(link, response("hulu.response"))
7
+ end
8
+
9
+ it_behaves_like "engines"
10
+
11
+ describe "#to_html" do
12
+ let(:html) { described_class.new(link).to_html }
13
+
14
+ it "returns video title" do
15
+ expect(html).to include("The Awesomes: Pilot, Part 1")
16
+ end
17
+
18
+ it "returns photo" do
19
+ expect(html).to include("http://ib3.huluim.com/video/60245466?region=US&size=600x400")
20
+ end
21
+
22
+ it "returns video description" do
23
+ expect(html).to include("After Mr. Awesome decides to retire and disband The Awesomes")
24
+ end
25
+
26
+ it "returns video URL" do
27
+ expect(html).to include("https://secure.hulu.com/embed/0-us7uHJgevua5TeiGwCxQ")
28
+ end
29
+
30
+ it "returns URL" do
31
+ expect(html).to include(link)
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,35 @@
1
+ require "spec_helper"
2
+
3
+ describe Onebox::Engine::NFBOnebox do
4
+ let(:link) { "http://nfb.ca" }
5
+ before do
6
+ fake(link, response("nfb.response"))
7
+ end
8
+
9
+ it_behaves_like "engines"
10
+
11
+ describe "#to_html" do
12
+ let(:html) { described_class.new(link).to_html }
13
+
14
+ it "returns video title" do
15
+ expect(html).to include("Overdose")
16
+ end
17
+
18
+ it "returns video description" do
19
+ expect(html).to include("With school, tennis lessons, swimming lessons, art classes,")
20
+ end
21
+
22
+ it "returns video URL" do
23
+ expect(html).to include("http://www.nfb.ca/film/overdose_en/")
24
+ end
25
+
26
+ it "returns the video embed code" do
27
+ pending
28
+ expect(html).to include("")
29
+ end
30
+
31
+ it "returns URL" do
32
+ expect(html).to include(link)
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,35 @@
1
+ require "spec_helper"
2
+
3
+ describe Onebox::Engine::QikOnebox do
4
+ let(:link) { "http://qik.com" }
5
+ before do
6
+ fake(link, response("qik.response"))
7
+ end
8
+
9
+ it_behaves_like "engines"
10
+
11
+ describe "#to_html" do
12
+ let(:html) { described_class.new(link).to_html }
13
+
14
+ it "returns the video title" do
15
+ expect(html).to include("20910")
16
+ end
17
+
18
+ it "returns the video author" do
19
+ expect(html).to include("mitesh patel")
20
+ end
21
+
22
+ it "returns the video uploader photo" do
23
+ expect(html).to include("me_large.jpg")
24
+ end
25
+
26
+ it "returns the video URL" do
27
+ expect(html).to include(link)
28
+ end
29
+
30
+ it "returns the video embed code" do
31
+ pending
32
+ expect(html).to include("clsid:d27cdb6e-ae6d-11cf-96b8-444553540000")
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,36 @@
1
+ require "spec_helper"
2
+
3
+ describe Onebox::Engine::Revision3Onebox do
4
+ let(:link) { "http://revision3.com" }
5
+ before do
6
+ fake(link, response("revision3.response"))
7
+ end
8
+
9
+ it_behaves_like "engines"
10
+
11
+ describe "#to_html" do
12
+ let(:html) { described_class.new(link).to_html }
13
+
14
+ it "returns video title" do
15
+ expect(html).to include("Blue Shark Bites Diver's Arm")
16
+ end
17
+
18
+ it "returns video image" do
19
+ expect(html).to include("discoverysharks--0029--blue-sharks--medium.thumb.jpg")
20
+ end
21
+
22
+ it "returns video description" do
23
+ expect(html).to include("Blue Sharks swimming and eating in the open ocean.")
24
+ end
25
+
26
+ it "returns video URL" do
27
+ expect(html).to include("https://revision3.com/player-v22668")
28
+ end
29
+
30
+ it "returns video embed code"
31
+
32
+ it "returns URL" do
33
+ expect(html).to include(link)
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,30 @@
1
+ require "spec_helper"
2
+
3
+ describe Onebox::Engine::SlideshareOnebox do
4
+ let(:link) { "http://slideshare.net" }
5
+ before do
6
+ fake(link, response("slideshare.response"))
7
+ end
8
+
9
+ it_behaves_like "engines"
10
+
11
+ describe "#to_html" do
12
+ let(:html) { described_class.new(link).to_html }
13
+
14
+ it "returns presentation title" do
15
+ expect(html).to include("12 Local Traditions That")
16
+ end
17
+
18
+ it "returns presentation description" do
19
+ expect(html).to include("12 Local traditions that will make")
20
+ end
21
+
22
+ it "returns presentation image" do
23
+ expect(html).to include("12localtraditions-130729070157-phpapp01-thumbnail-4")
24
+ end
25
+
26
+ it "returns URL" do
27
+ expect(html).to include(link)
28
+ end
29
+ end
30
+ end