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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: fca47c06a126297d920bed356ad801c63eeb0d6f43b522f39d3216ec20484315
4
- data.tar.gz: 5e5beb3d0c7c5a06223f7477bdf7f7576a2931f136c12c77e7cdc26c450a9369
3
+ metadata.gz: 2f0921bd8d91072c930eccee436ef05e362fbe20b0d4ec8d39cecb74580723c9
4
+ data.tar.gz: 58ff915a7d3a7dcbf2a7a0bcaf66366ad6210ba17b84695695be9a067c54be92
5
5
  SHA512:
6
- metadata.gz: 8d1a204e8e952f4146988dce521f16a8729a31798671befdb56f2e13513744f63c94208edbeb0a7212c1b08d73c4b3224053f1d0a569fd754be3502d7c7e50a2
7
- data.tar.gz: b0f9a0bff3d4013d492e7578034fb520f6f9cab4bd57f7c389e5a39b25801461582f0bc7c6ee432bb4ea2665c444bf3f980319343bd1d57f665643bd1e0881c7
6
+ metadata.gz: 5eb93e33a7c8c4919d47d03975545d08be18038d83e6b763ab5e7fabb1fe9b9a1ddc35a688656234e37231dff9b131900e87d00d0363e5e6f3454d9dad2988ed
7
+ data.tar.gz: 7097f982b53eb11d057f601af63e928941f086534a03ec7d92eb7794bf2981a9138d6891add442f52345b91a70f611397a86e4647a7302a12991d8560c5c96ba
@@ -1 +1,2 @@
1
- inherit_from: https://raw.githubusercontent.com/discourse/discourse/master/.rubocop.yml
1
+ inherit_gem:
2
+ rubocop-discourse: default.yml
@@ -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/reddit_image_onebox"
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 data
16
- og = get_opengraph
17
- title = og.title.split(":")[0].strip.gsub(" on Instagram", "")
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
- result = { link: og.url,
23
- title: Onebox::Helpers.truncate(title, 80),
24
- description: og.description(250)
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
- result[:image] = og.image if !og.image.nil?
28
- result[:video_link] = og.url if !og.video_secure_url.nil?
28
+ protected
29
29
 
30
- result
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 RedditImageOnebox
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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Onebox
4
- VERSION = "1.9.27.2"
4
+ VERSION = "1.9.28.4"
5
5
  end
@@ -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', '~> 0.78.0'
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
- {{#video_link}} <a href="{{{video_link}}}" target="_blank" rel="noopener"> {{/video_link}}
5
+ <a href="{{{link}}}" target="_blank" rel="noopener">
6
6
  <img class="instagram-image" src="{{{image}}}"/>
7
- {{#video_link}} <span class="instagram-video-icon"></span></a> {{/video_link}}
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.27.2
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-04-29 00:00:00.000000000 Z
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.0.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.0.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/reddit_image_onebox.rb
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