onebox 2.1.7 → 2.2.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/onebox/engine/allowlisted_generic_onebox.rb +9 -1
- data/lib/onebox/engine/github_folder_onebox.rb +30 -4
- data/lib/onebox/engine/instagram_onebox.rb +2 -2
- data/lib/onebox/engine/simplecast_onebox.rb +1 -0
- data/lib/onebox/helpers.rb +4 -3
- data/lib/onebox/version.rb +1 -1
- data/templates/githubfolder.mustache +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 817b81480e38b1a133342d89f83991cd0e94217581ddb74c6275c6631c7285bf
|
4
|
+
data.tar.gz: 545e95966e368c2b36a9792dd99934ec609635e19d95bb02ef1dd1fbcd51c5f6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fc0ea7daff3babaa77cebf9e5e00161877a86106d15b1a2d4e1b1e56f1e4ba9ebfd6e3666a991d420e4ea71180dc8fcaf2bafc0ac659934399706462c1e45d69
|
7
|
+
data.tar.gz: f509adf0a3ad1d557700a690bfb9b922ec9c181b68cf6ab61134394ee70c8ee4487d64faa863262a28cd795ed14e39bc774521572551c719faa39a1acc208a3e
|
@@ -286,7 +286,7 @@ module Onebox
|
|
286
286
|
return image_html if is_image?
|
287
287
|
return embedded_html if is_embedded?
|
288
288
|
return card_html if is_card?
|
289
|
-
return article_html if has_text?
|
289
|
+
return article_html if (has_text? || is_image_article?)
|
290
290
|
end
|
291
291
|
|
292
292
|
def is_card?
|
@@ -301,9 +301,17 @@ module Onebox
|
|
301
301
|
end
|
302
302
|
|
303
303
|
def has_text?
|
304
|
+
has_title? && !Onebox::Helpers.blank?(data[:description])
|
305
|
+
end
|
306
|
+
|
307
|
+
def has_title?
|
304
308
|
!Onebox::Helpers.blank?(data[:title])
|
305
309
|
end
|
306
310
|
|
311
|
+
def is_image_article?
|
312
|
+
has_title? && has_image?
|
313
|
+
end
|
314
|
+
|
307
315
|
def is_image?
|
308
316
|
data[:type] =~ /photo|image/ &&
|
309
317
|
data[:type] !~ /photostream/ &&
|
@@ -7,9 +7,14 @@ module Onebox
|
|
7
7
|
include StandardEmbed
|
8
8
|
include LayoutSupport
|
9
9
|
|
10
|
-
matches_regexp Regexp.new(/^https?:\/\/(?:www\.)?(?:(?:\w)+\.)?(github)\.com[\:\d]*(
|
10
|
+
matches_regexp Regexp.new(/^https?:\/\/(?:www\.)?(?:(?:\w)+\.)?(github)\.com[\:\d]*(\/[^\/]+){2}/)
|
11
11
|
always_https
|
12
12
|
|
13
|
+
def self.priority
|
14
|
+
# This engine should have lower priority than the other Github engines
|
15
|
+
150
|
16
|
+
end
|
17
|
+
|
13
18
|
private
|
14
19
|
|
15
20
|
def data
|
@@ -20,11 +25,29 @@ module Onebox
|
|
20
25
|
display_path = extract_path(og.url, max_length)
|
21
26
|
display_description = clean_description(og.description, og.title, max_length)
|
22
27
|
|
28
|
+
title = og.title
|
29
|
+
|
30
|
+
fragment = Addressable::URI.parse(url).fragment
|
31
|
+
if fragment
|
32
|
+
fragment = Addressable::URI.unencode(fragment)
|
33
|
+
|
34
|
+
if html_doc.css('.Box.md')
|
35
|
+
# For links to markdown docs
|
36
|
+
node = html_doc.css('a.anchor').find { |n| n['href'] == "##{fragment}" }
|
37
|
+
subtitle = node&.parent&.text
|
38
|
+
elsif html_doc.css('.Box.rdoc')
|
39
|
+
# For links to rdoc docs
|
40
|
+
node = html_doc.css('h3').find { |n| n['id'] == "user-content-#{fragment.downcase}" }
|
41
|
+
subtitle = node&.css('text()')&.first&.text
|
42
|
+
end
|
43
|
+
|
44
|
+
title = "#{title} - #{subtitle}" if subtitle
|
45
|
+
end
|
46
|
+
|
23
47
|
{
|
24
|
-
link:
|
25
|
-
path_link: url,
|
48
|
+
link: url,
|
26
49
|
image: og.image,
|
27
|
-
title:
|
50
|
+
title: Onebox::Helpers.truncate(title, 250),
|
28
51
|
path: display_path,
|
29
52
|
description: display_description,
|
30
53
|
favicon: get_favicon
|
@@ -34,6 +57,9 @@ module Onebox
|
|
34
57
|
def extract_path(root, max_length)
|
35
58
|
path = url.split('#')[0].split('?')[0]
|
36
59
|
path = path["#{root}/tree/".length..-1]
|
60
|
+
|
61
|
+
return unless path
|
62
|
+
|
37
63
|
path.length > max_length ? path[-max_length..-1] : path
|
38
64
|
end
|
39
65
|
|
@@ -7,11 +7,11 @@ module Onebox
|
|
7
7
|
include StandardEmbed
|
8
8
|
include LayoutSupport
|
9
9
|
|
10
|
-
matches_regexp(/^https?:\/\/(?:www\.)?(?:instagram\.com|instagr\.am)\/?(?:.*)\/p\/[a-zA-Z\d_-]+/)
|
10
|
+
matches_regexp(/^https?:\/\/(?:www\.)?(?:instagram\.com|instagr\.am)\/?(?:.*)\/(?:p|tv)\/[a-zA-Z\d_-]+/)
|
11
11
|
always_https
|
12
12
|
|
13
13
|
def clean_url
|
14
|
-
url.scan(/^https?:\/\/(?:www\.)?(?:instagram\.com|instagr\.am)\/?(?:.*)\/p\/[a-zA-Z\d_-]+/).flatten.first
|
14
|
+
url.scan(/^https?:\/\/(?:www\.)?(?:instagram\.com|instagr\.am)\/?(?:.*)\/(?:p|tv)\/[a-zA-Z\d_-]+/).flatten.first
|
15
15
|
end
|
16
16
|
|
17
17
|
def data
|
data/lib/onebox/helpers.rb
CHANGED
@@ -27,7 +27,7 @@ module Onebox
|
|
27
27
|
def self.fetch_html_doc(url, headers = nil)
|
28
28
|
response = (fetch_response(url, nil, nil, headers) rescue nil)
|
29
29
|
doc = Nokogiri::HTML(response)
|
30
|
-
uri = URI(url)
|
30
|
+
uri = Addressable::URI.parse(url)
|
31
31
|
|
32
32
|
ignore_canonical_tag = doc.at('meta[property="og:ignore_canonical"]')
|
33
33
|
should_ignore_canonical = IGNORE_CANONICAL_DOMAINS.map { |hostname| uri.hostname.match?(hostname) }.any?
|
@@ -35,8 +35,9 @@ module Onebox
|
|
35
35
|
unless (ignore_canonical_tag && ignore_canonical_tag['content'].to_s == 'true') || should_ignore_canonical
|
36
36
|
# prefer canonical link
|
37
37
|
canonical_link = doc.at('//link[@rel="canonical"]/@href')
|
38
|
-
|
39
|
-
|
38
|
+
canonical_uri = Addressable::URI.parse(canonical_link)
|
39
|
+
if canonical_link && "#{canonical_uri.host}#{canonical_uri.path}" != "#{uri.host}#{uri.path}"
|
40
|
+
response = (fetch_response(canonical_uri.to_s, nil, nil, headers) rescue nil)
|
40
41
|
doc = Nokogiri::HTML(response) if response
|
41
42
|
end
|
42
43
|
end
|
data/lib/onebox/version.rb
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
<h3><a href='{{link}}' target="_blank" rel="noopener">{{title}}</a></h3>
|
4
4
|
|
5
5
|
{{#path}}
|
6
|
-
<p><a href='{{
|
6
|
+
<p><a href='{{link}}' target="_blank" rel="noopener">{{path}}</a></p>
|
7
7
|
{{/path}}
|
8
8
|
|
9
9
|
{{#description}}
|
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: 2.
|
4
|
+
version: 2.2.2
|
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:
|
13
|
+
date: 2021-01-06 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: addressable
|