wovnrb 3.4.0 → 3.4.1

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: '06193b75ac22b47169f8d766af6fefbd2313ab08d064bb375f5f0966c7545f8a'
4
- data.tar.gz: 58dc13795166410b91a33a8de5c13ecbf44f2cc777c6b0696475ef1d938449b5
3
+ metadata.gz: 964d0d3b7325badb2202f50fe61b2a82554138346c183c0784b313c683aa26c8
4
+ data.tar.gz: b622aaf71523728ae235d8ba1d6de060c906970dbc471a0408de8e274a545482
5
5
  SHA512:
6
- metadata.gz: f696a3e0078b1c51eee646143b90cd9cbb20ddfa95406f652db770ba28b9c655e76d6e907736dd35919089bb27671af792f938ceb4da20de46ddddfa4d122f06
7
- data.tar.gz: 4ef3a31120a8052f5ac5a0b8fe8e289b269cd5ec85640eb677e1792f202d1dfdf396787be38876442be8f10ca33987cb8a472e1b9fb4b611ea36b3e759a9d544
6
+ metadata.gz: 3ba07bb7792de8c7e2f8e53128cc69b5e5a22b7cdbeb87ec7d87f7d026fac2a3907f838e9f88234c237b119aed8ee66aa7980d79f86db3391619422ce7254a17
7
+ data.tar.gz: c285d5d65556fa7953345f38c295250546dc041bea372b32ec559d7a44ef9783b8b9c36ced77b24b464dbcccf783ffd2994680e720bb147fe162080c258b20bd
data/.rubocop.yml CHANGED
@@ -1 +1,6 @@
1
+ require: rubocop-performance
2
+
1
3
  inherit_from: .rubocop_todo.yml
4
+
5
+ AllCops:
6
+ SuggestExtensions: false
@@ -18,11 +18,11 @@ module Wovnrb
18
18
  end
19
19
  unless @env.key?('REQUEST_URI')
20
20
  # Add '/' to PATH_INFO as a possible fix for pow server
21
- @env['REQUEST_URI'] = (@env['PATH_INFO'] =~ /^[^\/]/ ? '/' : '') + @env['PATH_INFO'] + (@env['QUERY_STRING'].empty? ? '' : "?#{@env['QUERY_STRING']}")
21
+ @env['REQUEST_URI'] = (/^[^\/]/.match?(@env['PATH_INFO']) ? '/' : '') + @env['PATH_INFO'] + (@env['QUERY_STRING'].empty? ? '' : "?#{@env['QUERY_STRING']}")
22
22
  end
23
23
  # REQUEST_URI is expected to not contain the server name
24
24
  # heroku contains http://...
25
- @env['REQUEST_URI'] = @env['REQUEST_URI'].sub(/^https?:\/\/[^\/]+/, '') if @env['REQUEST_URI'] =~ /^https?:\/\//
25
+ @env['REQUEST_URI'] = @env['REQUEST_URI'].sub(/^https?:\/\/[^\/]+/, '') if /^https?:\/\//.match?(@env['REQUEST_URI'])
26
26
  @unmasked_pathname = @env['REQUEST_URI'].split('?')[0]
27
27
  @unmasked_pathname += '/' unless @unmasked_pathname =~ /\/$/ || @unmasked_pathname =~ /\/[^\/.]+\.[^\/.]+$/
28
28
  @unmasked_url = "#{@protocol}://#{@unmasked_host}#{@unmasked_pathname}"
@@ -108,7 +108,7 @@ module Wovnrb
108
108
  case @settings['url_pattern']
109
109
  when 'query'
110
110
  lang_param_name = @settings['lang_param_name']
111
- location = if location =~ /\?/
111
+ location = if /\?/.match?(location)
112
112
  "#{location}&#{lang_param_name}=#{lang_code}"
113
113
  else
114
114
  "#{location}?#{lang_param_name}=#{lang_code}"
@@ -180,7 +180,7 @@ module Wovnrb
180
180
  if lang_code != @settings['default_lang'] && headers.key?('Location') && headers['Location'] =~ r && !@settings['ignore_globs'].ignore?(headers['Location'])
181
181
  case @settings['url_pattern']
182
182
  when 'query'
183
- headers['Location'] += if headers['Location'] =~ /\?/
183
+ headers['Location'] += if /\?/.match?(headers['Location'])
184
184
  '&'
185
185
  else
186
186
  '?'
@@ -2,7 +2,7 @@ module Wovnrb
2
2
  module Helpers
3
3
  module NokogumboHelper
4
4
  def parse_html(html_string, encoding = 'UTF-8')
5
- if html_string.strip[0..999] =~ /<html/i
5
+ if /<html/i.match?(html_string.strip[0..999])
6
6
  d = Nokogiri::HTML5(html_string)
7
7
  d.encoding = encoding
8
8
  d
data/lib/wovnrb/lang.rb CHANGED
@@ -126,7 +126,7 @@ module Wovnrb
126
126
  # @param [Wovnrb::Header] headers instance of Wovn::Header. It generates new env variable for original request.
127
127
  # @return [String] URL added langauge code.
128
128
  def add_lang_code(href, pattern, headers)
129
- return href if href =~ /^(#.*)?$/
129
+ return href if /^(#.*)?$/.match?(href)
130
130
 
131
131
  settings = Store.instance.settings
132
132
  code_to_add = settings['custom_lang_aliases'][@lang_code] || @lang_code
@@ -181,7 +181,7 @@ module Wovnrb
181
181
  when 'query'
182
182
  new_href = add_query_lang_code(href, code_to_add, lang_param_name)
183
183
  else # path
184
- if href =~ /^\//
184
+ if /^\//.match?(href)
185
185
  new_href = "/#{code_to_add}#{href}"
186
186
  else
187
187
  current_dir = headers.pathname.sub(/[^\/]*\.[^.]{2,6}$/, '')
@@ -250,7 +250,7 @@ module Wovnrb
250
250
  end
251
251
 
252
252
  def add_query_lang_code(href, lang_code, lang_param_name)
253
- query_separator = href =~ /\?/ ? '&' : '?'
253
+ query_separator = /\?/.match?(href) ? '&' : '?'
254
254
 
255
255
  href.sub(/(#|$)/, "#{query_separator}#{lang_param_name}=#{lang_code}\\1")
256
256
  end
@@ -21,6 +21,10 @@ module Wovnrb
21
21
  private
22
22
 
23
23
  def html
24
+ # Ensure a Content-Type declaration in the header. This mimics Nokogumbo
25
+ # 1.5.0 default serialization behavior.
26
+ @dom.meta_encoding = 'UTF-8' if @dom.respond_to?(:meta_encoding=)
27
+
24
28
  @dom.to_html(save_with: 0).strip
25
29
  end
26
30
 
@@ -1,3 +1,3 @@
1
1
  module Wovnrb
2
- VERSION = '3.4.0'.freeze
2
+ VERSION = '3.4.1'.freeze
3
3
  end
data/lib/wovnrb.rb CHANGED
@@ -5,7 +5,7 @@ require 'wovnrb/store'
5
5
  require 'wovnrb/lang'
6
6
  require 'wovnrb/services/html_converter'
7
7
  require 'wovnrb/services/html_replace_marker'
8
- require 'nokogumbo'
8
+ require 'nokogiri'
9
9
  require 'active_support'
10
10
  require 'json'
11
11
  require 'wovnrb/helpers/nokogumbo_helper'
@@ -49,7 +49,7 @@ module Wovnrb
49
49
  status, res_headers, body = @app.call(headers.request_out)
50
50
 
51
51
  # disabled by next Rack middleware
52
- return output(headers, status, res_headers, body) unless res_headers['Content-Type'] =~ /html/
52
+ return output(headers, status, res_headers, body) unless /html/.match?(res_headers['Content-Type'])
53
53
 
54
54
  request = Rack::Request.new(env)
55
55
 
@@ -58,7 +58,7 @@ module Wovnrb
58
58
  @store.settings.update_dynamic_settings!(request.params)
59
59
  return output(headers, status, res_headers, body) if ignore_path?(headers.pathname)
60
60
 
61
- body = switch_lang(headers, body) unless status.to_s =~ /^1|302/
61
+ body = switch_lang(headers, body) unless /^1|302/.match?(status.to_s)
62
62
 
63
63
  content_length = 0
64
64
  body.each { |b| content_length += b.respond_to?(:bytesize) ? b.bytesize : 0 }
@@ -45,7 +45,7 @@ module Wovnrb
45
45
  converter = prepare_html_converter(html, ignore_class: ['ignore-me'])
46
46
  converted_html, = converter.build_api_compatible_html
47
47
 
48
- expected_convert_html = "<html lang=\"en\"><head><script src=\"https://j.wovn.io/1\" async=\"true\" data-wovnio=\"key=123456&amp;backend=true&amp;currentLang=en&amp;defaultLang=en&amp;urlPattern=query&amp;langCodeAliases={}&amp;langParamName=wovn&amp;version=WOVN.rb_#{VERSION}\" data-wovnio-type=\"fallback_snippet\"></script><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><link rel=\"alternate\" hreflang=\"en\" href=\"http://my-site.com/\"><link rel=\"alternate\" hreflang=\"fr\" href=\"http://my-site.com/?wovn=fr\"><link rel=\"alternate\" hreflang=\"ja\" href=\"http://my-site.com/?wovn=ja\"><link rel=\"alternate\" hreflang=\"vi\" href=\"http://my-site.com/?wovn=vi\"></head><body><p>Hello <span wovn-ignore=\"\"><!-- __wovn-backend-ignored-key-0 --></span></p><p></p><p>Hello <span data-wovn-ignore=\"\"><!-- __wovn-backend-ignored-key-1 --></span></p><p></p><div><span class=\"ignore-me\"><!-- __wovn-backend-ignored-key-2 --></span></div><span>Have a nice day!</span></body></html>"
48
+ expected_convert_html = "<html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><script src=\"https://j.wovn.io/1\" async=\"true\" data-wovnio=\"key=123456&amp;backend=true&amp;currentLang=en&amp;defaultLang=en&amp;urlPattern=query&amp;langCodeAliases={}&amp;langParamName=wovn&amp;version=WOVN.rb_#{VERSION}\" data-wovnio-type=\"fallback_snippet\"></script><link rel=\"alternate\" hreflang=\"en\" href=\"http://my-site.com/\"><link rel=\"alternate\" hreflang=\"fr\" href=\"http://my-site.com/?wovn=fr\"><link rel=\"alternate\" hreflang=\"ja\" href=\"http://my-site.com/?wovn=ja\"><link rel=\"alternate\" hreflang=\"vi\" href=\"http://my-site.com/?wovn=vi\"></head><body><p>Hello <span wovn-ignore=\"\"><!-- __wovn-backend-ignored-key-0 --></span></p><p></p><p>Hello <span data-wovn-ignore=\"\"><!-- __wovn-backend-ignored-key-1 --></span></p><p></p><div><span class=\"ignore-me\"><!-- __wovn-backend-ignored-key-2 --></span></div><span>Have a nice day!</span></body></html>"
49
49
  assert_equal(expected_convert_html, converted_html)
50
50
  end
51
51
 
@@ -62,7 +62,7 @@ module Wovnrb
62
62
  converter = prepare_html_converter(html, ignore_class: [])
63
63
  converted_html, = converter.build_api_compatible_html
64
64
 
65
- expected_convert_html = "<html lang=\"en\"><head><script src=\"https://j.wovn.io/1\" async=\"true\" data-wovnio=\"key=123456&amp;backend=true&amp;currentLang=en&amp;defaultLang=en&amp;urlPattern=query&amp;langCodeAliases={}&amp;langParamName=wovn&amp;version=WOVN.rb_#{VERSION}\" data-wovnio-type=\"fallback_snippet\"></script><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><link rel=\"alternate\" hreflang=\"en\" href=\"http://my-site.com/\"><link rel=\"alternate\" hreflang=\"fr\" href=\"http://my-site.com/?wovn=fr\"><link rel=\"alternate\" hreflang=\"ja\" href=\"http://my-site.com/?wovn=ja\"><link rel=\"alternate\" hreflang=\"vi\" href=\"http://my-site.com/?wovn=vi\"></head><body><form action=\"/test\" method=\"POST\"><!-- __wovn-backend-ignored-key-0 --></form></body></html>"
65
+ expected_convert_html = "<html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><script src=\"https://j.wovn.io/1\" async=\"true\" data-wovnio=\"key=123456&amp;backend=true&amp;currentLang=en&amp;defaultLang=en&amp;urlPattern=query&amp;langCodeAliases={}&amp;langParamName=wovn&amp;version=WOVN.rb_#{VERSION}\" data-wovnio-type=\"fallback_snippet\"></script><link rel=\"alternate\" hreflang=\"en\" href=\"http://my-site.com/\"><link rel=\"alternate\" hreflang=\"fr\" href=\"http://my-site.com/?wovn=fr\"><link rel=\"alternate\" hreflang=\"ja\" href=\"http://my-site.com/?wovn=ja\"><link rel=\"alternate\" hreflang=\"vi\" href=\"http://my-site.com/?wovn=vi\"></head><body><form action=\"/test\" method=\"POST\"><!-- __wovn-backend-ignored-key-0 --></form></body></html>"
66
66
  assert_equal(expected_convert_html, converted_html)
67
67
  end
68
68
 
data/test/test_helper.rb CHANGED
@@ -14,7 +14,7 @@ SimpleCov.start do
14
14
  track_files 'lib/**/*.rb'
15
15
  end
16
16
 
17
- require 'nokogumbo'
17
+ require 'nokogiri'
18
18
  require 'rack'
19
19
  require 'minitest/autorun'
20
20
  require 'mocha/minitest'
data/wovnrb.gemspec CHANGED
@@ -12,6 +12,7 @@ Gem::Specification.new do |spec|
12
12
  spec.homepage = 'https://wovn.io'
13
13
  spec.license = 'MIT'
14
14
  spec.required_ruby_version = '>= 2.5'
15
+ spec.metadata['rubygems_mfa_required'] = 'true'
15
16
 
16
17
  files = `git ls-files -z`.split("\x0")
17
18
  files.delete('BEFORE_PUSHING')
@@ -23,8 +24,7 @@ Gem::Specification.new do |spec|
23
24
  spec.add_dependency 'activesupport'
24
25
  spec.add_dependency 'addressable'
25
26
  spec.add_dependency 'lz4-ruby'
26
- spec.add_dependency 'nokogiri', '>= 1.8.1', '<= 1.11'
27
- spec.add_dependency 'nokogumbo', '>= 1.4.0', '< 2.0.0'
27
+ spec.add_dependency 'nokogiri', '>= 1.12', '<2'
28
28
  spec.add_dependency 'rack'
29
29
 
30
30
  spec.add_development_dependency 'bundler', '>= 1.7'
@@ -45,6 +45,7 @@ Gem::Specification.new do |spec|
45
45
 
46
46
  spec.add_development_dependency 'rake-compiler'
47
47
  spec.add_development_dependency 'rubocop'
48
+ spec.add_development_dependency 'rubocop-performance'
48
49
  spec.add_development_dependency 'timecop'
49
50
 
50
51
  # NOTE; it need to use webmock 2.3.2 for avoiding error when we use ruby 2.4.x.
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wovnrb
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.4.0
4
+ version: 3.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Wovn Technologies, Inc.
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-11-04 00:00:00.000000000 Z
11
+ date: 2021-11-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -58,40 +58,20 @@ dependencies:
58
58
  requirements:
59
59
  - - ">="
60
60
  - !ruby/object:Gem::Version
61
- version: 1.8.1
62
- - - "<="
63
- - !ruby/object:Gem::Version
64
- version: '1.11'
65
- type: :runtime
66
- prerelease: false
67
- version_requirements: !ruby/object:Gem::Requirement
68
- requirements:
69
- - - ">="
70
- - !ruby/object:Gem::Version
71
- version: 1.8.1
72
- - - "<="
73
- - !ruby/object:Gem::Version
74
- version: '1.11'
75
- - !ruby/object:Gem::Dependency
76
- name: nokogumbo
77
- requirement: !ruby/object:Gem::Requirement
78
- requirements:
79
- - - ">="
80
- - !ruby/object:Gem::Version
81
- version: 1.4.0
61
+ version: '1.12'
82
62
  - - "<"
83
63
  - !ruby/object:Gem::Version
84
- version: 2.0.0
64
+ version: '2'
85
65
  type: :runtime
86
66
  prerelease: false
87
67
  version_requirements: !ruby/object:Gem::Requirement
88
68
  requirements:
89
69
  - - ">="
90
70
  - !ruby/object:Gem::Version
91
- version: 1.4.0
71
+ version: '1.12'
92
72
  - - "<"
93
73
  - !ruby/object:Gem::Version
94
- version: 2.0.0
74
+ version: '2'
95
75
  - !ruby/object:Gem::Dependency
96
76
  name: rack
97
77
  requirement: !ruby/object:Gem::Requirement
@@ -344,6 +324,20 @@ dependencies:
344
324
  - - ">="
345
325
  - !ruby/object:Gem::Version
346
326
  version: '0'
327
+ - !ruby/object:Gem::Dependency
328
+ name: rubocop-performance
329
+ requirement: !ruby/object:Gem::Requirement
330
+ requirements:
331
+ - - ">="
332
+ - !ruby/object:Gem::Version
333
+ version: '0'
334
+ type: :development
335
+ prerelease: false
336
+ version_requirements: !ruby/object:Gem::Requirement
337
+ requirements:
338
+ - - ">="
339
+ - !ruby/object:Gem::Version
340
+ version: '0'
347
341
  - !ruby/object:Gem::Dependency
348
342
  name: timecop
349
343
  requirement: !ruby/object:Gem::Requirement
@@ -551,8 +545,9 @@ files:
551
545
  homepage: https://wovn.io
552
546
  licenses:
553
547
  - MIT
554
- metadata: {}
555
- post_install_message:
548
+ metadata:
549
+ rubygems_mfa_required: 'true'
550
+ post_install_message:
556
551
  rdoc_options: []
557
552
  require_paths:
558
553
  - lib
@@ -567,8 +562,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
567
562
  - !ruby/object:Gem::Version
568
563
  version: '0'
569
564
  requirements: []
570
- rubygems_version: 3.0.3
571
- signing_key:
565
+ rubygems_version: 3.1.4
566
+ signing_key:
572
567
  specification_version: 4
573
568
  summary: Gem for WOVN.io
574
569
  test_files: