onebox 2.2.12 → 2.2.17
Sign up to get free protection for your applications and to get access to all the features.
- 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
|