wovnrb 3.4.0 → 3.4.1

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: '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: