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 +4 -4
- data/.rubocop.yml +2 -1
- data/README.md +8 -0
- data/lib/onebox/engine/instagram_onebox.rb +17 -16
- data/lib/onebox/engine/reddit_media_onebox.rb +1 -1
- data/lib/onebox/engine/twitter_status_onebox.rb +5 -1
- data/lib/onebox/mixins/twitch_onebox.rb +3 -1
- data/lib/onebox/version.rb +1 -1
- data/onebox.gemspec +1 -2
- data/templates/instagram.mustache +2 -2
- metadata +5 -19
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c996c2a3781e2a1d668b65673e7ac68ff530354a6290b83a135fc4e9994525b1
|
4
|
+
data.tar.gz: 3b2b00129314e9dcfc1cc4acaeb8b3455e675f5eeefae1d732c18cf9d80cbd7c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d99a41fe572876a523e9abec9319db2abb929745ed33570c814cdf7715378e75a1ad9e8f24d4ede3106a8b86b47dbccddef31e056b3f2561728eec5f6f3baa74
|
7
|
+
data.tar.gz: 7ea34a65e1424176cea0711ca4c2421e6e38ec4cd2b2d1830ca254e98cfb36d1039ba33cba169874ea83a0cde65171b4a7a6d75ceede019bbf11109c6cc74bd7
|
data/.rubocop.yml
CHANGED
@@ -1 +1,2 @@
|
|
1
|
-
|
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
|
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
|
@@ -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="
|
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
|
-
|
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
|
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.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-
|
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.
|
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
|
@@ -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.
|
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.
|