onebox 1.1.0 → 1.2.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 (171) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/.rubocop.yml +7 -452
  4. data/Gemfile +1 -1
  5. data/README.md +23 -45
  6. data/lib/onebox.rb +21 -13
  7. data/lib/onebox/engine.rb +53 -43
  8. data/lib/onebox/engine/amazon_onebox.rb +34 -7
  9. data/lib/onebox/engine/classic_google_maps_onebox.rb +37 -0
  10. data/lib/onebox/engine/github_blob_onebox.rb +27 -7
  11. data/lib/onebox/engine/github_commit_onebox.rb +8 -15
  12. data/lib/onebox/engine/github_gist_onebox.rb +10 -10
  13. data/lib/onebox/engine/github_pullrequest_onebox.rb +7 -15
  14. data/lib/onebox/engine/google_play_app_onebox.rb +30 -0
  15. data/lib/onebox/engine/html.rb +10 -1
  16. data/lib/onebox/engine/image_onebox.rb +13 -0
  17. data/lib/onebox/engine/stack_exchange_onebox.rb +25 -11
  18. data/lib/onebox/engine/standard_embed.rb +48 -0
  19. data/lib/onebox/engine/twitter_status_onebox.rb +100 -0
  20. data/lib/onebox/engine/whitelisted_generic_onebox.rb +223 -0
  21. data/lib/onebox/engine/wikipedia_onebox.rb +27 -5
  22. data/lib/onebox/engine/youtube_onebox.rb +22 -0
  23. data/lib/onebox/helpers.rb +24 -0
  24. data/lib/onebox/layout.rb +67 -0
  25. data/lib/onebox/layout_support.rb +16 -0
  26. data/lib/onebox/matcher.rb +6 -1
  27. data/lib/onebox/preview.rb +19 -6
  28. data/lib/onebox/version.rb +1 -1
  29. data/lib/onebox/view.rb +7 -12
  30. data/onebox.gemspec +7 -5
  31. data/spec/fixtures/amazon.response +1336 -2971
  32. data/spec/fixtures/githubblob.response +49 -921
  33. data/spec/fixtures/{android.response → googleplayapp.response} +1 -1
  34. data/spec/fixtures/stackexchange.response +1 -1889
  35. data/spec/fixtures/twitterstatus.response +3006 -0
  36. data/spec/fixtures/youtube-json.response +1 -0
  37. data/spec/fixtures/youtube.response +1625 -0
  38. data/spec/lib/onebox/engine/amazon_onebox_spec.rb +5 -20
  39. data/spec/lib/onebox/engine/classic_google_maps_onebox_spec.rb +28 -0
  40. data/spec/lib/onebox/engine/github_blob_onebox_spec.rb +6 -15
  41. data/spec/lib/onebox/engine/github_commit_onebox_spec.rb +14 -22
  42. data/spec/lib/onebox/engine/github_gist_onebox_spec.rb +6 -14
  43. data/spec/lib/onebox/engine/github_pullrequest_onebox_spec.rb +14 -26
  44. data/spec/lib/onebox/engine/google_play_app_onebox_spec.rb +28 -0
  45. data/spec/lib/onebox/engine/html_spec.rb +4 -6
  46. data/spec/lib/onebox/engine/json_spec.rb +4 -6
  47. data/spec/lib/onebox/engine/stack_exchange_onebox_spec.rb +4 -17
  48. data/spec/lib/onebox/engine/twitter_status_onebox_spec.rb +103 -0
  49. data/spec/lib/onebox/engine/whitelisted_generic_onebox_spec.rb +51 -0
  50. data/spec/lib/onebox/engine/wikipedia_onebox_spec.rb +4 -17
  51. data/spec/lib/onebox/engine/youtube_onebox_spec.rb +17 -0
  52. data/spec/lib/onebox/engine_spec.rb +35 -32
  53. data/spec/lib/onebox/layout_spec.rb +77 -0
  54. data/spec/lib/onebox/matcher_spec.rb +0 -15
  55. data/spec/lib/onebox/preview_spec.rb +39 -9
  56. data/spec/lib/onebox_spec.rb +15 -11
  57. data/spec/spec_helper.rb +60 -4
  58. data/spec/support/html_spec_helper.rb +2 -1
  59. data/templates/_layout.mustache +11 -4
  60. data/templates/amazon.mustache +4 -3
  61. data/templates/githubblob.mustache +7 -5
  62. data/templates/githubcommit.mustache +20 -11
  63. data/templates/githubpullrequest.mustache +19 -12
  64. data/templates/googleplayapp.mustache +4 -0
  65. data/templates/stackexchange.mustache +19 -3
  66. data/templates/twitterstatus.mustache +12 -0
  67. data/templates/whitelistedgeneric.mustache +5 -0
  68. data/templates/wikipedia.mustache +4 -3
  69. metadata +57 -166
  70. data/lib/onebox/engine/bliptv_onebox.rb +0 -28
  71. data/lib/onebox/engine/clikthrough_onebox.rb +0 -25
  72. data/lib/onebox/engine/college_humor_onebox.rb +0 -27
  73. data/lib/onebox/engine/dailymotion_onebox.rb +0 -28
  74. data/lib/onebox/engine/dotsub_onebox.rb +0 -27
  75. data/lib/onebox/engine/example_onebox.rb +0 -24
  76. data/lib/onebox/engine/flickr_onebox.rb +0 -26
  77. data/lib/onebox/engine/funny_or_die_onebox.rb +0 -28
  78. data/lib/onebox/engine/hulu_onebox.rb +0 -29
  79. data/lib/onebox/engine/imgur_image_onebox.rb +0 -26
  80. data/lib/onebox/engine/itunes_onebox.rb +0 -28
  81. data/lib/onebox/engine/kinomap_onebox.rb +0 -27
  82. data/lib/onebox/engine/nfb_onebox.rb +0 -28
  83. data/lib/onebox/engine/open_graph.rb +0 -11
  84. data/lib/onebox/engine/qik_onebox.rb +0 -25
  85. data/lib/onebox/engine/revision3_onebox.rb +0 -27
  86. data/lib/onebox/engine/slideshare_onebox.rb +0 -27
  87. data/lib/onebox/engine/sound_cloud_onebox.rb +0 -27
  88. data/lib/onebox/engine/spotify_onebox.rb +0 -27
  89. data/lib/onebox/engine/ted_onebox.rb +0 -28
  90. data/lib/onebox/engine/twitter_onebox.rb +0 -31
  91. data/lib/onebox/engine/viddler_onebox.rb +0 -28
  92. data/lib/onebox/engine/vimeo_onebox.rb +0 -27
  93. data/lib/onebox/engine/yfrog_onebox.rb +0 -28
  94. data/spec/fixtures/bliptv.response +0 -724
  95. data/spec/fixtures/clikthrough.response +0 -1472
  96. data/spec/fixtures/collegehumor.response +0 -1272
  97. data/spec/fixtures/dailymotion.response +0 -575
  98. data/spec/fixtures/dotsub.response +0 -1257
  99. data/spec/fixtures/example.response +0 -50
  100. data/spec/fixtures/flickr.response +0 -1292
  101. data/spec/fixtures/funnyordie.response +0 -2010
  102. data/spec/fixtures/githubgist.response +0 -468
  103. data/spec/fixtures/hulu.response +0 -339
  104. data/spec/fixtures/imguralbum.response +0 -941
  105. data/spec/fixtures/imgurimage.response +0 -872
  106. data/spec/fixtures/itunes.response +0 -402
  107. data/spec/fixtures/kinomap.response +0 -299
  108. data/spec/fixtures/nfb.response +0 -810
  109. data/spec/fixtures/opengraph.response +0 -27
  110. data/spec/fixtures/qik.response +0 -371
  111. data/spec/fixtures/revision3.response +0 -985
  112. data/spec/fixtures/rottentomatoesfresh.response +0 -3275
  113. data/spec/fixtures/rottentomatoesincomplete.response +0 -2313
  114. data/spec/fixtures/rottentomatoesrotten.response +0 -3549
  115. data/spec/fixtures/slideshare.response +0 -1745
  116. data/spec/fixtures/soundcloud.response +0 -1409
  117. data/spec/fixtures/spotify.response +0 -250
  118. data/spec/fixtures/ted.response +0 -1341
  119. data/spec/fixtures/twitter.response +0 -1712
  120. data/spec/fixtures/viddler.response +0 -442
  121. data/spec/fixtures/vimeo.response +0 -571
  122. data/spec/fixtures/yfrog.response +0 -464
  123. data/spec/lib/onebox/engine/bliptv_onebox_spec.rb +0 -37
  124. data/spec/lib/onebox/engine/clikthrough_onebox_spec.rb +0 -29
  125. data/spec/lib/onebox/engine/college_humor_onebox_spec.rb +0 -37
  126. data/spec/lib/onebox/engine/dailymotion_onebox_spec.rb +0 -39
  127. data/spec/lib/onebox/engine/dotsub_onebox_spec.rb +0 -39
  128. data/spec/lib/onebox/engine/example_onebox_spec.rb +0 -21
  129. data/spec/lib/onebox/engine/flickr_onebox_spec.rb +0 -33
  130. data/spec/lib/onebox/engine/funny_or_die_onebox_spec.rb +0 -37
  131. data/spec/lib/onebox/engine/hulu_onebox_spec.rb +0 -37
  132. data/spec/lib/onebox/engine/imgur_image_onebox_spec.rb +0 -29
  133. data/spec/lib/onebox/engine/itunes_onebox_spec.rb +0 -29
  134. data/spec/lib/onebox/engine/kinomap_onebox_spec.rb +0 -37
  135. data/spec/lib/onebox/engine/nfb_onebox_spec.rb +0 -38
  136. data/spec/lib/onebox/engine/open_graph_spec.rb +0 -27
  137. data/spec/lib/onebox/engine/qik_onebox_spec.rb +0 -38
  138. data/spec/lib/onebox/engine/revision3_onebox_spec.rb +0 -39
  139. data/spec/lib/onebox/engine/slideshare_onebox_spec.rb +0 -33
  140. data/spec/lib/onebox/engine/sound_cloud_onebox_spec.rb +0 -39
  141. data/spec/lib/onebox/engine/spotify_onebox_spec.rb +0 -36
  142. data/spec/lib/onebox/engine/ted_onebox_spec.rb +0 -33
  143. data/spec/lib/onebox/engine/twitter_onebox_spec.rb +0 -47
  144. data/spec/lib/onebox/engine/viddler_onebox_spec.rb +0 -39
  145. data/spec/lib/onebox/engine/vimeo_onebox_spec.rb +0 -37
  146. data/spec/lib/onebox/engine/yfrog_onebox_spec.rb +0 -33
  147. data/spec/lib/onebox/view_spec.rb +0 -16
  148. data/templates/bliptv.mustache +0 -5
  149. data/templates/clikthrough.mustache +0 -4
  150. data/templates/collegehumor.mustache +0 -5
  151. data/templates/dailymotion.mustache +0 -5
  152. data/templates/dotsub.mustache +0 -5
  153. data/templates/example.mustache +0 -2
  154. data/templates/flickr.mustache +0 -4
  155. data/templates/funnyordie.mustache +0 -6
  156. data/templates/githubgist.mustache +0 -3
  157. data/templates/hulu.mustache +0 -6
  158. data/templates/imgurimage.mustache +0 -3
  159. data/templates/itunes.mustache +0 -4
  160. data/templates/kinomap.mustache +0 -5
  161. data/templates/nfb.mustache +0 -5
  162. data/templates/qik.mustache +0 -4
  163. data/templates/revision3.mustache +0 -5
  164. data/templates/slideshare.mustache +0 -4
  165. data/templates/soundcloud.mustache +0 -5
  166. data/templates/spotify.mustache +0 -4
  167. data/templates/ted.mustache +0 -5
  168. data/templates/twitter.mustache +0 -7
  169. data/templates/viddler.mustache +0 -5
  170. data/templates/vimeo.mustache +0 -5
  171. data/templates/yfrog.mustache +0 -4
@@ -1,28 +0,0 @@
1
- module Onebox
2
- module Engine
3
- class BliptvOnebox
4
- include Engine
5
- include OpenGraph
6
-
7
- matches do
8
- http
9
- maybe("www.")
10
- domain("blip")
11
- has(".tv").maybe("/")
12
- end
13
-
14
- private
15
-
16
- def data
17
- {
18
- url: @url,
19
- title: raw.title,
20
- image: raw.images.first,
21
- description: raw.description,
22
- video: raw.metadata[:video].first[:_value]
23
- }
24
- end
25
- end
26
- end
27
- end
28
-
@@ -1,25 +0,0 @@
1
- module Onebox
2
- module Engine
3
- class ClikThroughOnebox
4
- include Engine
5
- include OpenGraph
6
-
7
- matches do
8
- http
9
- maybe("www.")
10
- domain("clikthrough")
11
- has(".com").either("/theater", "/video").maybe("/")
12
- end
13
-
14
- private
15
-
16
- def data
17
- {
18
- url: @url,
19
- title: raw.title,
20
- description: raw.description
21
- }
22
- end
23
- end
24
- end
25
- end
@@ -1,27 +0,0 @@
1
- module Onebox
2
- module Engine
3
- class CollegeHumorOnebox
4
- include Engine
5
- include OpenGraph
6
-
7
- matches do
8
- http
9
- domain("collegehumor")
10
- has(".com").maybe("/video").maybe("/")
11
- end
12
-
13
- private
14
-
15
- def data
16
- {
17
- url: @url,
18
- title: raw.title,
19
- image: raw.images.first,
20
- description: raw.description,
21
- video: raw.metadata[:video].first[:_value]
22
- }
23
- end
24
- end
25
- end
26
- end
27
-
@@ -1,28 +0,0 @@
1
- module Onebox
2
- module Engine
3
- class DailymotionOnebox
4
- include Engine
5
- include OpenGraph
6
-
7
- matches do
8
- http
9
- maybe("www.")
10
- domain("dailymotion")
11
- has(".com").maybe("/")
12
- end
13
-
14
- private
15
-
16
- def data
17
- {
18
- url: @url,
19
- title: raw.title,
20
- image: raw.images.first,
21
- description: raw.description,
22
- video: raw.metadata[:video][1][:_value]
23
- }
24
- end
25
- end
26
- end
27
- end
28
-
@@ -1,27 +0,0 @@
1
- module Onebox
2
- module Engine
3
- class DotsubOnebox
4
- include Engine
5
- include OpenGraph
6
-
7
- matches do
8
- http
9
- maybe("www.")
10
- domain("dotsub")
11
- has(".com").maybe("/")
12
- end
13
-
14
- private
15
-
16
- def data
17
- {
18
- url: @url,
19
- title: raw.title,
20
- image: raw.images.first,
21
- description: raw.description,
22
- video: raw.metadata[:video].first[:_value]
23
- }
24
- end
25
- end
26
- end
27
- end
@@ -1,24 +0,0 @@
1
- module Onebox
2
- module Engine
3
- class ExampleOnebox
4
- include Engine
5
- include HTML
6
-
7
- matches do
8
- http
9
- maybe("www.")
10
- domain("example")
11
- has(".com").maybe("/")
12
- end
13
-
14
- private
15
-
16
- def data
17
- {
18
- header: raw.css("h1").inner_text
19
- }
20
- end
21
- end
22
- end
23
- end
24
-
@@ -1,26 +0,0 @@
1
- module Onebox
2
- module Engine
3
- class FlickrOnebox
4
- include Engine
5
- include OpenGraph
6
-
7
- matches do
8
- http
9
- domain("flickr")
10
- has(".com").maybe("/")
11
- end
12
-
13
- private
14
-
15
- def data
16
- {
17
- url: @url,
18
- title: raw.title,
19
- image: raw.images.first,
20
- description: raw.description
21
- }
22
- end
23
- end
24
- end
25
- end
26
-
@@ -1,28 +0,0 @@
1
- module Onebox
2
- module Engine
3
- class FunnyOrDieOnebox
4
- include Engine
5
- include OpenGraph
6
-
7
- matches do
8
- http
9
- maybe("www.")
10
- domain("funnyordie")
11
- has(".com").maybe("/videos").maybe("/")
12
- end
13
-
14
- private
15
-
16
- def data
17
- {
18
- url: @url,
19
- title: raw.title,
20
- image: raw.images.first,
21
- description: raw.description,
22
- video: raw.metadata[:video].first[:url].first[:_value]
23
- }
24
- end
25
- end
26
- end
27
- end
28
-
@@ -1,29 +0,0 @@
1
- module Onebox
2
- module Engine
3
- class HuluOnebox
4
- include Engine
5
- include OpenGraph
6
-
7
- matches do
8
- http
9
- maybe("www.")
10
- domain("hulu")
11
- tld("com")
12
- with("/watch/")
13
- end
14
-
15
- private
16
-
17
- def data
18
- {
19
- url: @url,
20
- title: raw.title,
21
- image: raw.images.first,
22
- description: raw.description,
23
- video: raw.metadata[:video][1][:_value]
24
- }
25
- end
26
- end
27
- end
28
- end
29
-
@@ -1,26 +0,0 @@
1
- module Onebox
2
- module Engine
3
- class ImgurImageOnebox
4
- include Engine
5
- include HTML
6
-
7
- matches do
8
- http
9
- domain("imgur")
10
- tld("com")
11
- with("/gallery")
12
- end
13
-
14
- private
15
-
16
- def data
17
- {
18
- url: @url,
19
- title: raw.css("h2#image-title").inner_text,
20
- image: raw.css("#image img").first["src"]
21
- }
22
- end
23
- end
24
- end
25
- end
26
-
@@ -1,28 +0,0 @@
1
- module Onebox
2
- module Engine
3
- class ItunesOnebox
4
- include Engine
5
- include OpenGraph
6
-
7
- matches do
8
- # matcher /^https?:\/\/itunes.apple.com\/.+$/
9
- http
10
- domain("itunes")
11
- has(".")
12
- domain("apple")
13
- tld("com")
14
- end
15
-
16
- private
17
-
18
- def data
19
- {
20
- url: @url,
21
- title: raw.title,
22
- image: raw.images.first,
23
- description: raw.description,
24
- }
25
- end
26
- end
27
- end
28
- end
@@ -1,27 +0,0 @@
1
- module Onebox
2
- module Engine
3
- class KinomapOnebox
4
- include Engine
5
- include OpenGraph
6
-
7
- matches do
8
- http
9
- domain("kinomap")
10
- tld("com")
11
- with("/watch/")
12
- end
13
-
14
- private
15
-
16
- def data
17
- {
18
- url: @url,
19
- title: raw.title,
20
- image: raw.images.first,
21
- description: raw.description,
22
- video: raw.metadata[:video].first[:_value]
23
- }
24
- end
25
- end
26
- end
27
- end
@@ -1,28 +0,0 @@
1
- module Onebox
2
- module Engine
3
- class NFBOnebox
4
- include Engine
5
- include OpenGraph
6
-
7
- matches do
8
- http
9
- maybe("www.")
10
- domain("nfb")
11
- tld("ca")
12
- with("/film")
13
- end
14
-
15
- private
16
-
17
- def data
18
- {
19
- url: @url,
20
- title: raw.title,
21
- description: raw.description,
22
- video: raw.metadata[:video].first[:_value]
23
- }
24
- end
25
- end
26
- end
27
- end
28
-
@@ -1,11 +0,0 @@
1
- module Onebox
2
- module Engine
3
- module OpenGraph
4
- private
5
-
6
- def raw
7
- @raw ||= ::OpenGraph.new(url)
8
- end
9
- end
10
- end
11
- end
@@ -1,25 +0,0 @@
1
- module Onebox
2
- module Engine
3
- class QikOnebox
4
- include Engine
5
- include HTML
6
-
7
- matches do
8
- http
9
- domain("qik")
10
- tld("com")
11
- with("/video")
12
- end
13
-
14
- private
15
-
16
- def data
17
- {
18
- url: @url,
19
- title: raw.css(".info h2").inner_text,
20
- image: raw.css(".userphoto").first["src"]
21
- }
22
- end
23
- end
24
- end
25
- end
@@ -1,27 +0,0 @@
1
- module Onebox
2
- module Engine
3
- class Revision3Onebox
4
- include Engine
5
- include OpenGraph
6
-
7
- matches do
8
- http
9
- domain("revision3")
10
- tld("com")
11
- end
12
-
13
- private
14
-
15
- def data
16
- {
17
- url: @url,
18
- title: raw.title,
19
- image: raw.images.first,
20
- description: raw.description,
21
- video: raw.metadata[:video].first[:_value]
22
- }
23
- end
24
- end
25
- end
26
- end
27
-
@@ -1,27 +0,0 @@
1
- module Onebox
2
- module Engine
3
- class SlideshareOnebox
4
- include Engine
5
- include OpenGraph
6
-
7
- matches do
8
- http
9
- maybe("www.")
10
- domain("slideshare")
11
- tld("net")
12
- end
13
-
14
- private
15
-
16
- def data
17
- {
18
- url: @url,
19
- title: raw.title,
20
- image: raw.images.first,
21
- description: raw.description
22
- }
23
- end
24
- end
25
- end
26
- end
27
-