onebox 1.9.27.2 → 1.9.28.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +2 -1
- data/lib/onebox/engine.rb +2 -1
- data/lib/onebox/engine/facebook_media_onebox.rb +32 -0
- data/lib/onebox/engine/instagram_onebox.rb +17 -16
- data/lib/onebox/engine/{reddit_image_onebox.rb → reddit_media_onebox.rb} +20 -1
- data/lib/onebox/engine/twitter_status_onebox.rb +5 -1
- data/lib/onebox/engine/whitelisted_generic_onebox.rb +2 -0
- data/lib/onebox/version.rb +1 -1
- data/onebox.gemspec +1 -2
- data/templates/instagram.mustache +2 -2
- metadata +6 -19
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2f0921bd8d91072c930eccee436ef05e362fbe20b0d4ec8d39cecb74580723c9
|
4
|
+
data.tar.gz: 58ff915a7d3a7dcbf2a7a0bcaf66366ad6210ba17b84695695be9a067c54be92
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5eb93e33a7c8c4919d47d03975545d08be18038d83e6b763ab5e7fabb1fe9b9a1ddc35a688656234e37231dff9b131900e87d00d0363e5e6f3454d9dad2988ed
|
7
|
+
data.tar.gz: 7097f982b53eb11d057f601af63e928941f086534a03ec7d92eb7794bf2981a9138d6891add442f52345b91a70f611397a86e4647a7302a12991d8560c5c96ba
|
data/.rubocop.yml
CHANGED
@@ -1 +1,2 @@
|
|
1
|
-
|
1
|
+
inherit_gem:
|
2
|
+
rubocop-discourse: default.yml
|
data/lib/onebox/engine.rb
CHANGED
@@ -176,5 +176,6 @@ require_relative "engine/instagram_onebox"
|
|
176
176
|
require_relative "engine/gitlab_blob_onebox"
|
177
177
|
require_relative "engine/google_photos_onebox"
|
178
178
|
require_relative "engine/kaltura_onebox"
|
179
|
-
require_relative "engine/
|
179
|
+
require_relative "engine/reddit_media_onebox"
|
180
180
|
require_relative "engine/google_drive_onebox"
|
181
|
+
require_relative "engine/facebook_media_onebox"
|
@@ -0,0 +1,32 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Onebox
|
4
|
+
module Engine
|
5
|
+
class FacebookMediaOnebox
|
6
|
+
include Engine
|
7
|
+
include StandardEmbed
|
8
|
+
|
9
|
+
matches_regexp(/^https?:\/\/.*\.facebook\.com\/(\w+)\/(videos|\?).*/)
|
10
|
+
always_https
|
11
|
+
|
12
|
+
def to_html
|
13
|
+
metadata = get_twitter
|
14
|
+
if metadata.present? && metadata[:card] == "player" && metadata[:player].present?
|
15
|
+
<<-HTML
|
16
|
+
<iframe src="#{metadata[:player]}"
|
17
|
+
width="#{metadata[:player_width]}"
|
18
|
+
height="#{metadata[:player_height]}"
|
19
|
+
scrolling="no"
|
20
|
+
frameborder="0"
|
21
|
+
allowfullscreen>
|
22
|
+
</iframe>
|
23
|
+
HTML
|
24
|
+
else
|
25
|
+
html = Onebox::Engine::WhitelistedGenericOnebox.new(@url, @timeout).to_html
|
26
|
+
return if Onebox::Helpers.blank?(html)
|
27
|
+
html
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -1,7 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require 'htmlentities'
|
4
|
-
|
5
3
|
module Onebox
|
6
4
|
module Engine
|
7
5
|
class InstagramOnebox
|
@@ -9,25 +7,28 @@ module Onebox
|
|
9
7
|
include StandardEmbed
|
10
8
|
include LayoutSupport
|
11
9
|
|
12
|
-
matches_regexp(/^https?:\/\/(?:www\.)?(?:instagram\.com|instagr\.am)\/?(?:.*)\/p
|
10
|
+
matches_regexp(/^https?:\/\/(?:www\.)?(?:instagram\.com|instagr\.am)\/?(?:.*)\/p\/[a-zA-Z\d_-]+/)
|
13
11
|
always_https
|
14
12
|
|
15
|
-
def
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
json_data = html_doc.xpath('//script[contains(text(),"window._sharedData")]').text.to_s
|
20
|
-
title = "[Album] #{title}" if json_data =~ /"edge_sidecar_to_children"/
|
13
|
+
def clean_url
|
14
|
+
url.scan(/^https?:\/\/(?:www\.)?(?:instagram\.com|instagr\.am)\/?(?:.*)\/p\/[a-zA-Z\d_-]+/).flatten.first
|
15
|
+
end
|
21
16
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
17
|
+
def data
|
18
|
+
oembed = get_oembed
|
19
|
+
permalink = clean_url.gsub("/#{oembed.author_name}/", "/")
|
20
|
+
|
21
|
+
{ link: permalink,
|
22
|
+
title: "@#{oembed.author_name}",
|
23
|
+
image: "#{permalink}/media/?size=l",
|
24
|
+
description: Onebox::Helpers.truncate(oembed.title, 250)
|
25
|
+
}
|
26
|
+
end
|
26
27
|
|
27
|
-
|
28
|
-
result[:video_link] = og.url if !og.video_secure_url.nil?
|
28
|
+
protected
|
29
29
|
|
30
|
-
|
30
|
+
def get_oembed_url
|
31
|
+
oembed_url = "https://api.instagram.com/oembed/?url=#{clean_url}"
|
31
32
|
end
|
32
33
|
end
|
33
34
|
end
|
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
module Onebox
|
4
4
|
module Engine
|
5
|
-
class
|
5
|
+
class RedditMediaOnebox
|
6
6
|
include Engine
|
7
7
|
include StandardEmbed
|
8
8
|
|
@@ -25,6 +25,25 @@ module Onebox
|
|
25
25
|
</article>
|
26
26
|
</aside>
|
27
27
|
HTML
|
28
|
+
elsif raw[:type] =~ /^video[\/\.]/
|
29
|
+
<<-HTML
|
30
|
+
<aside class="onebox reddit">
|
31
|
+
<header class="source">
|
32
|
+
<img src="#{raw[:favicon]}" class="site-icon" width="16" height="16">
|
33
|
+
<a href="#{raw[:url]}" target="_blank" rel="nofollow ugc noopener">#{raw[:site_name]}</a>
|
34
|
+
</header>
|
35
|
+
<article class="onebox-body">
|
36
|
+
<h3><a href="#{raw[:url]}" target="_blank" rel="nofollow ugc noopener">#{raw[:title]}</a></h3>
|
37
|
+
<div class="aspect-image-full-size">
|
38
|
+
<a href="#{raw[:url]}" target="_blank" rel="nofollow ugc noopener">
|
39
|
+
<img src="#{raw[:image]}" class="scale-image"/>
|
40
|
+
<span class="instagram-video-icon"></span>
|
41
|
+
</a>
|
42
|
+
</div>
|
43
|
+
<div class="description"><p>#{raw[:description]}</p></div>
|
44
|
+
</article>
|
45
|
+
</aside>
|
46
|
+
HTML
|
28
47
|
else
|
29
48
|
html = Onebox::Engine::WhitelistedGenericOnebox.new(@url, @timeout).to_html
|
30
49
|
return if Onebox::Helpers.blank?(html)
|
@@ -10,10 +10,14 @@ module Onebox
|
|
10
10
|
matches_regexp(/^https?:\/\/(mobile\.|www\.)?twitter\.com\/.+?\/status(es)?\/\d+(\/(video|photo)\/\d?+)?+(\/?\?.*)?\/?$/)
|
11
11
|
always_https
|
12
12
|
|
13
|
+
def http_params
|
14
|
+
{ 'User-Agent' => 'DiscourseBot/1.0' }
|
15
|
+
end
|
16
|
+
|
13
17
|
private
|
14
18
|
|
15
19
|
def get_twitter_data
|
16
|
-
response = Onebox::Helpers.fetch_response(url) rescue nil
|
20
|
+
response = Onebox::Helpers.fetch_response(url, nil, nil, http_params) rescue nil
|
17
21
|
html = Nokogiri::HTML(response)
|
18
22
|
twitter_data = {}
|
19
23
|
html.css('meta').each do |m|
|
@@ -57,6 +57,7 @@ module Onebox
|
|
57
57
|
ehow.com
|
58
58
|
espn.go.com
|
59
59
|
etsy.com
|
60
|
+
facebook.com
|
60
61
|
findery.com
|
61
62
|
folksy.com
|
62
63
|
forbes.com
|
@@ -77,6 +78,7 @@ module Onebox
|
|
77
78
|
kickstarter.com
|
78
79
|
kinomap.com
|
79
80
|
lessonplanet.com
|
81
|
+
linkedin.com
|
80
82
|
liveleak.com
|
81
83
|
livestream.com
|
82
84
|
mashable.com
|
data/lib/onebox/version.rb
CHANGED
data/onebox.gemspec
CHANGED
@@ -33,8 +33,7 @@ Gem::Specification.new do |spec|
|
|
33
33
|
spec.add_development_dependency 'fakeweb', '~> 1.3'
|
34
34
|
spec.add_development_dependency 'pry', '~> 0.10'
|
35
35
|
spec.add_development_dependency 'mocha', '~> 1.1'
|
36
|
-
spec.add_development_dependency 'rubocop', '~>
|
37
|
-
spec.add_development_dependency 'rubocop-discourse', '~> 1.0.1'
|
36
|
+
spec.add_development_dependency 'rubocop-discourse', '~> 2.1.2'
|
38
37
|
spec.add_development_dependency 'twitter', '~> 4.8'
|
39
38
|
spec.add_development_dependency 'guard-rspec', '~> 4.2.8'
|
40
39
|
spec.add_development_dependency 'sinatra', '~> 1.4'
|
@@ -2,9 +2,9 @@
|
|
2
2
|
|
3
3
|
{{#image}}
|
4
4
|
<div class="instagram-images">
|
5
|
-
|
5
|
+
<a href="{{{link}}}" target="_blank" rel="noopener">
|
6
6
|
<img class="instagram-image" src="{{{image}}}"/>
|
7
|
-
|
7
|
+
</a>
|
8
8
|
</div>
|
9
9
|
{{/image}}
|
10
10
|
|
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.9.
|
4
|
+
version: 1.9.28.4
|
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: 2020-
|
13
|
+
date: 2020-06-11 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: addressable
|
@@ -180,34 +180,20 @@ dependencies:
|
|
180
180
|
- - "~>"
|
181
181
|
- !ruby/object:Gem::Version
|
182
182
|
version: '1.1'
|
183
|
-
- !ruby/object:Gem::Dependency
|
184
|
-
name: rubocop
|
185
|
-
requirement: !ruby/object:Gem::Requirement
|
186
|
-
requirements:
|
187
|
-
- - "~>"
|
188
|
-
- !ruby/object:Gem::Version
|
189
|
-
version: 0.78.0
|
190
|
-
type: :development
|
191
|
-
prerelease: false
|
192
|
-
version_requirements: !ruby/object:Gem::Requirement
|
193
|
-
requirements:
|
194
|
-
- - "~>"
|
195
|
-
- !ruby/object:Gem::Version
|
196
|
-
version: 0.78.0
|
197
183
|
- !ruby/object:Gem::Dependency
|
198
184
|
name: rubocop-discourse
|
199
185
|
requirement: !ruby/object:Gem::Requirement
|
200
186
|
requirements:
|
201
187
|
- - "~>"
|
202
188
|
- !ruby/object:Gem::Version
|
203
|
-
version: 1.
|
189
|
+
version: 2.1.2
|
204
190
|
type: :development
|
205
191
|
prerelease: false
|
206
192
|
version_requirements: !ruby/object:Gem::Requirement
|
207
193
|
requirements:
|
208
194
|
- - "~>"
|
209
195
|
- !ruby/object:Gem::Version
|
210
|
-
version: 1.
|
196
|
+
version: 2.1.2
|
211
197
|
- !ruby/object:Gem::Dependency
|
212
198
|
name: twitter
|
213
199
|
requirement: !ruby/object:Gem::Requirement
|
@@ -321,6 +307,7 @@ files:
|
|
321
307
|
- lib/onebox/engine/bandcamp_onebox.rb
|
322
308
|
- lib/onebox/engine/cloudapp_onebox.rb
|
323
309
|
- lib/onebox/engine/coub_onebox.rb
|
310
|
+
- lib/onebox/engine/facebook_media_onebox.rb
|
324
311
|
- lib/onebox/engine/five_hundred_px_onebox.rb
|
325
312
|
- lib/onebox/engine/flickr_onebox.rb
|
326
313
|
- lib/onebox/engine/flickr_shortened_onebox.rb
|
@@ -349,7 +336,7 @@ files:
|
|
349
336
|
- lib/onebox/engine/pastebin_onebox.rb
|
350
337
|
- lib/onebox/engine/pdf_onebox.rb
|
351
338
|
- lib/onebox/engine/pubmed_onebox.rb
|
352
|
-
- lib/onebox/engine/
|
339
|
+
- lib/onebox/engine/reddit_media_onebox.rb
|
353
340
|
- lib/onebox/engine/replit_onebox.rb
|
354
341
|
- lib/onebox/engine/simplecast_onebox.rb
|
355
342
|
- lib/onebox/engine/sketchfab_onebox.rb
|