onebox 2.2.12 → 2.2.17
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 +4 -4
- data/.rspec +0 -4
- data/lib/onebox/engine.rb +7 -11
- data/lib/onebox/engine/allowlisted_generic_onebox.rb +11 -18
- data/lib/onebox/engine/amazon_onebox.rb +26 -17
- data/lib/onebox/engine/asciinema_onebox.rb +0 -1
- data/lib/onebox/engine/audioboom_onebox.rb +5 -2
- data/lib/onebox/engine/bandcamp_onebox.rb +8 -8
- data/lib/onebox/engine/cloudapp_onebox.rb +12 -12
- data/lib/onebox/engine/coub_onebox.rb +0 -1
- data/lib/onebox/engine/facebook_media_onebox.rb +8 -7
- data/lib/onebox/engine/five_hundred_px_onebox.rb +0 -1
- data/lib/onebox/engine/flickr_onebox.rb +14 -15
- data/lib/onebox/engine/gfycat_onebox.rb +26 -26
- data/lib/onebox/engine/giphy_onebox.rb +0 -1
- data/lib/onebox/engine/github_blob_onebox.rb +4 -0
- data/lib/onebox/engine/github_commit_onebox.rb +13 -16
- data/lib/onebox/engine/github_folder_onebox.rb +1 -1
- data/lib/onebox/engine/github_gist_onebox.rb +1 -2
- data/lib/onebox/engine/github_issue_onebox.rb +16 -18
- data/lib/onebox/engine/github_pullrequest_onebox.rb +7 -4
- data/lib/onebox/engine/gitlab_blob_onebox.rb +4 -0
- data/lib/onebox/engine/google_calendar_onebox.rb +1 -1
- data/lib/onebox/engine/google_docs_onebox.rb +23 -41
- data/lib/onebox/engine/google_drive_onebox.rb +7 -7
- data/lib/onebox/engine/google_maps_onebox.rb +10 -8
- data/lib/onebox/engine/google_photos_onebox.rb +18 -18
- data/lib/onebox/engine/google_play_app_onebox.rb +3 -7
- data/lib/onebox/engine/imgur_onebox.rb +2 -2
- data/lib/onebox/engine/instagram_onebox.rb +4 -5
- data/lib/onebox/engine/kaltura_onebox.rb +8 -6
- data/lib/onebox/engine/opengraph_image.rb +0 -1
- data/lib/onebox/engine/pastebin_onebox.rb +11 -15
- data/lib/onebox/engine/pdf_onebox.rb +7 -15
- data/lib/onebox/engine/pubmed_onebox.rb +17 -12
- data/lib/onebox/engine/replit_onebox.rb +0 -1
- data/lib/onebox/engine/sketchfab_onebox.rb +8 -8
- data/lib/onebox/engine/slides_onebox.rb +10 -10
- data/lib/onebox/engine/soundcloud_onebox.rb +0 -1
- data/lib/onebox/engine/stack_exchange_onebox.rb +3 -2
- data/lib/onebox/engine/standard_embed.rb +2 -5
- data/lib/onebox/engine/steam_store_onebox.rb +6 -5
- data/lib/onebox/engine/trello_onebox.rb +4 -7
- data/lib/onebox/engine/twitch_clips_onebox.rb +1 -3
- data/lib/onebox/engine/twitch_stream_onebox.rb +1 -2
- data/lib/onebox/engine/twitch_video_onebox.rb +0 -2
- data/lib/onebox/engine/typeform_onebox.rb +7 -6
- data/lib/onebox/engine/vimeo_onebox.rb +9 -7
- data/lib/onebox/engine/wikimedia_onebox.rb +1 -2
- data/lib/onebox/engine/wikipedia_onebox.rb +12 -8
- data/lib/onebox/engine/youku_onebox.rb +7 -13
- data/lib/onebox/engine/youtube_onebox.rb +14 -13
- data/lib/onebox/file_type_finder.rb +0 -1
- data/lib/onebox/helpers.rb +7 -24
- data/lib/onebox/layout.rb +2 -14
- data/lib/onebox/matcher.rb +10 -8
- data/lib/onebox/mixins/git_blob_onebox.rb +8 -8
- data/lib/onebox/mixins/github_body.rb +30 -0
- data/lib/onebox/mixins/twitch_onebox.rb +0 -1
- data/lib/onebox/open_graph.rb +4 -4
- data/lib/onebox/preview.rb +3 -4
- data/lib/onebox/version.rb +1 -1
- data/templates/_layout.mustache +6 -2
- data/templates/allowlistedgeneric.mustache +8 -9
- data/templates/amazon.mustache +5 -2
- data/templates/github/github_body.mustache +5 -0
- data/templates/githubblob.mustache +44 -34
- data/templates/githubcommit.mustache +2 -10
- data/templates/githubfolder.mustache +2 -2
- data/templates/githubgist.mustache +9 -6
- data/templates/githubissue.mustache +9 -11
- data/templates/githubpullrequest.mustache +6 -18
- data/templates/gitlabblob.mustache +11 -4
- data/templates/googledocs.mustache +2 -2
- data/templates/googledrive.mustache +2 -2
- data/templates/googleplayapp.mustache +2 -1
- data/templates/instagram.mustache +1 -1
- data/templates/pastebin.mustache +6 -2
- data/templates/pdf.mustache +6 -3
- data/templates/stackexchange.mustache +1 -0
- data/templates/twitterstatus.mustache +20 -5
- data/templates/wikimedia.mustache +2 -2
- data/templates/wikipedia.mustache +2 -2
- data/templates/xkcd.mustache +2 -2
- metadata +7 -5
@@ -8,17 +8,21 @@ module Onebox
|
|
8
8
|
def self.git_regexp
|
9
9
|
/^https?:\/\/(www\.)?github\.com.*\/blob\//
|
10
10
|
end
|
11
|
+
|
11
12
|
def self.onebox_name
|
12
13
|
"githubblob"
|
13
14
|
end
|
14
15
|
|
15
16
|
include Onebox::Mixins::GitBlobOnebox
|
17
|
+
|
16
18
|
def raw_regexp
|
17
19
|
/github\.com\/(?<user>[^\/]+)\/(?<repo>[^\/]+)\/blob\/(?<sha1>[^\/]+)\/(?<file>[^#]+)(#(L(?<from>[^-]*)(-L(?<to>.*))?))?/mi
|
18
20
|
end
|
21
|
+
|
19
22
|
def raw_template(m)
|
20
23
|
"https://raw.githubusercontent.com/#{m[:user]}/#{m[:repo]}/#{m[:sha1]}/#{m[:file]}"
|
21
24
|
end
|
25
|
+
|
22
26
|
def title
|
23
27
|
Sanitize.fragment(Onebox::Helpers.uri_unencode(link).sub(/^https?\:\/\/github\.com\//, ''))
|
24
28
|
end
|
@@ -1,13 +1,16 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require_relative '../mixins/github_body'
|
4
|
+
|
3
5
|
module Onebox
|
4
6
|
module Engine
|
5
7
|
class GithubCommitOnebox
|
6
8
|
include Engine
|
7
9
|
include LayoutSupport
|
8
10
|
include JSON
|
11
|
+
include Onebox::Mixins::GithubBody
|
9
12
|
|
10
|
-
matches_regexp
|
13
|
+
matches_regexp(/^https?:\/\/(?:www\.)?(?:(?:\w)+\.)?(github)\.com(?:\/)?(?:.)*\/commit\//)
|
11
14
|
always_https
|
12
15
|
|
13
16
|
def url
|
@@ -17,36 +20,30 @@ module Onebox
|
|
17
20
|
private
|
18
21
|
|
19
22
|
def match
|
20
|
-
return @match if @match
|
23
|
+
return @match if defined?(@match)
|
21
24
|
|
22
25
|
@match = @url.match(%{github\.com/(?<owner>[^/]+)/(?<repository>[^/]+)/commit/(?<sha>[^/]+)})
|
23
|
-
|
24
|
-
@match = @url.match(%{github\.com/(?<owner>[^/]+)/(?<repository>[^/]+)/pull/(?<pr>[^/]+)/commit/(?<sha>[^/]+)}) if @match.nil?
|
26
|
+
@match ||= @url.match(%{github\.com/(?<owner>[^/]+)/(?<repository>[^/]+)/pull/(?<pr>[^/]+)/commit/(?<sha>[^/]+)})
|
25
27
|
|
26
28
|
@match
|
27
29
|
end
|
28
30
|
|
29
31
|
def data
|
30
32
|
result = raw.clone
|
31
|
-
result['link'] = link
|
32
|
-
result['title'] = result['commit']['message'].split("\n").first
|
33
33
|
|
34
|
-
|
35
|
-
|
34
|
+
lines = result['commit']['message'].split("\n")
|
35
|
+
result['title'] = lines.first
|
36
|
+
result['body'], result['excerpt'] = compute_body(lines[1..lines.length].join("\n"))
|
36
37
|
|
37
|
-
message_words = message.gsub("\n\n", "\n").gsub("\n", "<br>").split(" ")
|
38
|
-
max_words = 20
|
39
|
-
result['message'] = message_words[0..max_words].join(" ")
|
40
|
-
result['message'] += "..." if message_words.length > max_words
|
41
|
-
result['message'] = result['message'].gsub("<br>", "\n")
|
42
|
-
end
|
43
|
-
|
44
|
-
ulink = URI(link)
|
45
38
|
committed_at = Time.parse(result['commit']['author']['date'])
|
46
39
|
result['committed_at'] = committed_at.strftime("%I:%M%p - %d %b %y %Z")
|
47
40
|
result['committed_at_date'] = committed_at.strftime("%F")
|
48
41
|
result['committed_at_time'] = committed_at.strftime("%T")
|
42
|
+
|
43
|
+
result['link'] = link
|
44
|
+
ulink = URI(link)
|
49
45
|
result['domain'] = "#{ulink.host}/#{ulink.path.split('/')[1]}/#{ulink.path.split('/')[2]}"
|
46
|
+
|
50
47
|
result
|
51
48
|
end
|
52
49
|
end
|
@@ -7,7 +7,7 @@ module Onebox
|
|
7
7
|
include StandardEmbed
|
8
8
|
include LayoutSupport
|
9
9
|
|
10
|
-
matches_regexp
|
10
|
+
matches_regexp(/^https?:\/\/(?:www\.)?(?:(?:\w)+\.)?(github)\.com[\:\d]*(\/[^\/]+){2}/)
|
11
11
|
always_https
|
12
12
|
|
13
13
|
def self.priority
|
@@ -9,7 +9,7 @@ module Onebox
|
|
9
9
|
|
10
10
|
MAX_FILES = 3
|
11
11
|
|
12
|
-
matches_regexp
|
12
|
+
matches_regexp(/^http(?:s)?:\/\/gist\.(?:(?:\w)+\.)?(github)\.com(?:\/)?/)
|
13
13
|
always_https
|
14
14
|
|
15
15
|
def url
|
@@ -76,7 +76,6 @@ module Onebox
|
|
76
76
|
@lines ||= @json["content"].split("\n")
|
77
77
|
end
|
78
78
|
end
|
79
|
-
|
80
79
|
end
|
81
80
|
end
|
82
81
|
end
|
@@ -1,5 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require_relative '../mixins/github_body'
|
4
|
+
|
3
5
|
module Onebox
|
4
6
|
module Engine
|
5
7
|
class GithubIssueOnebox
|
@@ -7,7 +9,9 @@ module Onebox
|
|
7
9
|
include Engine
|
8
10
|
include LayoutSupport
|
9
11
|
include JSON
|
10
|
-
|
12
|
+
include Onebox::Mixins::GithubBody
|
13
|
+
|
14
|
+
matches_regexp(/^https?:\/\/(?:www\.)?(?:(?:\w)+\.)?github\.com\/(?<org>.+)\/(?<repo>.+)\/issues\/([[:digit:]]+)/)
|
11
15
|
always_https
|
12
16
|
|
13
17
|
def url
|
@@ -22,32 +26,26 @@ module Onebox
|
|
22
26
|
end
|
23
27
|
|
24
28
|
def data
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
content_words = body_text.gsub("\n\n", "\n").gsub("\n", "<br>").split(" ") #one pass of removing double newline, then we change \n to <br> and later on we revert it back to \n this is a workaround to avoid losing newlines after we join it back.
|
29
|
-
max_words = 20
|
30
|
-
short_content = content_words[0..max_words].join(" ")
|
31
|
-
short_content += "..." if content_words.length > max_words
|
32
|
-
|
33
|
-
created_at = Time.parse(@raw['created_at'])
|
34
|
-
closed_at = Time.parse(@raw['closed_at']) if @raw['closed_at']
|
35
|
-
|
29
|
+
created_at = Time.parse(raw['created_at'])
|
30
|
+
closed_at = Time.parse(raw['closed_at']) if raw['closed_at']
|
31
|
+
body, excerpt = compute_body(raw['body'])
|
36
32
|
ulink = URI(link)
|
33
|
+
|
37
34
|
{
|
38
35
|
link: @url,
|
39
|
-
title:
|
40
|
-
|
41
|
-
|
42
|
-
|
36
|
+
title: raw["title"],
|
37
|
+
body: body,
|
38
|
+
excerpt: excerpt,
|
39
|
+
labels: raw["labels"],
|
40
|
+
user: raw['user'],
|
43
41
|
created_at: created_at.strftime("%I:%M%p - %d %b %y %Z"),
|
44
42
|
created_at_date: created_at.strftime("%F"),
|
45
43
|
created_at_time: created_at.strftime("%T"),
|
46
44
|
closed_at: closed_at&.strftime("%I:%M%p - %d %b %y %Z"),
|
47
45
|
closed_at_date: closed_at&.strftime("%F"),
|
48
46
|
closed_at_time: closed_at&.strftime("%T"),
|
49
|
-
closed_by:
|
50
|
-
avatar: "https://avatars1.githubusercontent.com/u/#{
|
47
|
+
closed_by: raw['closed_by'],
|
48
|
+
avatar: "https://avatars1.githubusercontent.com/u/#{raw['user']['id']}?v=2&s=96",
|
51
49
|
domain: "#{ulink.host}/#{ulink.path.split('/')[1]}/#{ulink.path.split('/')[2]}",
|
52
50
|
}
|
53
51
|
end
|
@@ -1,13 +1,18 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require_relative '../mixins/github_body'
|
4
|
+
|
3
5
|
module Onebox
|
4
6
|
module Engine
|
5
7
|
class GithubPullRequestOnebox
|
6
8
|
include Engine
|
7
9
|
include LayoutSupport
|
8
10
|
include JSON
|
11
|
+
include Onebox::Mixins::GithubBody
|
12
|
+
|
13
|
+
GITHUB_COMMENT_REGEX = /(<!--.*?-->\r\n)/
|
9
14
|
|
10
|
-
matches_regexp
|
15
|
+
matches_regexp(/^https?:\/\/(?:www\.)?(?:(?:\w)+\.)?(github)\.com(?:\/)?(?:.)*\/pull/)
|
11
16
|
always_https
|
12
17
|
|
13
18
|
def url
|
@@ -20,7 +25,6 @@ module Onebox
|
|
20
25
|
@match ||= @url.match(%r{github\.com/(?<owner>[^/]+)/(?<repository>[^/]+)/pull/(?<number>[^/]+)})
|
21
26
|
end
|
22
27
|
|
23
|
-
GITHUB_COMMENT_REGEX = /(<!--.*?-->\r\n)/
|
24
28
|
def data
|
25
29
|
result = raw.clone
|
26
30
|
result['link'] = link
|
@@ -33,8 +37,7 @@ module Onebox
|
|
33
37
|
ulink = URI(link)
|
34
38
|
result['domain'] = "#{ulink.host}/#{ulink.path.split('/')[1]}/#{ulink.path.split('/')[2]}"
|
35
39
|
|
36
|
-
body
|
37
|
-
result['body'] = body.present? ? body : nil
|
40
|
+
result['body'], result['excerpt'] = compute_body(result['body'])
|
38
41
|
|
39
42
|
result
|
40
43
|
end
|
@@ -8,17 +8,21 @@ module Onebox
|
|
8
8
|
def self.git_regexp
|
9
9
|
/^https?:\/\/(www\.)?gitlab\.com.*\/blob\//
|
10
10
|
end
|
11
|
+
|
11
12
|
def self.onebox_name
|
12
13
|
"gitlabblob"
|
13
14
|
end
|
14
15
|
|
15
16
|
include Onebox::Mixins::GitBlobOnebox
|
17
|
+
|
16
18
|
def raw_regexp
|
17
19
|
/gitlab\.com\/(?<user>[^\/]+)\/(?<repo>[^\/]+)\/blob\/(?<sha1>[^\/]+)\/(?<file>[^#]+)(#(L(?<from>[^-]*)(-L(?<to>.*))?))?/mi
|
18
20
|
end
|
21
|
+
|
19
22
|
def raw_template(m)
|
20
23
|
"https://gitlab.com/#{m[:user]}/#{m[:repo]}/raw/#{m[:sha1]}/#{m[:file]}"
|
21
24
|
end
|
25
|
+
|
22
26
|
def title
|
23
27
|
Sanitize.fragment(Onebox::Helpers.uri_unencode(link).sub(/^https?\:\/\/gitlab\.com\//, ''))
|
24
28
|
end
|
@@ -5,7 +5,7 @@ module Onebox
|
|
5
5
|
class GoogleCalendarOnebox
|
6
6
|
include Engine
|
7
7
|
|
8
|
-
matches_regexp
|
8
|
+
matches_regexp(/^(https?:)?\/\/((www|calendar)\.google\.[\w.]{2,}|goo\.gl)\/calendar\/.+$/)
|
9
9
|
always_https
|
10
10
|
requires_iframe_origins "https://calendar.google.com"
|
11
11
|
|
@@ -4,61 +4,43 @@ module Onebox
|
|
4
4
|
module Engine
|
5
5
|
class GoogleDocsOnebox
|
6
6
|
include Engine
|
7
|
+
include StandardEmbed
|
7
8
|
include LayoutSupport
|
8
9
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
document: :docs,
|
17
|
-
presentation: :slides,
|
18
|
-
forms: :forms,
|
19
|
-
}
|
20
|
-
end
|
10
|
+
SUPPORTED_ENDPOINTS = %w(spreadsheets document forms presentation)
|
11
|
+
SHORT_TYPES = {
|
12
|
+
spreadsheets: :sheets,
|
13
|
+
document: :docs,
|
14
|
+
presentation: :slides,
|
15
|
+
forms: :forms,
|
16
|
+
}
|
21
17
|
|
22
|
-
matches_regexp
|
18
|
+
matches_regexp(/^(https?:)?\/\/(docs\.google\.com)\/(?<endpoint>(#{SUPPORTED_ENDPOINTS.join('|')}))\/d\/((?<key>[\w-]*)).+$/)
|
23
19
|
always_https
|
24
20
|
|
25
|
-
|
21
|
+
private
|
26
22
|
|
27
23
|
def data
|
28
|
-
og_data =
|
29
|
-
|
30
|
-
title: og_data[:title] || "Google #{shorttype.to_s.capitalize}",
|
31
|
-
description: Onebox::Helpers.truncate(og_data[:description], 250) || "This #{shorttype.to_s.chop.capitalize} is private",
|
32
|
-
type: shorttype
|
33
|
-
}
|
34
|
-
result
|
35
|
-
end
|
24
|
+
og_data = get_opengraph
|
25
|
+
short_type = SHORT_TYPES[match[:endpoint].to_sym]
|
36
26
|
|
37
|
-
|
38
|
-
|
39
|
-
|
27
|
+
description = if Onebox::Helpers.blank?(og_data.description)
|
28
|
+
"This #{short_type.to_s.chop.capitalize} is private"
|
29
|
+
else
|
30
|
+
Onebox::Helpers.truncate(og_data.description, 250)
|
31
|
+
end
|
40
32
|
|
41
|
-
|
42
|
-
|
33
|
+
{
|
34
|
+
link: link,
|
35
|
+
title: og_data.title || "Google #{short_type.to_s.capitalize}",
|
36
|
+
description: description,
|
37
|
+
type: short_type
|
38
|
+
}
|
43
39
|
end
|
44
40
|
|
45
41
|
def match
|
46
42
|
@match ||= @url.match(@@matcher)
|
47
43
|
end
|
48
|
-
|
49
|
-
def get_og_data
|
50
|
-
response = Onebox::Helpers.fetch_response(url, redirect_limit: 10) rescue nil
|
51
|
-
html = Nokogiri::HTML(response)
|
52
|
-
og_data = {}
|
53
|
-
html.css('meta').each do |m|
|
54
|
-
if m.attribute('property') && m.attribute('property').to_s.match(/^og:/i)
|
55
|
-
m_content = m.attribute('content').to_s.strip
|
56
|
-
m_property = m.attribute('property').to_s.gsub('og:', '')
|
57
|
-
og_data[m_property.to_sym] = m_content
|
58
|
-
end
|
59
|
-
end
|
60
|
-
og_data
|
61
|
-
end
|
62
44
|
end
|
63
45
|
end
|
64
46
|
end
|
@@ -7,7 +7,7 @@ module Onebox
|
|
7
7
|
include StandardEmbed
|
8
8
|
include LayoutSupport
|
9
9
|
|
10
|
-
matches_regexp
|
10
|
+
matches_regexp(/^(https?:)?\/\/(drive\.google\.com)\/file\/d\/(?<key>[\w-]*)\/.+$/)
|
11
11
|
always_https
|
12
12
|
|
13
13
|
protected
|
@@ -18,12 +18,12 @@ module Onebox
|
|
18
18
|
title = "#{og_data.title} (video)" if og_data.type =~ /^video[\/\.]/
|
19
19
|
description = og_data.description || "Google Drive file."
|
20
20
|
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
21
|
+
{
|
22
|
+
link: link,
|
23
|
+
title: title,
|
24
|
+
description: Onebox::Helpers.truncate(description, 250),
|
25
|
+
image: og_data.image
|
26
|
+
}
|
27
27
|
end
|
28
28
|
end
|
29
29
|
end
|
@@ -22,7 +22,6 @@ module Onebox
|
|
22
22
|
end
|
23
23
|
|
24
24
|
always_https
|
25
|
-
|
26
25
|
requires_iframe_origins("https://maps.google.com", "https://google.com")
|
27
26
|
|
28
27
|
# Matches shortened Google Maps URLs
|
@@ -120,8 +119,6 @@ module Onebox
|
|
120
119
|
@placeholder = "https://maps.googleapis.com/maps/api/streetview?size=690x400&location=#{lon},#{lat}&pano=#{panoid}&fov=#{zoom}&heading=#{heading}&pitch=#{pitch}&sensor=false"
|
121
120
|
|
122
121
|
when :canonical
|
123
|
-
uri = URI(@url)
|
124
|
-
|
125
122
|
query = URI::decode_www_form(uri.query).to_h
|
126
123
|
if !query.has_key?("ll")
|
127
124
|
raise ArgumentError, "canonical url lacks location argument" unless query.has_key?("sll")
|
@@ -164,19 +161,24 @@ module Onebox
|
|
164
161
|
end
|
165
162
|
|
166
163
|
def follow_redirect!
|
167
|
-
uri = URI(@url)
|
168
164
|
begin
|
169
|
-
http = Net::HTTP.start(
|
170
|
-
|
171
|
-
|
165
|
+
http = Net::HTTP.start(
|
166
|
+
uri.host,
|
167
|
+
uri.port,
|
168
|
+
use_ssl: uri.scheme == 'https',
|
169
|
+
open_timeout: timeout,
|
170
|
+
read_timeout: timeout
|
171
|
+
)
|
172
172
|
|
173
|
+
response = http.head(uri.path)
|
173
174
|
raise "unexpected response code #{response.code}" unless %w(200 301 302).include?(response.code)
|
175
|
+
|
174
176
|
@url = response.code == "200" ? uri.to_s : response["Location"]
|
177
|
+
@uri = URI(@url)
|
175
178
|
ensure
|
176
179
|
http.finish rescue nil
|
177
180
|
end
|
178
181
|
end
|
179
|
-
|
180
182
|
end
|
181
183
|
end
|
182
184
|
end
|
@@ -11,9 +11,9 @@ module Onebox
|
|
11
11
|
|
12
12
|
def to_html
|
13
13
|
og = get_opengraph
|
14
|
-
return video_html(og) if
|
15
|
-
return album_html(og) if
|
16
|
-
return image_html(og) if
|
14
|
+
return video_html(og) if og.video_secure_url
|
15
|
+
return album_html(og) if og.type == "google_photos:photo_album"
|
16
|
+
return image_html(og) if og.image
|
17
17
|
nil
|
18
18
|
end
|
19
19
|
|
@@ -32,7 +32,7 @@ module Onebox
|
|
32
32
|
<h3><a href="#{escaped_url}" target="_blank" rel="nofollow ugc noopener">#{og.title}</a></h3>
|
33
33
|
<div class="aspect-image-full-size">
|
34
34
|
<a href="#{escaped_url}" target="_blank" rel="nofollow ugc noopener">
|
35
|
-
<img src="#{og.
|
35
|
+
<img src="#{og.secure_image_url}" class="scale-image"/>
|
36
36
|
<span class="instagram-video-icon"></span>
|
37
37
|
</a>
|
38
38
|
</div>
|
@@ -46,27 +46,27 @@ module Onebox
|
|
46
46
|
album_title = og.description.nil? ? og.title : "[#{og.description}] #{og.title}"
|
47
47
|
|
48
48
|
<<-HTML
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
</span>
|
49
|
+
<div class='onebox google-photos-album'>
|
50
|
+
<a href='#{escaped_url}' target='_blank' rel='noopener'>
|
51
|
+
<span class='outer-box' style='width:#{og.image_width}px'>
|
52
|
+
<span class='inner-box'>
|
53
|
+
<span class='album-title'>#{Onebox::Helpers.truncate(album_title, 80)}</span>
|
55
54
|
</span>
|
56
|
-
|
57
|
-
|
58
|
-
</
|
59
|
-
|
55
|
+
</span>
|
56
|
+
<img src='#{og.secure_image_url}' #{og.title_attr} height='#{og.image_height}' width='#{og.image_width}'>
|
57
|
+
</a>
|
58
|
+
</div>
|
59
|
+
HTML
|
60
60
|
end
|
61
61
|
|
62
62
|
def image_html(og)
|
63
63
|
escaped_url = ::Onebox::Helpers.normalize_url_for_output(url)
|
64
64
|
|
65
65
|
<<-HTML
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
66
|
+
<a href='#{escaped_url}' target='_blank' rel='noopener' class="onebox">
|
67
|
+
<img src='#{og.secure_image_url}' #{og.title_attr} alt='Google Photos' height='#{og.image_height}' width='#{og.image_width}'>
|
68
|
+
</a>
|
69
|
+
HTML
|
70
70
|
end
|
71
71
|
end
|
72
72
|
end
|