onebox 2.2.15 → 2.2.19

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: 5e2169ef1cfb44f0208566f5ecff7bd7c5d2bbe2f12b58791f50aa24b776e56d
4
- data.tar.gz: 9f9d38b578e46e6ce8c8c007577ff02522eab24f3dcc42f9eabd5b838a668e72
3
+ metadata.gz: 6a892a3207f5adc40ff6c9924e52cfaa41e332c0890dfb52df2a15476900ec9a
4
+ data.tar.gz: 9fee19ab2aafa30845f6a44852e5ee6822fd702b762597740dee28c6136374ad
5
5
  SHA512:
6
- metadata.gz: e293af57162b61ad0fa3472b7d9b35709f13504308e69eba45f40e9babff53e0258186add06ed4a89bc8305b8903dc49718c274659b5fca0712bc26d281ca7d4
7
- data.tar.gz: 3bb70c552e010149bc32fd4c9dbe416cd6ae0098b4286e5894fbc12c07628b5079c0463ad78b54ab6dc773954e055c9195aea5ac180ab8bdf7dca3847db1bc96
6
+ metadata.gz: dae1b6efe6dede26280478b904c9fa7fb128bdddc42f7b751b8acbaa80cbd1ba2b7717093105c12cef376fc754faf53f0fc5989fb94c9927925369c4f9527f7b
7
+ data.tar.gz: e5243223f4206de9b7bba0af587512dd786515f28687a5939b0cabfa71d91bc8742f0d75cbaffc272e8a6c00cae26feeca0999ebb7d611a650be2149ca718a99
@@ -89,25 +89,31 @@ module Onebox
89
89
 
90
90
  def video_id
91
91
  @video_id ||= begin
92
+ id = nil
93
+
92
94
  # http://youtu.be/afyK1HSFfgw
93
95
  if uri.host["youtu.be"]
94
96
  id = uri.path[/\/([\w\-]+)/, 1]
95
- return id if id
96
97
  end
97
98
 
98
99
  # https://www.youtube.com/embed/vsF0K3Ou1v0
99
100
  if uri.path["/embed/"]
100
- id = uri.path[/\/embed\/([\w\-]+)/, 1]
101
- return id if id
101
+ id ||= uri.path[/\/embed\/([\w\-]+)/, 1]
102
102
  end
103
103
 
104
104
  # https://www.youtube.com/watch?v=Z0UISCEe52Y
105
- params['v']
105
+ id ||= params['v']
106
+
107
+ sanitize_yt_id(id)
106
108
  end
107
109
  end
108
110
 
109
111
  def list_id
110
- @list_id ||= params['list']
112
+ @list_id ||= sanitize_yt_id(params['list'])
113
+ end
114
+
115
+ def sanitize_yt_id(raw)
116
+ raw&.match?(/\A[\w-]+\z/) ? raw : nil
111
117
  end
112
118
 
113
119
  def embed_params
@@ -26,23 +26,7 @@ module Onebox
26
26
 
27
27
  def self.fetch_html_doc(url, headers = nil, body_cacher = nil)
28
28
  response = (fetch_response(url, headers: headers, body_cacher: body_cacher) rescue nil)
29
- doc = Nokogiri::HTML(response)
30
- uri = Addressable::URI.parse(url)
31
-
32
- ignore_canonical_tag = doc.at('meta[property="og:ignore_canonical"]')
33
- should_ignore_canonical = IGNORE_CANONICAL_DOMAINS.map { |hostname| uri.hostname.match?(hostname) }.any?
34
-
35
- unless (ignore_canonical_tag && ignore_canonical_tag['content'].to_s == 'true') || should_ignore_canonical
36
- # prefer canonical link
37
- canonical_link = doc.at('//link[@rel="canonical"]/@href')
38
- canonical_uri = Addressable::URI.parse(canonical_link)
39
- if canonical_link && "#{canonical_uri.host}#{canonical_uri.path}" != "#{uri.host}#{uri.path}"
40
- response = (fetch_response(canonical_uri.to_s, headers: headers, body_cacher: body_cacher) rescue nil)
41
- doc = Nokogiri::HTML(response) if response
42
- end
43
- end
44
-
45
- doc
29
+ Nokogiri::HTML(response)
46
30
  end
47
31
 
48
32
  def self.fetch_response(location, redirect_limit: 5, domain: nil, headers: nil, body_cacher: nil)
@@ -63,8 +47,7 @@ module Onebox
63
47
  end
64
48
 
65
49
  result = StringIO.new
66
- Net::HTTP.start(uri.host, uri.port, use_ssl: uri.normalized_scheme == 'https') do |http|
67
- http.open_timeout = Onebox.options.connect_timeout
50
+ Net::HTTP.start(uri.host, uri.port, open_timeout: Onebox.options.connect_timeout, use_ssl: uri.normalized_scheme == 'https') do |http|
68
51
  http.read_timeout = Onebox.options.timeout
69
52
  http.verify_mode = OpenSSL::SSL::VERIFY_NONE # Work around path building bugs
70
53
 
@@ -118,8 +101,7 @@ module Onebox
118
101
  def self.fetch_content_length(location)
119
102
  uri = URI(location)
120
103
 
121
- Net::HTTP.start(uri.host, uri.port, use_ssl: uri.is_a?(URI::HTTPS)) do |http|
122
- http.open_timeout = Onebox.options.connect_timeout
104
+ Net::HTTP.start(uri.host, uri.port, open_timeout: Onebox.options.connect_timeout, use_ssl: uri.is_a?(URI::HTTPS)) do |http|
123
105
  http.read_timeout = Onebox.options.timeout
124
106
  if uri.is_a?(URI::HTTPS)
125
107
  http.use_ssl = true
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Onebox
4
- VERSION = "2.2.15"
4
+ VERSION = "2.2.19"
5
5
  end
data/onebox.gemspec CHANGED
@@ -20,7 +20,7 @@ Gem::Specification.new do |spec|
20
20
  spec.files = `git ls-files`.split($/).reject { |s| s =~ /^(spec|web)/ }
21
21
  spec.require_paths = ['lib']
22
22
 
23
- spec.add_runtime_dependency 'addressable', '~> 2.7.0'
23
+ spec.add_runtime_dependency 'addressable', '~> 2.8.0'
24
24
  spec.add_runtime_dependency 'multi_json', '~> 1.11'
25
25
  spec.add_runtime_dependency 'mustache'
26
26
  spec.add_runtime_dependency 'nokogiri', '~> 1.7'
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: 2.2.15
4
+ version: 2.2.19
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: 2021-05-13 00:00:00.000000000 Z
13
+ date: 2021-07-15 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: addressable
@@ -18,14 +18,14 @@ dependencies:
18
18
  requirements:
19
19
  - - "~>"
20
20
  - !ruby/object:Gem::Version
21
- version: 2.7.0
21
+ version: 2.8.0
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
25
25
  requirements:
26
26
  - - "~>"
27
27
  - !ruby/object:Gem::Version
28
- version: 2.7.0
28
+ version: 2.8.0
29
29
  - !ruby/object:Gem::Dependency
30
30
  name: multi_json
31
31
  requirement: !ruby/object:Gem::Requirement