onebox 1.7.2 → 1.7.3

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2104fcbe20267fd2a272b43bccaf3ff7c0f4d0c3
4
- data.tar.gz: 7292bbe6cf11d62f924272f26089c5e3071c9563
3
+ metadata.gz: 67ec2675eb6687bee752534aef6d1e610545717b
4
+ data.tar.gz: cd82452275130c85076cb9078f25650ac9c73444
5
5
  SHA512:
6
- metadata.gz: 5050d6a43ddb0a98daa8623c5f7d636a63a4642a0a69184c85908f778a89efd49c0655890d1c67f1342b604fd9c7249e774022a896481e9dc2761de012d9c06c
7
- data.tar.gz: 09f0001109957fb97fe5a9d69e1ed768c919c6b05bbb0e7e7b7c16a31878463bd20b9b5470f6d68d8ad0ecc6dbe93ef42f2e59aff8b9fa66c5336a88ace99eeb
6
+ metadata.gz: 557f8fbdfd7e33e247b5cd82ffc89f1484b57ba075e6c1ea412382be1e846c9aaa08e14777dec3799b5ce76dc61881a01909665087b21c4bd1775aa84f18f65b
7
+ data.tar.gz: 77c61683b419f729ba6d3b506b8c3bd960ae40f5b52662fb8d6e150605caea7f33e83c8aac7a3fdf9f82f4d1c92c045a571e7df2d5633c4457691e0067b735ae
data/lib/onebox/engine.rb CHANGED
@@ -171,3 +171,5 @@ require_relative "engine/asciinema_onebox"
171
171
  require_relative "engine/mixcloud_onebox"
172
172
  require_relative "engine/bandcamp_onebox"
173
173
  require_relative "engine/coub_onebox"
174
+ require_relative "engine/flickr_onebox"
175
+ require_relative "engine/five_hundred_px_onebox"
@@ -4,7 +4,7 @@ module Onebox
4
4
  include Engine
5
5
  include StandardEmbed
6
6
 
7
- matches_regexp(/^https?:\/\/.*bandcamp\.com\/album\//)
7
+ matches_regexp(/^https?:\/\/.*\.bandcamp\.com\/album\//)
8
8
  always_https
9
9
 
10
10
  def placeholder_html
@@ -0,0 +1,17 @@
1
+ module Onebox
2
+ module Engine
3
+ class FiveHundredPxOnebox
4
+ include Engine
5
+ include StandardEmbed
6
+
7
+ matches_regexp(/^https?:\/\/500px\.com\/photo\/\d+\//)
8
+ always_https
9
+
10
+ def to_html
11
+ og = get_opengraph
12
+ "<img src='#{og[:image]}' width='#{og[:image_width]}' height='#{og[:image_height]}' #{Helpers.title_attr(og)}>"
13
+ end
14
+
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,17 @@
1
+ module Onebox
2
+ module Engine
3
+ class FlickrOnebox
4
+ include Engine
5
+ include StandardEmbed
6
+
7
+ matches_regexp(/^https?:\/\/www\.flickr\.com\/photos\//)
8
+ always_https
9
+
10
+ def to_html
11
+ og = get_opengraph
12
+ "<img src='#{og[:image]}' width='#{og[:image_width]}' height='#{og[:image_height]}' #{Helpers.title_attr(og)}>"
13
+ end
14
+
15
+ end
16
+ end
17
+ end
@@ -4,7 +4,7 @@ module Onebox
4
4
  include Engine
5
5
  include StandardEmbed
6
6
 
7
- matches_regexp(/^https?:\/\/.*soundcloud\.com/)
7
+ matches_regexp(/^https?:\/\/soundcloud\.com/)
8
8
  always_https
9
9
 
10
10
  def to_html
@@ -1,3 +1,5 @@
1
+ require "cgi"
2
+
1
3
  module Onebox
2
4
  module Engine
3
5
  module StandardEmbed
@@ -93,14 +95,14 @@ module Onebox
93
95
  html_doc.css('meta').each do |m|
94
96
  if (m["property"] && m["property"][/^og:(.+)$/i]) || (m["name"] && m["name"][/^og:(.+)$/i])
95
97
  value = (m["content"] || m["value"]).to_s
96
- og[$1.tr('-:','_').to_sym] ||= value unless Onebox::Helpers::blank?(value)
98
+ og[$1.tr('-:','_').to_sym] ||= CGI.escapeHTML(value) unless Onebox::Helpers::blank?(value)
97
99
  end
98
100
  end
99
101
 
100
102
  # Attempt to retrieve the title from the meta tag
101
103
  title_element = html_doc.at_css('title')
102
104
  if title_element && title_element.text
103
- og[:title] ||= title_element.text unless Onebox::Helpers.blank?(title_element.text)
105
+ og[:title] ||= CGI.escapeHTML(title_element.text) unless Onebox::Helpers.blank?(title_element.text)
104
106
  end
105
107
 
106
108
  og
@@ -114,7 +116,7 @@ module Onebox
114
116
  html_doc.css('meta').each do |m|
115
117
  if (m["property"] && m["property"][/^twitter:(.+)$/i]) || (m["name"] && m["name"][/^twitter:(.+)$/i])
116
118
  value = (m["content"] || m["value"]).to_s
117
- twitter[$1.tr('-:','_').to_sym] ||= value unless Onebox::Helpers::blank?(value)
119
+ twitter[$1.tr('-:','_').to_sym] ||= CGI.escapeHTML(value) unless Onebox::Helpers::blank?(value)
118
120
  end
119
121
  end
120
122
 
@@ -5,7 +5,7 @@ module Onebox
5
5
  include LayoutSupport
6
6
  include HTML
7
7
 
8
- matches_regexp(/^https?:\/\/.*wikipedia\.(com|org)/)
8
+ matches_regexp(/^https?:\/\/.*\.wikipedia\.(com|org)/)
9
9
  always_https
10
10
 
11
11
  private
@@ -22,23 +22,23 @@ module Onebox
22
22
  end
23
23
 
24
24
  unless m_url_hash.nil?
25
- section_header_title = raw.xpath("//span[@id='#{m_url_hash_name}']")
25
+ section_header_title = raw.xpath("//span[@id='#{m_url_hash_name}']")
26
26
 
27
- if section_header_title.empty?
27
+ if section_header_title.empty?
28
28
  paras = raw.search("p") #default get all the paras
29
- else
29
+ else
30
30
  section_title_text = section_header_title.inner_text
31
31
  section_header = section_header_title[0].parent #parent element of the section span element should be an <h3> node
32
32
  cur_element = section_header
33
-
33
+
34
34
  # p|text|div covers the general case. We assume presence of atleast 1 P node. if section has no P node we may end up with a P node from the next section.
35
35
  # div tag is commonly used as an assets wraper in an article section. often as the first element holding an image.
36
36
  # ul support will imporve the output generated for a section with a list as the main content (for example: an Author Bibliography, A musician Discography, etc)
37
- first_p_found = nil
37
+ first_p_found = nil
38
38
  while ( ((next_sibling = cur_element.next_sibling).name =~ /p|text|div|ul/) || first_p_found.nil? ) do #from section header get the next sibling until it is a breaker tag
39
39
  cur_element = next_sibling
40
- if (cur_element.name == "p" || cur_element.name == "ul") #we treat a list as we detect a p to avoid showing
41
- first_p_found = true
40
+ if (cur_element.name == "p" || cur_element.name == "ul") #we treat a list as we detect a p to avoid showing
41
+ first_p_found = true
42
42
  paras.push(cur_element)
43
43
  end
44
44
  end
@@ -52,16 +52,16 @@ module Onebox
52
52
  while text.length < Onebox::LayoutSupport.max_text && cnt <= 3
53
53
  break if cnt >= paras.size
54
54
  text << " " unless cnt == 0
55
-
55
+
56
56
  if paras[cnt].name =="ul" #Handle UL tag. Generate a textual ordered list (1.item | 2.item | 3.item). Unfourtently no newline allowed in output
57
57
  li_index=1
58
58
  list_items = []
59
59
  paras[cnt].children.css("li").each {|li| list_items.push "#{li_index}." + li.inner_text ; li_index+=1}
60
60
  paragraph = (list_items.join " |\n ")[0..Onebox::LayoutSupport.max_text]
61
61
  else
62
- paragraph = paras[cnt].inner_text[0..Onebox::LayoutSupport.max_text]
62
+ paragraph = paras[cnt].inner_text[0..Onebox::LayoutSupport.max_text]
63
63
  end
64
-
64
+
65
65
  paragraph.gsub!(/\[\d+\]/mi, "")
66
66
  text << paragraph
67
67
  cnt += 1
@@ -4,14 +4,8 @@ module Onebox
4
4
  return {} if hash.nil?
5
5
 
6
6
  hash.inject({}){|result, (key, value)|
7
- new_key = case key
8
- when String then key.to_sym
9
- else key
10
- end
11
- new_value = case value
12
- when Hash then symbolize_keys(value)
13
- else value
14
- end
7
+ new_key = key.is_a?(String) ? key.to_sym : key
8
+ new_value = value.is_a?(Hash) ? symbolize_keys(value) : value
15
9
  result[new_key] = new_value
16
10
  result
17
11
  }
@@ -1,3 +1,3 @@
1
1
  module Onebox
2
- VERSION = "1.7.2"
2
+ VERSION = "1.7.3"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: onebox
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.7.2
4
+ version: 1.7.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joanna Zeta
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2017-01-06 00:00:00.000000000 Z
13
+ date: 2017-01-11 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: multi_json
@@ -321,6 +321,8 @@ files:
321
321
  - lib/onebox/engine/bandcamp_onebox.rb
322
322
  - lib/onebox/engine/coub_onebox.rb
323
323
  - lib/onebox/engine/douban_onebox.rb
324
+ - lib/onebox/engine/five_hundred_px_onebox.rb
325
+ - lib/onebox/engine/flickr_onebox.rb
324
326
  - lib/onebox/engine/gfycat_onebox.rb
325
327
  - lib/onebox/engine/giphy_onebox.rb
326
328
  - lib/onebox/engine/github_blob_onebox.rb