onebox 1.9.28 → 1.9.29

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3f75f019a1f1010a08e3f1e054f571364f34258849587b38cc87f325df8cbb16
4
- data.tar.gz: 3e51c2164d33a7e0e093745c2e36a841946fee472da1790f8bb1dc6ceca63649
3
+ metadata.gz: c996c2a3781e2a1d668b65673e7ac68ff530354a6290b83a135fc4e9994525b1
4
+ data.tar.gz: 3b2b00129314e9dcfc1cc4acaeb8b3455e675f5eeefae1d732c18cf9d80cbd7c
5
5
  SHA512:
6
- metadata.gz: ae466b4cad8aaf006383e2a6e8426e383170344272ce8a80ba2752a49461bf0acd71b02e976566cb6ed5f449e7903ea534e4895a8a991a1672319593aee53ba7
7
- data.tar.gz: ed6f0545e705ca84509affc4a0f532cc95e24b9cb0ca83cc2e8a7160d4e253b32adf4d11e05f377796f23a0ac3ddb3201670cf7397effe2914b9381818775100
6
+ metadata.gz: d99a41fe572876a523e9abec9319db2abb929745ed33570c814cdf7715378e75a1ad9e8f24d4ede3106a8b86b47dbccddef31e056b3f2561728eec5f6f3baa74
7
+ data.tar.gz: 7ea34a65e1424176cea0711ca4c2421e6e38ec4cd2b2d1830ca254e98cfb36d1039ba33cba169874ea83a0cde65171b4a7a6d75ceede019bbf11109c6cc74bd7
@@ -1 +1,2 @@
1
- inherit_from: https://raw.githubusercontent.com/discourse/discourse/master/.rubocop.yml
1
+ inherit_gem:
2
+ rubocop-discourse: default.yml
data/README.md CHANGED
@@ -46,6 +46,14 @@ preview = Onebox.preview(url)
46
46
  "#{preview}" == preview.to_s #=> true
47
47
  ```
48
48
 
49
+ ### Twitch Onebox
50
+
51
+ To be able to embed Twitch video and clips, pass `hostname` in the options to `Onebox.preview`
52
+
53
+ ```ruby
54
+ preview = Onebox.preview(url, hostname: 'www.example.com')
55
+ ```
56
+
49
57
  Ruby Support
50
58
  ------------
51
59
 
@@ -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
@@ -37,7 +37,7 @@ module Onebox
37
37
  <div class="aspect-image-full-size">
38
38
  <a href="#{raw[:url]}" target="_blank" rel="nofollow ugc noopener">
39
39
  <img src="#{raw[:image]}" class="scale-image"/>
40
- <span class="reddit-video-icon"></span>
40
+ <span class="instagram-video-icon"></span>
41
41
  </a>
42
42
  </div>
43
43
  <div class="description"><p>#{raw[:description]}</p></div>
@@ -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|
@@ -24,7 +24,9 @@ module Onebox
24
24
  end
25
25
 
26
26
  def to_html
27
- "<iframe src=\"//#{base_url}#{query_params}&autoplay=false\" width=\"620\" height=\"378\" frameborder=\"0\" style=\"overflow: hidden;\" scrolling=\"no\" allowfullscreen=\"allowfullscreen\"></iframe>"
27
+ <<~HTML
28
+ <iframe src="//#{base_url}#{query_params}&parent=#{options[:hostname]}&autoplay=false" width="620" height="378" frameborder="0" style="overflow: hidden;" scrolling="no" allowfullscreen="allowfullscreen"></iframe>
29
+ HTML
28
30
  end
29
31
  end
30
32
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Onebox
4
- VERSION = "1.9.28"
4
+ VERSION = "1.9.29"
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.28
4
+ version: 1.9.29
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-05-06 00:00:00.000000000 Z
13
+ date: 2020-06-24 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
@@ -434,7 +420,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
434
420
  - !ruby/object:Gem::Version
435
421
  version: '0'
436
422
  requirements: []
437
- rubygems_version: 3.1.2
423
+ rubygems_version: 3.0.3
438
424
  signing_key:
439
425
  specification_version: 4
440
426
  summary: A gem for generating embeddable HTML previews from URLs.